条件语句
什么是条件语句
条件语句能够表达 “如果 … 否则 …” 这样的语义. 这构成了计算机中基础的逻辑判定
条件语句也叫做分支语句,表示了接下来的逻辑可能有几种走向
如果,我认真敲代码,我就很容易找到工作;
- 这是一个条件,如果条件成立,就会容易找到工作
否则,我就容易毕业就失业 - 条件不成立,就容易毕业就失业
条件语句,就是根据一个具体条件的成立与否,来决定接下来的逻辑走向
语法格式
Python
中使用 if
else
关键字表示条件语句
(1)if
if expression: do_something1 do_something2 next_something
- 如果
expression
值为True
, 则执行do_something1
,do_something2
,next_something
- 如果
expression
值为False
, 则只执行next_something
, 不执行do_something1
,do_something2
(2)if-else
if expression: do_something1 else: do_something2
- 如果
expression
值为True
, 则执行do_something1
- 如果
expression
值为False
, 则执行do_something2
(3)if - elif - else
if expression1: do_something1 elif expression2: do_something2 else: do_something3
- 如果
expression1
值为True
, 则执行do_something1
- 如果
expression1
值为False
, 并且expression2
为True
则执行do_something2
- 如果
expression1
值为False
, 并且expression2
为False
则执行do_something3
注意: Python
中的条件语句写法, 和很多编程语言不太一样
if
后面的条件表达式, 没有 ( ), 使用 : 作为结尾if / else
命中条件后要执行的 “语句块”, 使用缩进 (通常是 4 个空格或者 1 个 tab)来表示, 而不是 { }- 对于多条件分支, 不是写作
else if
, 而是elif
(合体了)
示例: 输入 1 表示愿意认真学习, 输入 2 表示躺平摆烂 `
choice = input('输入 1 表示认真学习,输入 2 表示躺平') if choice == '1': print(('你能找到工作')) elif choice == '2': print('你废了') else: print('输入错误')
- 注意
if
、elif
和else
后面都有:
缩进和代码块
在 Python
中使用缩进表示代码块. 不同级别的缩进, 程序的执行效果是不同的
a = input('输入第一个整数:') b = input('输入第一个整数:') if a == '1': if b == '2': print('aaa') print('bbb') print('ccc') #运行结果 输入第一个整数:1 输入第一个整数:2 aaa bbb ccc
- 两个条件都满足才会打印
aaa
,因为打印aaa
的语句有两级缩进,相当于是if b == '2'
条件内部的代码块 - 第一个条件满足,就会打印
bbb
,因为打印bbb
的语句只有一级缩进,相当于是if a== '1'
条件内部的代码块 - 两个条件即使都不满足,也能打印
ccc
,因为打印ccc
的语句,没有缩进,相当于和两个if
都无关
当前有多级嵌套的时候,当前的雨具属于哪个代码块,完全取决于缩进的级别
空语句
pass
表示空语句, 并不会对程序的执行有任何影响, 只是占个位置, 保持 Python
语法格式符合要求.
a = int(input("请输入一个整数:")) if a != 1: pass else: print("hello")
- 虽然希望条件满足的时候,什么都不做,但是由于
Python
对于语法格式,尤其是缩进和代码块要求较高,所以如果什么都不写,是不符合语法要求的,所以必须得写一个pass
空语句来占位
练习
1. 输入一个整数,判断是否是奇数
a = int(input('输入一个整数')) if a % 2 == 1: print(f'{a} 是一个奇数') else: print(f'{a} 不是一个奇数')
- 这串代码在
C++/Java
是不太行的,因为在那边-19 % 2 == -1
,和1
是不相等的。但在Python
中,-19 % 2 == 1
2. 输入一个整数,判断是正数还是负数
a = int(input('输入一个整数')) if a > 0: print(f'{a} 是正数') elif a < 0: print(f'{a} 是负数') else: print(f'{a} 是 0')
3. 判断年份是否是闰年
每隔 4 年润一次;如果是世纪闰年,得看能否被 400 整除
year = int(input('输入一个年份')) if year % 100 == 0: # 世纪闰年的判定 if year % 400 == 0: print('闰年') else: print('平年') else: # 普通闰年的判定 if year % 4 == 0: print('闰年') else: print('平年')
循环语句
while 循环
基本语法格式:
while 条件: 循环体
- 条件为真,则执行循环体代码
- 条件为假,则结束循环
for 循环
基本语法格式:
for 循环变量 in 可迭代对象: 循环体
注意:
python
的for
和其他语言不同, 没有 “初始化语句”, “循环条件判定语句”, “循环变量更新语句”, 而是更加简单- 所谓的 “可迭代对象”, 指的是 “内部包含多个元素, 能一个一个把元素取出来的特殊变量”
练习
1. 打印 1-10 的整数
while
循环:
num = 1 while num <= 10: print(num) num += 1
包含:
- 循环变量的初始值
- 循环变量的判定条件
- 循环变量的更新语句
for
循环:
for i in range(1, 11): print(i)
range
是一个内建函数,起到的效果就是得到一个“可迭代对象”,这个可迭代对象中就包含了一系列的整数range(beg, end)
==>[beg, end)
,前闭后开区间
range
还提供了一个参数“步长”,默认的步长是 1
例如:打印 2,4,6,8,10
for i in range(2, 12, 2) print(i)
2. 计算 1-100 的和
while
循环:
sum = 0 num = 0 while num <= 100: sum = num + sum num +=1 print(sum)
3. 计算 5 的阶乘
while
循环:
result = 1 n = 1 while n <= 5: result *= n n += 1 print(result)
4. 求 1! + 2! + 3! + 4! + 5!
while
循环:
num = 1 sum = 0 while num <= 5: # 先计算出 num! 是多少,往 sum 上进行累加 factorResult = 1 i = 1 while i <= num: factorResult *= i i += 1 sum += factorResult print(sum)
continue 和 break
continue
:立即结束当前这次循环,进入下一次循环
break
:立即结束整个循环
代码示例: 模拟吃包子. 吃第 3 个包子的时候吃出了一只虫.
for i in range(1, 6): if i == 3: continue print(f'吃完第{i}个包子') # 运行结果 吃完第1个包子 吃完第2个包子 吃完第4个包子 吃完第5个包子
代码示例: 模拟吃包子. 吃第 3 个包子的时候吃出了半只虫.(没胃口了)
for i in range(1, 6): if i == 3: break print(f'吃完第{i}个包子') # 运行结果 吃完第1个包子 吃完第2个包子
求若干个数的平均值
theSum = 0 count = 0 while True: num = input('请输入一个数字:(分号表示输入结束)') if num == ';': break num = float(num) theSum += num count +=1 print(f'平均值为{theSum/count}') # 运行结果 请输入一个数字:(分号表示输入结束)11 请输入一个数字:(分号表示输入结束)22 请输入一个数字:(分号表示输入结束)33 请输入一个数字:(分号表示输入结束); 平均值为22.0
- 光看到
while True
不一定是死循环,关键是要看循环里有没有break
theSum
表示加和的结果;count
表示有几个数字- 不能在输入
num
的时候就将num
的类型转换为float
,不然你最后想结束循环,输入;
的时候会报错 - 不能将
;
直接输入到一个数字后面,不然也会报错