Python 05
1 条件运算符
1.1 基本结构
- 语句1 if 表达式 else 语句2
1.2 执行过程
- 先对if 与 else 之间的表达式进行求值判断,若值为 1 ,执行语句 1,否则执行语句 2,如:
print('python') if True else print('java')
- 判断:表达式 True 的值默认为 1,所以执行语句 1,所以执行结果为
python
1.3 简单案例
1.3.1 案例1
a = 10
b = 20
print('a的值比较大') if a > b else print('b的值比较大')
输出结果为
b的值比较大
1.3.2 案例2:求 a 和 b 之间的最大值
a = 30
b = 40
m = a if a > b else b
print('a 和 b 之间的最大值为', m)
输出结果为
a 和 b 之间的最大值为 40
2 运算符的优先级
注:本节需要用到“非布尔值的与或运算的相关知识”,如未掌握可以查看文章“Python 04”
案例:
a = 2 or 3 and 4
print('a =', a)
分析:
- 若 or 的优先级比 and 高, 先执行 or 或运算,2 or 3 = 2, 再执行 and 与运算,2 and 4 = 4,a = 4
- 若 or 的优先级与 and 相同,从左向右执行与或运算,2 or 3 = 2, 2 and 4 = 4 a = 4
- 若 or 的优先级比 and 低, 先执行 and 与运算,3 and 4 = 4, 再执行 or 或运算,2 or 4 = 2 a = 2
运行结果
a = 2
结论:
- 运算符and 的优先级比 or 高
3 if 语句
3.1 if 语句的语法
if 条件表达式:
语句/代码块
3.2 if 语句的执行流程
- 先判断 if 后的条件表达式,为 True 则执行,否则不执行
3.2.1 案例1:
num = 50
if num > 20:
print('num 比 20 大')
print('判断完毕')
结果:
num 比 20 大
判断完毕
3.2.2 案例2:
num = 50
if num < 20:
print('num 比 20 大')
print('判断完毕')
结果:
判断完毕
3.2.3 结论:默认情况下,if 语句只会执行紧跟其后的一个语句
3.3 代码块
- 代码块就是一种为代码的分组机制,以缩进开始(一般为 1 tab = 4 空格),恢复缩进结束,同一个代码块中的代码要么都执行,要么都不执行
注:如果希望 if 语句后执行多条语句,则可以在 if 后跟着一个代码块
3.3.1 案例1:
num = 10
if num > 20:
print('num 比 20 大')
print('ha ha') # 本行和上一行为代码块内容
print(123)
结果:
123
3.3.2 案例2:
num = 10
if num < 20:
print('num 比 20 大')
print('ha ha')
print(123)
结果:
num 比 20 大
ha ha
123
4 input() 函数
4.1 功能:接收一个输入数据,返回为 str 类型
4.2 案例:获取用户输入的名字,如果名字是 python, 输出 “欢迎访问”
username = input('请输入用户名:') # 获取用户输入的名字
if username == 'python': # 判断用户名字是否是 python
print('欢迎访问')
运行结果:
请输入用户名:python
欢迎访问
请输入用户名:java
4.3 错误案例
val = input('请输入你的工资:')
if value >= 2000:
print('能养活自己了!!')
4.3.1 报错内容:TypeError: ‘>=’ not supported between instances of ‘str’ and ‘int’
4.3.2 错误原因:input函数的返回值类型为 str 字符串类型,2000 为整数类型
4.3.3 修正方法:在 input() 函数之后增加一个类型转换
4.3.4 修正后代码:
val = input('请输入你的工资:')
value = int(val)
if value >= 2000:
print('能养活自己了!!')
5 if - else 语句
5.1 语法
if 条件表达式:
代码块
else:
代码块
5.2 案例:
value = input('请输入你的工资:')
value = int(value)
if value >= 2000:
print('能养活自己了!!')
else:
print('你该加油了!!')
运行结果:
请输入你的工资:5000
能养活自己了!!
请输入你的工资:1900
你该加油了!!
6 if - elif - else 语句
6.1 基础案例:
value = int(input('请输入你的工资:'))
if value >= 30000:
print('有钱任性')
elif value >= 20000:
print('有钱真好')
elif value >= 10000:
print('哥们也月薪上万了')
elif value >= 5000:
print('工资还说得过去')
elif value >= 2000:
print('能养活自己了')
else:
print('你该加油了')
运行结果:与输入值有关,类似于前面的案例
注意:if - elif - else 语句每次运行只执行一个代码块
6.2 由基础案例稍作修改产生的问题案例:
value = int(input('请输入你的工资:'))
if value >= 2000:
print('能养活自己了')
elif value >= 5000:
print('工资还说得过去')
elif value >= 10000:
print('哥们也月薪上万了')
elif value >= 20000:
print('有钱真好')
elif value >= 30000:
print('有钱任性')
6.2.1 案例中存在的问题:只要工资大于 2000,就会默认执行第一个代码块,不往下进行判断
6.2.2 解决问题的办法:问题修正 - 运用 and 运算符增加条件
6.2.3 代码演示:
value = int(input('请输入你的工资:'))
if value < 2000:
print('你该加油了')
elif value >= 2000 and value <5000:
print('能养活自己了')
elif value >= 5000 and value < 10000:
print('工资还说得过去')
elif value >= 10000 and value < 20000:
print('哥们也月薪上万了')
elif value >= 20000 and value < 30000:
print('有钱真好')
else:
print('有钱任性')
6.3 if - elif - else 语句练习
练习1:根据输入的月份输出该月份所属的季节
- 若输入 3 至 5月则输出春季
- 若输入 6 至 8月则输出夏季
- 若输入 9 至 11月则输出秋季
- 若输入 12 至 2 月则输出冬季
代码写法不一,这里给出一种作为参考
month = int(input('请输入月份'))
if month == 3 or month == 4 or month == 5:
print('春季')
elif month == 6 or month == 7 or month == 8:
print('夏季')
elif month == 9 or month == 10 or month == 11:
print('秋季')
elif month == 12 or month == 1 or month == 2:
print('冬季')
else:
print('月份不存在')
输出结果可以满足题目的要求
练习2:我家的狗 5 岁了,5岁的狗相当于人多大的年龄呢?
- 注:人与狗年龄的关系:狗的前两年每一年相当于人的 10.5 岁,之后的每一年相当于人的 4 岁
- 通过数学计算可得:5 岁的狗相当于人类的年龄是 10.5 + 10.5 + 4 + 4 + 4 = 33
- 要求:编写一个程序获取狗的年龄,通过程序判断人的年龄并输出,如果输入的年龄是负数,提示错误信息
参考代码:
dog_age = float(input('请输入狗的年龄'))
person_age = 0 # 给人的年龄赋初始值
if dog_age > 0:
if dog_age <= 2:
person_age = dog_age * 10.5
else:
person_age = 2 * 10.5
person_age += (dog_age - 2) * 4
print(dog_age, '岁的狗相当于', person_age, '岁的人') # 只有输入的年龄合法才能输出
else:
print('输入的年龄不合法')
7 while 语句
7.1 引入 - 需要得到如下的输出结果
1
1
1
1
一般做法:
print(1)
print(1)
print(1)
print(1)
- 该做法存在的不足:只能进行少数量的输入
用 while 循环操作:
i = 0
while i < 4:
print(1)
i += 1
7.2 while 循环
7.2.1 问题案例
while True:
print('haha')
运行结果:
haha
haha
haha
.
.
.
haha
.
.
案例中存在的问题:只要不按“停止”键让程序停止运行,程序就会一直输出结果“haha”
7.2.2 语法
while 表达式:
代码块
else:
代码块
7.2.3 循环三要素
案例:
i = 0
while i < 20:
print(i, 'haha')
i += 1
else:
print('我是 else 语句中的代码')
- 1.初始化表达式(案例中的 i = 0)
- 2.条件表达式:用来设置循环执行的条件(案例中 i < 20)
- 3.更新条件表达式:修改初始化变量的值,防止循环无止地执行(案例中 i += 1)
7.3 while 语句练习
题目:求 100 以内所有偶数之和 - 结果为2550
参考代码:
i = 0
r = 0 # 保存输出结果,也可理解为输出结果的初值
while i < 100:
i += 2
r += i
print('100 以内所有偶数的和为', r)
输出结果:
100 以内所有偶数的和为 2550