文章目录
条件语句
什么是条件语句
条件语句能够表达 "如果 ... 否则 ..." 这样的语义. 这构成了计算机中基础的逻辑判定
条件语句 也叫做分支语句,表示了接下来的逻辑可能有几种走向
如果,我认真敲代码,我就很容易找到工作;
- 这是一个条件,如果条件成立,就会容易找到工作
否则,我就容易毕业就失业 - 条件不成立,就容易毕业就失业
条件语句,就是根据一个具体条件的成立与否,来决定接下来的逻辑走向
语法格式
Python
中使用 if
else
关键字表示条件语句
(1)if
python
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
Python
if expression:
do_something1
else:
do_something2
- 如果
expression
值为True
, 则执行do_something1
- 如果
expression
值为False
, 则执行do_something2
(3)if - elif - else
python
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 表示躺平摆烂 `
python
choice = input('输入 1 表示认真学习,输入 2 表示躺平')
if choice == '1':
print(('你能找到工作'))
elif choice == '2':
print('你废了')
else:
print('输入错误')
- 注意
if
、elif
和else
后面都有:
缩进和代码块
在 Python
中使用缩进表示代码块. 不同级别的缩进, 程序的执行效果是不同的
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
语法格式符合要求.
python
a = int(input("请输入一个整数:"))
if a != 1:
pass
else:
print("hello")
- 虽然希望条件满足的时候,什么都不做,但是由于
Python
对于语法格式,尤其是缩进和代码块要求较高,所以如果什么都不写,是不符合语法要求的,所以必须得写一个pass
空语句来占位
练习
1. 输入一个整数,判断是否是奇数
python
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. 输入一个整数,判断是正数还是负数
python
a = int(input('输入一个整数'))
if a > 0:
print(f'{a} 是正数')
elif a < 0:
print(f'{a} 是负数')
else:
print(f'{a} 是 0')
3. 判断年份是否是闰年
每隔 4 年润一次;如果是世纪闰年,得看能否被 400 整除
python
year = int(input('输入一个年份'))
if year % 100 == 0:
# 世纪闰年的判定
if year % 400 == 0:
print('闰年')
else:
print('平年')
else:
# 普通闰年的判定
if year % 4 == 0:
print('闰年')
else:
print('平年')
循环语句
while 循环
基本语法格式:
python
while 条件:
循环体
- 条件为真,则执行循环体代码
- 条件为假,则结束循环
for 循环
基本语法格式:
python
for 循环变量 in 可迭代对象:
循环体
注意:
python
的for
和其他语言不同, 没有 "初始化语句", "循环条件判定语句", "循环变量更新语句", 而是更加简单- 所谓的 "可迭代对象", 指的是 "内部包含多个元素, 能一个一个把元素取出来的特殊变量"
练习
1. 打印 1-10 的整数
while
循环:
python
num = 1
while num <= 10:
print(num)
num += 1
包含:
- 循环变量的初始值
- 循环变量的判定条件
- 循环变量的更新语句
for
循环:
python
for i in range(1, 11):
print(i)
range
是一个内建函数 ,起到的效果就是得到一个"可迭代对象",这个可迭代对象中就包含了一系列的整数range(beg, end)
==>[beg, end)
,前闭后开区间
range
还提供了一个参数"步长",默认的步长是 1
例如:打印 2,4,6,8,10
python
for i in range(2, 12, 2)
print(i)
2. 计算 1-100 的和
while
循环:
python
sum = 0
num = 0
while num <= 100:
sum = num + sum
num +=1
print(sum)
3. 计算 5 的阶乘
while
循环:
python
result = 1
n = 1
while n <= 5:
result *= n
n += 1
print(result)
4. 求 1! + 2! + 3! + 4! + 5!
while
循环:
python
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 个包子的时候吃出了一只虫.
python
for i in range(1, 6):
if i == 3:
continue
print(f'吃完第{i}个包子')
# 运行结果
吃完第1个包子
吃完第2个包子
吃完第4个包子
吃完第5个包子
代码示例: 模拟吃包子. 吃第 3 个包子的时候吃出了半只虫.(没胃口了)
python
for i in range(1, 6):
if i == 3:
break
print(f'吃完第{i}个包子')
# 运行结果
吃完第1个包子
吃完第2个包子
求若干个数的平均值
python
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
,不然你最后想结束循环,输入;
的时候会报错 - 不能将
;
直接输入到一个数字后面,不然也会报错