PYTHON1.day02
比较运算符:
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
语法:
左表达式 < 右表达式
说明:
比较运算符返回布尔类型的值
示例:
10 < 20 # True
1 + 10 > 2 + 8 # True
10 < 20 <= 30 # True
用字符串或数字转换为浮点数,如果不能出参数则返回0
int(x,base=10) 或 int(x=0)
用数字或字符串转换为整数,如果不给出参数,则返回0
complex(r=0.0, i=0.0)
用数字创建一个复数(实部为r, 虚部为i)
bool(x)
用x创建一个布尔值(True/False)
函数调用:
函数名(传参列表)
说明:
函数调用是表达式,一定会返回一个对象的引用关系
bool(x) 返回假值的情况
None 空值
False 布尔假值
0, 0.0, 0j
----以下内容后面会讲----
'' 空字符串
() 空元组
[] 空列表
{} 空字典
set() 空集合
...
练习:
将数字3.14 用变量pi绑定
将pi变量转为整数 用变量i绑定
将pi变量与i变量相减,结果用变量f绑定
1. 判断f是否等于0.14? 为什么?
2. 删除所有的变量
(用交互模式来做)
内建的数值型函数:
abs(x) 取x的绝对值
round(number[, ndigits])
对数值进行四舍五入, ndigits是小数向右取整的位数,负数表示向左取整
pow(x, y, z=None) 相当于 x ** y 或 x ** y % z
help() 函数可查看函数帮助文档
>>> help(函数名)
语句 statement
1.语句是由一些表达式等组成,通常一条语句可以独立执行来完成一部分事情并形成结果
2.一条语句建议写在一行内
3.多条语句写在一行内需要用分号(;) 分开
示例:
print('hello')
x = 100 + 200
print(x)
# 写在一起为:
print('hello'); x = 100 + 200; print(x)
换行:
1.显示换行:
折行号 \
2.隐藏式换行:
所有的括号内换行,称为隐式换行
括号: (), [], {}
示例:
i = 1 + 2 + 3 \
+ 4 + 5
print(i) # 15 用'\'显式换行
i = (1 + 2 + 3
+ 4 + 5) # 括号要成对出现,会隐式换行直到找到对应的括号为止
1 # 01_input.py 2 3 # 此示例示意input函数的用法 4 5 s = input("请输入字符串: ") 6 print("您输入的字符串是:", s) 7 8 # print(s + 1) # 报错,字符串不能直接和数字相加 9 i = int(s) # 将字符串转换为数字 10 print(i + 1) # 数字可以和数字相加 11
基本输出函数 print
作用:
将一系列的值以字符串形式输出到标准输出设备上,默认为终端
格式
print(value, ..., sep=' ', end='\n')
选项的关键字参数为:
sep 两个值之间的分隔符,默认为一个空格
end 输出完毕后在流末尾自动追加一个字符,默认为换行符'\n'
示例见:
code/02_print.py
1 # 02_print.py 2 3 4 # 此示例示意标准输出函数print的用法 5 print(1, 2, 3, 4) # 1 2 3 4 6 print('===以下是给定sep="#"的打印方式') 7 print(1, 2, 3, 4, sep="#") # 1#2#3#4 8 print('以下关键字参数end="\n\n\n\n\n"来换五行新行') 9 print(1, 2, 3, 4, end="\n\n\n\n\n") # 换5行 10 print(6789, end="") # 不换行 11 print("我是程序的最后一句") 12
练习:
1. 今天是小明20周岁的生日,假设每年365天,计算他过了多少个星期,余多少天
2. 分三次输入当前的小时,分钟,秒数,在终端打印已距离凌晨 0:0:0过了多少秒?
1 # 01_age.py 2 3 # 练习: 4 # 1. 今天是小明20周岁的生日,假设每年365天, 5 # 计算他过了多少个星期,余多少天 6 7 age = 20 8 days = 20 * 365 9 weeks = days // 7 # 多少个星期 10 day = days % 7 # 余多少天 11 print("小时过了:", weeks, 12 "个星期,余", day, "天") 13
1 # 02_second.py 2 3 # 2. 分三次输入当前的小时,分钟,秒数, 4 # 在终端打印已距离凌晨 0:0:0过了多少秒? 5 6 s = input("请输入小时: ") 7 hour = int(s) # 将字符串转为整数 8 s = input("请输入分钟: ") 9 minute = int(s) 10 s = input("请输入秒: ") 11 second = int(s) 12 13 seconds = hour * 3600 + minute * 60 + second 14 print("距离0:0:0已过了", seconds, "秒") 15
if 语句
作用:
让程序根据条件选择性的执行某条语句或某些语句
说明:
if 语句又叫条件语句,也叫分支语句
语法:
if 真值表达式1:
语句块1
elif 真值表达式2:
语句块2
elif 真值表达式3:
语句块3
...
else:
语句块4
语法说明:
elif子句可以有0个,1个或多个
else子句可以有0个或1个且只能放在此if语句的最后
要求:
if语句内部的语句通常要以4个空格的缩进来表示包含关系,相同的缩进格式代表相同的所属级别
示例见:
code/03_if.py
1 # 03_if.py 2 3 4 # 此示例示意用if语句来判断奇数或偶数 5 # 输入一个数,让计算机判断是奇数还是偶数 6 7 s = input("请输入一个数: ") 8 n = int(s) # 转换为整数 9 10 if n % 2 == 0: # 如果n对2求余等于0则一定是偶数 11 print("您输入的是偶数") 12 else: # 否则 13 print("您输入的是奇数") 14
练习:
任意输入一个数:
1. 判断这个数是否大于100
2. 判断这个数是否小于0
3. 判断这个数是否在20 ~ 50之间
1 # 03_if_exercise.py 2 3 # 练习: 4 # 任意输入一个数: 5 # 1. 判断这个数是否大于100 6 # 2. 判断这个数是否小于0 7 # 3. 判断这个数是否在20 ~ 50之间 8 9 n = int(input("请输入一个数: ")) 10 11 # 1. 判断这个数是否大于100 12 if n > 100: 13 print(n, "大于100") 14 else: 15 print(n, "不大于100") 16 17 # 2. 判断这个数是否小于0 18 if n < 0: 19 print(n, "小于0") 20 else: 21 print(n, "不小于0") 22 23 # 3. 判断这个数是否在20 ~ 50之间 24 if 20 < n < 50: 25 print(n, "在20~50之间") 26 else: 27 print(n, "不在20~50之间") 28
if-elif-else 示例见:
code/04_if_elif_else.py
1 # 04_if_elif_else.py 2 3 # 输入一个数字,判断这个数是0,还是正数,还是负数 4 5 n = int(input("请输入一个数: ")) 6 7 if n == 0: 8 print("您输入的是0") 9 elif n > 0: 10 print("您输入的是正数") 11 else: 12 print("您输入的是负数")
练习:
1. 输入个季度 1~4 输出这个季度有哪儿几个月,如果输入不是1~4的数,提示用户您的输入有误!
2. 输入一年中的月份(1~12), 输出这个月在哪儿个季度,如果输入的是其它数,提示您的输入有误!
1 # 1. 输入个季度 1~4 输出这个季度有哪儿几个月, 2 # 如果输入不是1~4的数,提示用户您的输入有误! 3 4 season = int(input("请输入一个季度(1~4): ")) 5 6 if season == 1: 7 print("春季有1,2,3月") 8 elif season == 2: 9 print("夏季有4,5,6月") 10 elif season == 3: 11 print("秋季有7,8,9月") 12 elif season == 4: 13 print("冬季有10,11,12月") 14 else: 15 print("您的输入有误!") 16
1 # 05_month.py 2 3 4 # 2. 输入一年中的月份(1~12), 输出这个月在哪儿个 5 # 季度,如果输入的是其它数,提示您的输入有误! 6 7 month = int(input("请输入月份: ")) 8 if 1 <= month <= 3: 9 print("春季") 10 elif 4 <= month <= 6: 11 print("夏季") 12 elif 7 <= month <= 9: 13 print("秋季") 14 elif 10 <= month <= 12: 15 print("冬季") 16 else: 17 print("您的输入有误!") 18
if 语句的真值表达式
if 100:
print("真值")
# 等同于
if bool(100):
print("真值")
bool(x) 返回假的情况:
x为:
0, 0.0, 0+0j, False, None,
''(空字符串)
[] 空列表
{} 空字典
set() 空集合
() 空元组
....
if语句嵌套
if语句本身是由多条子句组成的一条复合语句
if语句可以作为语句嵌套到另一个语句的内部
示例见:
code/05_if_embed.py
1 # 05_if_embed.py 2 3 # 根据输入的月份来判断是哪儿个季度 4 month = int(input("请输入月份(1~12): ")) 5 6 if 1 <= month <= 12: 7 print("是合法的月份") 8 if month <= 3: 9 print("春季") 10 elif month <= 6: 11 print("夏季") 12 elif month <= 9: 13 print("秋季") 14 else: 15 print("冬季") 16 else: 17 print("您的输入有误!") 18 19
练习:
输入一个学生的成绩(0~100),
判断这个学生的成绩是优(90~100),良(80~89),及格(60~79),不及格,成绩不合法5种状态
(建议使用if语句嵌套)
1 # 06_score.py 2 3 # 练习: 4 # 输入一个学生的成绩(0~100), 5 # 判断这个学生的成绩是优(90~100),良(80~89),及格(60~79),不及格,成绩不合法5种状态 6 # (建议使用if语句嵌套) 7 8 score = int(input("请输入一个学生的成绩: ")) 9 if 0 <= score <= 100: 10 if score < 60: 11 print("不及格") 12 elif 60 <= score < 80: 13 print("及格") 14 elif score < 90: 15 print("良好") 16 else: 17 print("优秀") 18 else: 19 print("成绩不合法")
条件表达式
语法:
表达式1 if 真值表达式 else 表达式2
作用:
如果真值表达式的布尔环境值为True,则执行表达式1并返回结果的引用,否则执行表达式2并返回结果的引用
示例见:
code/if_express.py
1 # 06_if_express.py 2 3 4 # 此示例示意条件表达式的用法 5 # 商场促销,过100 返 20 6 money = int(input("请输入商品总额: ")) 7 8 pay = money - 20 if money > 100 else money 9 10 print("您需要支付", pay, "元") 11 12
练习:
写程序,输入一个数
1) 用if语句计算出这个数的绝对值并打印出来
2) 用条件表达式计算出这个数的绝对值并打印出来
1 # 练习: 2 # 写程序,输入一个数 3 # 1) 用if语句计算出这个数的绝对值并打印出来 4 # 2) 用条件表达式计算出这个数的绝对值并打印出来 5 6 n = int(input("请输入一个数: ")) 7 8 # 1) 用if语句计算出这个数的绝对值并打印出来 9 # 方法1 10 # if n < 0: 11 # absolute = -n 12 # else: 13 # absolute = n 14 # 方法2 15 absolute = n 16 if absolute < 0: 17 absolute = -absolute 18 print("if语句计算的绝对值是:", absolute) 19 20 # 2) 用条件表达式计算出这个数的绝对值并打印出来 21 absolute = -n if n < 0 else n 22 print("条件表达式计算的绝对值是:", absolute) 23
pass 语句
作用:
通常用来填充语法空白
pass 语句又名空语句
语法:
pass
示例见:
code/07_pass.py
1 # 07_pass.py 2 3 4 # 此程序示意pass语句的用法 5 6 # 判断一个学生是否不合法。如果不合法给出警告信息, 7 # 如果合法什么都不做 8 9 score = int(input("请输入成绩: ")) 10 if 0 <= score <= 100: 11 pass # 此语句就是为了填充语法空白 12 else: 13 print("您的输入有误!!!") 14 15 print("程序结束") 16
布尔运算:
运算符:
not and or
布尔非操作 not
语法:
not x
作用:
对 x进行布尔取值,如 bool(x) 为True,则返回False, 否则返回True
示例:
not True # False
not False # True
not 100 # False
布尔与操作 and
语法:
x and y
注: x, y代表表达式
作用:
优先返回假值对象
当bool(x)的值为False时,返回x,否则返回y
示例:
True and True # True
True and False # False
False and True # False
False and False # False
>>> 100 and 200
200
>>> 0.0 and 200
0.0
>>> 0 and 0.0
0
布尔或操作
语法:
x or y
作用:
优先返回真值对象,
当x为True时返回x, 否则返回y
1 # 08_or.py 2 3 4 # 此示例示意 or 的用法 5 6 # 如果直接输入回车键则score为'0' 7 score = input("请输入成绩: ") or '0' 8 score = int(score) 9 10 if score < 0 or score > 100: # 判断成绩不合法 11 print("您的成绩不合法!!!") 12 else: 13 print("您输入的成绩是:", score) 14
示例:
True or True # True
True or False # True
False or True # True
False or False # False
100 or 200 # 100
100 or 0.0 # 100
0 or 200 # 200
0 or 0.0 # 0.0
思考以下代码是做什么用的:
score = input("请输入成绩: ") or '0'
score = int(score)
if score < 0 or score > 100:
print("您的成绩不合法!!!")
else:
print("您输入的成绩是:", score)
正负号运算符:
+(正号) -(负号)
语法:
+ 表达式
- 表达式
示例:
a = 5
b = -a
c = +a
练习:
1. 北京出租车计费
收费标准:
3公里以内收费13元
超过3公里后基本单价为 2.3元/公里
空驶费: 超过15公里后,每公里加收基本单价的50%作为返程的空驶费(3.45元/公里)
要求:
输入公里数,打印出费用的金额(以元为单位进行四舍五入)
1 # 1. 北京出租车计费 2 # 收费标准: 3 # 3公里以内收费13元 4 # 超过3公里后基本单价为 2.3元/公里 5 # 空驶费: 超过15公里后,每公里加收基本单价 6 # 的50%作为返程的空驶费(3.45元/公里) 7 # 要求: 8 # 输入公里数,打印出费用的金额(以元为单位进行四舍五入) 9 10 km = int(input("请输入公里数: ")) 11 # 方法1 12 # if 0 <= km <= 3: 13 # print("收费13元") 14 # elif 3 < km <= 15: 15 # fee = 13 + 2.3 * (km - 3) 16 # print('收费', round(fee), '元') 17 # elif km > 15: 18 # fee = 13 + 2.3 * (km - 3) + \ 19 # 1.15 * (km - 15) 20 # print('收费', round(fee), '元') 21 22 # 方法2 23 fee = 13 24 if km > 3: 25 fee += 2.3 * (km - 3) 26 if km > 15: # 超过15km加收的部分 27 fee += 1.15 * (km - 15) 28 print('收费', round(fee), '元')
2. 输一个学生的三科成绩:
1. 打印出最高分是多少分
2. 打印出最低分是多少分
3. 打印出平均分是多少分
1 # 2. 输一个学生的三科成绩: 2 # 1. 打印出最高分是多少分 3 # 2. 打印出最低分是多少分 4 # 3. 打印出平均分是多少分 5 6 s1 = int(input("请输入第1科成绩: ")) 7 s2 = int(input("请输入第2科成绩: ")) 8 s3 = int(input("请输入第3科成绩: ")) 9 10 # 方法1 11 # if s1 > s2: # s1大 12 # if s1 > s3: 13 # print("最高成绩是:", s1) 14 # else: 15 # print("最高成绩是:", s3) 16 # else: # s2大 17 # if s2 > s3: 18 # print("最高成绩是:", s2) 19 # else: 20 # print("最高成绩是:", s3) 21 22 # 方法2 23 if s2 <= s1 >= s3: 24 print("最高成绩是:", s1) 25 elif s1 <= s2 >= s3: 26 print("最高成绩是:", s2) 27 else: 28 print("最高成绩是:", s3) 29 30 # 经典方法 31 m = s1 32 if s2 > m: 33 m = s2 34 if s3 > m: 35 m = s3 36 print("最高成绩是:", m)
3. 给出一个年份,判断是否为闰年并打印结果
闰年规则: 每四年一闰,每百年不闰,四百年又是一个闰年
例:
2016年 闰年
2100年 不是闰年
2400年 是闰年
1 # 3. 给出一个年份,判断是否为闰年并打印结果 2 # 闰年规则: 每四年一闰,每百年不闰,四百年又是一个闰年 3 # 例: 4 # 2016年 闰年 5 # 2100年 不是闰年 6 # 2400年 是闰年 7 8 y = int(input('请输入年份: ')) 9 if y % 400 == 0: 10 print(y, "是闰年") 11 elif y % 100 == 0: 12 print(y, "不是闰年") 13 elif y % 4 == 0: 14 print(y, '是闰年') 15 else: 16 print(y, "不是闰年")
4 BMI 指数(Body Mass Index) 以称身体质量指数
BMI值计算公式:
BMI = 体重(公斤)/ 身高(米)的平方
例如:
一个69公斤的人,身高是 173公分
BMI = 69 / 1.73 ** 2 = 23.05
标准表:
BMI < 18.5 体重过轻
18.5 <= BMI <= 24 正常范围
BMI > 24 体重过重(超标)
输入身高和体重,打印BMI值,并打印体重状况