Day01回顾
python的解释执行器
$ python3 (CPython)
python 的交互模式
表达式
数字类型
整数
十进制-100
八进制 0o177
十六进制: 0x 1a2b
二进制: 0b 1100
浮点数
3.1 3.0
复数
1+1j
布尔型数
True,False
None 空值
复合赋值算术运算符
运算符 说明
y+=x 作用等同于y=y+x
y-=x 作用等同于y=y-x
y*=x 作用等同于y=y*x
比较运算符
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
语法:
左表达式 > 右表达式
说明:
比较运算符通常返回布尔类型的值
示例:
100 < 200 #True
100 >= 200 # False
1+5==2+5 # False
0<=100<=200 # True `**python独有的表达式**`比较两个结果都为True才为True
数值对象的构建(创建)函数
float(obj)用字符串或数字转换为浮点数,如果不给出参数,则返回0.0
或int(x=0,base=10(默认))
用数字或字符串转换为整数,如果不给出参数则返回0
base为二进制转换的底数
eg:
>>> int("123")
123
>>> int("123",4)
27
complex(r=0.0, i=0.0)用数字创建一个复数(实部为r,虚部为i)
bool(x) 用x创建一个布尔值(True,False)
布尔值返回假的情况:
None 空值
False 布尔假值
0 0.0 0j 所有数字为0
-------以下后面会讲-------
''空字符串
[]空列表
()空元
组
{}空字典
set()空集合
...# 一切空的容器对象bool(x)取值都为False
练习:
将数字3.14 用变量pi绑定
将pi变量转为整数用变量i绑定
将pi变量,与i变量相减,结果用变量f绑定
1. 判断f是否等于0.15 why?
不等于,计算机在存储小数时会出现精度丢失的问题,()
浮点数只能近似等,不能精确等
2. 删除所有的变量
函数调用
函数名(传参列表)
说明:
函数调用表达式,一定会返回一个对象的引用关系
预置数值型函数
函数 |
描述 |
abs(x) |
取x的绝对值 |
round(num1,nums) |
表示对num1保留多少位小数 (默认为0,负数表示从小数点向左进行四舍五入) |
pow(x,y,z=None) |
相当于xy 或xy % z |
help() |
查看函数帮助>>>help(函数名) |
转义字符:
概念:
在字符串中,有时需要输入一些特殊的符号,但是,某些符号不能直接输出,就需要使用转义字符.
转义:
就是不采用符号本来的含义,而采用另一种含义.
Python中常用转义字符:
转义字符 |
描述 |
\ |
(在行尾时)续行符 |
\ |
反斜杠符号 |
\' |
单引号 |
\" |
双引号 |
\a |
响铃 |
\b |
退格(Backspace) |
\e |
转义 |
\000 |
空 |
\n |
换行 |
\v |
纵向制表符 |
\t |
横向制表符 |
\r |
回车 |
\f |
换页 |
原始字符串:
用转义符能够让字符串中的某些符号表示原来的含义,而不是被解析成某种具有特定能力的符号
eg:
dos = "c:\news"
dos
'c:\news'# 这里貌似没有任何问题
print(dos) # 当用print来打印这个字符串的时候就出问题了
c:
news
如何避免:
我们可以在定义的时候,显示指定不需要进行转义
dos = r"c:\news"
dos
c:\\news
print(dos)
c:\news
状入 r"c:\news" ,由r开头引起的字符串就是声明了后面引号里的东西是原始字符串,在里面放任何字符都表示该字符的原始含义
input和print
input
解释: 基本输入函数()
input("提示字符串")
返回用户输入的字符串('提示字符串可以为空')
是阻塞函数()必须等待用户输入,程序才会向下走
类似java的Scanner函数,
可以获取用户输入的数值,并赋值,如果里面有参数,则为写入之前的提示符
eg:
name = input("what's your name:")
age = input("How old are you:")
print("姓名:",name,"年龄:",age)
示例输入:
what's your name:胡贵全
How old are you:23
姓名: 胡贵全 年龄: 23
注:
输入的不论是数字,字符串..都会当做字符串
print:
解释:基本输出函数
作用:
将一系列的值字符串形式输出到标准设备上,默认为终端
格式:
print(value...,sep=' ',end='\n')
sep:(separator)
表示将每个元素用指定分割符来隔开
eg:
>>> print(1,2,3,4,sep="-")
>>>1-2-3-4
end:
表示输出完毕后在流末尾自动追加一个字符串,默认为换行符'\n'
eg:
>>> print(1,2,3,4,end="$")
1 2 3 4$>>>
特别提醒:
print的返回值默认是以"\n"结尾的,所以,每个输出语句之后自动换行,
可以加一个参数,不换行:print("hello",**end=""**)
练习:
1. 今天是小明的20岁生日
假设每年有365天,结算他过了多少个星期天,余多少天
```
>>> days = 20 * 365
>>> divmod(days,7) # divmod divide取除数,mod 取余数
(1042, 6)
```
2. 分三次输入当前的小时,分钟,秒数
在终端打印出距离0:0:0过了多少秒
hour = int(input("请输入小时:"))
minute = int(input("请输入分钟:"))
seconds = int(input("请输入seconds:"))
索引和切片
序列:
在Python中,把像字符串这样的对象类型统称为序列,顾明思义,序列就是"有序排列"
索引:python中的索引是从0开始的
eg:
long = "hello"
long[0]
h
反向:通过字符,找到该字符在字符串的索引位置
eg:
long = "hello"
long.index("o")
范围切片:
eg:
long = "hello"
long[0:2]#**包左不包右,左闭右开**
"he"
切片:
概念:
不管是得到一个字符还是多个字符,通过索引得到字符的过程都称之为切片
eg:
long = "study python"
b = long[1:] # 得到从1到最末尾的字符,这时最后结尾不用写
'tudy python'
c = long[:5] # 得到从第一个到10号之前的字符
'study'
# 在"切"字符的时候,如果冒号后面1数字,所得到的切片不包含该数字所对应的字符(前包括,后不包括)
long[1:12]不包括12号
long[:]与long所表示的还是同一个对象
基本操作
函数 |
描述 |
len() |
返回序列长度 |
+ |
连接2个序列(列表和元组都可以如此实现拼接) |
* |
重复序元素 |
in |
判断元素是否在于序列中返回值为(返回值为True,False) |
max() |
返回最大值 |
min() |
返回最小值 |
cmp(str1,str2) |
比较两个序列值是否相同(python3 中没有cmp这个函数了可以使用(a>b)-(a
|
cmp(str1,str2)比较函数
将两个字符串进行比较,首先将字符串中的符号转化为对应的数字(参照ASCII理解),然后再比较,如果返回的数值小于0,说明第一个小于第二个,等于说明这两个数值相等,大于0,则第一个数值大于第二个数值.
ord函数
概念:
ord()是一个内建函数,能够返回某个字符(是一个字符所对应的ASCII值(十进制的)
eg:
ord('a')
97
ord('b')
98
chr()函数:
概念: chr(i, /)Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff
可以根据整数值,得到相应的字符,
chr(97)
'a'
strip()函数
概念:
strip()函数,常用来去除所输入信息中的空格
s.strip():去掉字符串左右空格
s.lstrip():去掉字符串的左边空格
s.rstrip():去掉字符串的右边空格
注意:
原来的值没有变化,生成的是一个新值
capitalize() 函数
概念:
把字符串的第一个字母变成大写
istitle()函数
概念:
只有当每个单词的首字母为大写,其他为小写的时候返回True
eg:
("hello,hl") #False
("Hello,Hel") #True
title()函数
这样就把所有的单词的第一个字母转化为大写
join()连接函数
概念:
用"+" 能够连接字符串,但不是什么情况下都能够如愿,比如,将列表(列表是另外一种类型)中的每个字符串元素拼接成一个字符串,并且用某个符号连接,但如果用"+"会计较麻烦
eg:
>>> b = "www.baidu.com"
>>> c = b.split(".")
>>> c
['www', 'baidu', 'com']
>>> ".".join(c)
'www.baidu.com'
Day02-PM
字符串格式化输出
概念:
格式化字符串,是C,C++等程序设计语言,printf类函数中用于指定输出参数的格式与相对位置的字符串参数.
就是要先制定一个模板,在这个模板中某个或者某几个地方流出空位来,然后在那些空位上填充字符串,空位需要符号来表示,这个符号通常就称为占位符()
转换说明:
用于把随后对应的0个或多个函数参数转换为相应的格式输出;格式化字符串以外的其他字符原样输出
eg:
"I like %s" % "python"
'I like python'
详解:
在这个字符串中,有一个符号"%s",这是一个占位符,可以被其他的字符串代替,
常见占位符:
占位符 |
说明 |
%s |
字符串(采用str()的显示) |
%r |
字符串(采用repr()的显示) |
%c |
单个字符 |
%d |
十进制整数 |
%f |
浮点数(限定小数输出位数eg: %.2f) |
第二种方式:
format()函数
eg:
>>> s1="I like {}".format("python")
>>> s1
'I like python'
原字符串中使用{}来表示
eg:
>>> s1 = "name:{0},age:{1}".format("hgq",1)
>>> s1
'name:hgq,age:1'
eg:
>>> s1 = "name:{name},age:{age}".format(name="hgq",age=1)
>>> s1
'name:hgq,age:1'
注:
推荐使用string.format()
列表:list:[]
比较:
python中的list与Java中的数组的区别:
java中:数组的元素必须是基本数据类型中的某一个,要么是int类型,要么都是char类型,不能有一个int类型,一个char类型
python中:尽管元素都是被[]包裹的,但是list中的元素是任意类型的,可以是int,str,list,dict,
金句:
列表是Python中的苦力,什么都可以干.
列表的索引和切片:
概念:
在列表中也有类似的操作,只不过是以元素为单位,而不是以字符为单位进行索引
eg:
a=[1,2,3,4,5]
a.index(3) # 2
a[2] # 3
a[-1] # 5 负数表示是从右边第一个向左边寻找
注意:
序列的切片
语句:statement
语句是由一些表达式组成,通常一条语句可以独立执行来完成一部分事情,并形成结果.
一条语句建议写在一行内,
多行语句写在一行内需要用(;)分开
示例:
x = 100
y = 200
z = 300
print(x+y)
# 写在一行为
x = 100;y = 200 ;print(x + y)
显示换行
拆行符 \
拆行符必须放在一行的末尾,来示意解释执行器的下一行也是本行的语句
示例:
>>> str ="sadfj"+\
... "asdjf"
>>> str
'sadfjasdjf'
>>>
隐式换行
所有括号的内容换行,称为隐式换行(),{},[],"",'''
if语句
问题:
有两条语句
print("是偶数")
print("是奇数")
如何只让其中一条语句执行并打印结果
作用:
让程序根据条件选择性的执行某条语句或某些语句
语法:
if 真值表达式:
语句块1
elif 真值表达式2:
语句块2
elif 真值表达式3:
语句块3
...
else:
语句块4
说明:
elif 子句可以有0个,1个或多个
else子句可以有0个或1个,且只能放在if语句的最后.
eg:
#输入一个数判断这个是奇数还是偶数
x = int(input("请输入一个整数:"))
if(x&1!=0):
print(x,'是奇数')
else:
print(x,"是偶数")
练习:
1. 任意输入一个整数
1) 判断这个数是否大于100
2) 判断这个数是否小于0
3) 判断这个数是否在80~100之间
解答:
#输入一数判断
x = int(input("请输入一个整数:"))
# 如果&1判断结果
if(x>100):
print(x,'>100')
elif(80<=x<=100):
print(x,"在80~100之间")
elif(x<0):
print(x,"< 0")
2. 输入一个季度 1~4 输出这个季度有哪几个月,如果用户输入的不是1~4的整数,则提示用户您输错了?
解答:
#输入一个季度(1~4)
season = input("请输入一个季度:")
# 首先判断用户输入的是否是整数
if(season.isdigit()):
# 1,123,2,456 ,3,789,4,10,11,12
if(1==int(season)):
print(1,2,3,"月")
elif(2==int(season)):
print(4,5,6,"月")
elif(3==int(season)):
print(7,8,9)
elif(4==int(season)):
print(10,11,12)
else:
print("您的输入有误")
else:
print("您的输入有误")
3. 输入一年中的月份(1~12)输出这个月在哪个季度,如果输入的是其他数,则提示您输错了?
解答:
# 输出这个季度有哪几个月, 如果用户输入的不是1~4
# 的整数, 则提示用户您输错了?
season = int(input("请输入月份:"))
if(1<=season<=3):
print("春季")
elif(4<=season<=6):
print("夏季")
elif(7<=season<=9):
print("秋季")
elif(10<=season<=12):
print("冬季")
else:
print("您的输入有误:")
if语句的真值表达式
if 100:
print("真值")
等同于:
if bool(100):
print("真值")
if语句的嵌套:
if 语句本身是由多条子句组成的一条复合语句
if 语句可以作为语句嵌套到另外一个语句的内部
条件表达式:
语法:
表达式1 if 真值表达式2 else 表达式2
作用:
根据真值表达式的取值(True/False)
来决定执行表达式1或者表达式2 并返回结果
eg:
# 商场促销,满100 -20
money = int(input("请输入商品金额:"))
pay = money -20 if money >=100 else money
print('需要支付:',pay,"元",sep="")
请输入商品金额:100
需要支付:80元
练习:
1. 写一个程序,输入一个数,用if语句计算出这个数的绝对值并打印出来?
if (x < 0):
print(-x)
else:
print(x)
2. 写一个程序,输入一个数,用条件表达式计算这个数的绝对值,并打印出来?
x= x if x >= 0 else -x
print(x)
pass 语句
作用:
通常用来填充语法空白
语法:
pass
示例:
a =100
if(a<100):
print("error")
else:
# nothing todo
pass
布尔运算:
运算符:
not and or
布尔非操作 not
语法:
not x
作用:
对x进行布尔取非,如bool(x)
为True,则返回False,否则返回True
示例:
not True # 返回False
not False # 返回True
布尔与操作 and
语法:
x and y
注:
x,y 代表表达式
作用:
优先返回假值对象
当x的布尔值为False的是返回x,否则返回Y
eg:
True and True # True
True and False # False
False and True # False
False adn False # False
左边为假返回x,否则返回y
>>> 0.0 and 2
0.0
>>> 1 and 2
2
>>>
布尔或操作 or
语法:
x or y
注:
x,y 代表表达式
作用:
优先返回真值对象
当x的布尔值为True的是返回x,否则返回Y
eg:
True and True # True
True and False # True
False and True # True
False adn False # False
>>> 1 or 2
1
>>> 0 or 2
2
>>> 0.0 or 0
0
score = int(input("请输入学生成绩:"))
if(score<0 or score>100)
print("成绩不合法")
小结:
运算符:
< <= > >= == !=
not and or
+ -
函数:
id
abs
round
pow
float
int
complex
bool
input
print
语句:
if 语句
pass 语句
表达式:
if _else 条件表达式
思考:
score = input("请输入学生成绩:") or '0'
score = int(score)
当用于直接敲回车的话,会出现异常
练习:
1. 北京出租车计价器
收费标准:
3公里以内收费13元
基本单价:2.3元/公里(超出3公里以外)
空驶费:超过15公里后加收单价的50%
空驶费(3.45元/公里)
要求:
输入公里数,打印出费用金额(以元为单位,进行四舍五入)
2. 输入一个学生的三科成绩(只要三个数,不要求科目)
1) 打印出最高分是多少?
2) 打印出最低分是多少?
3) 打印出平均分是多少?
3. 给出一个年份,判断是否是闰年并打印(每四年一闰,每百年不一闰,四百年又闰)
如:
2016年: 闰年
2200年: 闰年
2400年: 闰年
4. BMI指数(Body Mass Index)又称身体质量指数
BMI 值计算公式:
BMI = 体重 (公斤) / 身高的平方(米)
例如:
一个69公斤的人,身高是173公分
BMI = 69 / 1.73 ** 2 = 23.05
标准表:
BMI < 18.5 体重过轻)
18.5 < BMI < 25 体重正常
BMI > 24 体重过重
输入身高和体重,打印BMI的值,并打印体重状况
答案:
```
1.
km = input("请输入行驶路程:")
# 判断输入的km是否是数字,并并且有效
if(km.isdigit() and int(km)>=0):
km= int(km)
if(0<=km<=3):
print(13,"元")
elif(km<=15):
print(13+2.3*(km -3),"元")
else:
print(13+2.3*12+(km-15)*3.45,"元")
else:
print("您的输入有误")
2.
chinese = int(input("请输入语文成绩:"))
english = int(input("请输入英语成绩:"))
math = int(input("请输入数学成绩:"))
print("三科最高分是:", max(max(chinese, english), math))
print("三科最低分是:", min(min(chinese, english), math))
print("三科平均分是:", ((chinese + english + math) / 3))
3.
year = int(input("请输入一个年份:"))
if(year %4==0 and year % 100 !=0 or year %400 == 0):
print("是闰年!")
else:
print("不是闰年!")
4.
height = float(input("请输入你的身高: "))/100
weight = float(input("请输入你的体重: "))
BMI= weight/(height**2)
print("您的身体指标是:",BMI,end=" ")
if(BMI<18.5):
print("体重过轻!")
elif(BMI<25):
print("体重标准!")
else:
print("超重!")
```