本节主要整理了if 条件语法、两种循环和4个常用的语句。
环境说明:Python 3.6、windows11 64位
基本语法:
if ……:
pass
elif ……:
pass
else:
pass
当条件判断只涉及一分为二的判断时,可以只使用 if…else…,不用elif ,只有当一个整体被划分为2种以上的类别,elif 才派上用场。elif 是elseif 的缩写,有一些语言涉及条件句时,会直接使用elseif 都是一样的意思。
可以看一个经典的分数判断案例:
# 案例1:判断一个分数是及格还是不及格,及格线60分
# 代码1
score = 61
if score >= 60:
print('恭喜你及格了!')
else:
print('这次没及格,再接再厉哦!')
# 案例2:判断一个分数是优秀(>=90),还是良好(>=60,且<90),还是较差(<60)
# 代码2
score = 61
if score >= 90:
print('优秀')
elif score >= 60:
print('良好')
else:
print('较差')
else 其实还可以用 elif 进行代替,比如
# 上个代码块的代码1 改写
score = 61
if score >= 60:
print('恭喜你及格了!')
elif score < 60:
print('这次没及格,再接再厉哦!')
同一个 if…elif…else… 语句之间是有递进关系的,也就是说,先判断前面的条件,符合了就返回,不符合再判断写一个,所以在案例2的代码2中判断良好的时候,不需要再加一个条件 score < 90
。除了上面展示的方法,还可以通过if 条件嵌套来实现,见下例子:
# 代码3
score = 61
if score >= 60:
if score >= 90:
print('优秀')
else:
print('良好')
else:
print('较差')
有时候可能还会出现一种并列的判断(如下),多个if条件并列,只要符合条件便会打印对应的结果,以下代码会打印出前两个if 条件的结果。
使用并列的if 添加判断同一个值的类别时,只要判断条件都是互斥的,如代码4中第二个if 语句改为if 90 > score >= 60:
即可实现代码2的效果,不过不推荐,容易出岔子。
# 代码4
score = 91
if score >= 90:
print('优秀')
if score >= 60:
print('良好')
if score < 60:
print('较差')
break 可以理解为打断,跳出循环。一般比较多是放到if 条件句中,当满足某个条件的时候终止循环,返回结果。
基本语法:
# for 循环+break
for...in...:
...
if ...:
break
# while 循环+break
while...(条件):
...
if ...:
break
如果break 不放在if 条件句中,直接放在循环的一级子句,循环便只会执行一遍,一般没有什么意义,不如直接去掉循环,直接执行循环体的代码,如下
# break 放在for 循环一级子句中,执行一遍便终止循环
for i in range(6):
print(i)
break
# 直接执行循环体
i = 0
print(i)
continue 可以理解为结束本次循环,开启下次循环。一般也和if 条件句一起使用,当满足某个条件的时候,不执行循环体后续代码,回到循环的开始,开启下一次循环。
基本语法:
# for 循环+break
for...in...:
...
if ...:
continue
# while 循环+break
while...(条件):
...
if ...:
continue
示例:打印0-8,除了3之外的8个数
for i in range(9):
if i == 3: # 等于6时,不打印,直接进入下一次循环
continue
print(i)
为了保持代码结构的完整性,pass不做任何操作,只是充当了一个占位语句。当没想好结构中具体的代码时,可以先用pass占位,保证程序正常运行不报错。
放在条件句中,else 条件会在出现 if 和elif 判断条件之外的其他的所有情况的时候执行。
放到循环中,else 条件会在循环中没有执行break语句时执行,否则就不会执行,如果执行了break,则不执行else 。
示例:
# 不执行else 代码
for i in range(0,9): # 取0~8
if i == 3: # 等于3时跳出循环
break
print(i)
else:
print('没有执行break')
# 执行else 代码
for i in range(0,9,2): # 取偶数
if i == 3:
break
print(i)
else:
print('没有执行break')
基本语法:
for i in xxx: # xxx可以是str、list、tuple、dict、set、迭代器等
<循环执行代码>
常用语法:
for i in range(x): # x 是一个整数
<循环执行代码>
语法介绍:
作用:用于遍历可迭代的对象,查看使用对象内容,或重复执行循环次数确定的工作,使用次数完成某些任务。
for i in 'Xin':
print(i)
#显示结果依次为:X i n
for i in [1,3,5,7]:
print(i)
#显示结果依次为:1 3 5 7
for i in (1,3,5,7):
print(i)
#显示结果依次为:1 3 5 7
for i in {1,5,3,7}: # 集合会先排序再输出
print(i)
#显示结果依次为:1 3 5 7
d = {'小A':95,'小B':93,'小C':92}
for i in d:
print(i)
#显示结果依次为:小A 小B 小C
d = {'小A':95,'小B':93,'小C':92}
for i in d:
print(d[i])
#显示结果为:95 93 92
for i in range(1,8): # 取1~7
print(i)
#显示结果依次为:1 2 3 4 5 6 7
for i in range(1,8,2): # 在1~7,每两位取1个元素
print(i)
#显示结果依次为:1 3 5 7
以上代码提到的range()
是一个常用的迭代器,迭代器和序列的不同之处就是,序列全部元素会给你展示出来,打印序列时可以看到所有的值,而迭代器不会给你展示所有元素,你需要时才给你返回相关的元素,每次返回一个。在取单个值和遍历的场景下,从表面上是看不出什么区别的。想要查看迭代器的所有元素,可以根据内部数据结构转化一下,像range(1,8,2)
可以通过list(range(1,8,2))
转化为列表查看所有元素,当然用tuple(range(1,8,2))
转化为元组也可以。
range()参数的意义:
再聊聊关于使用for 循环次数的应用,比如说我要打印3遍“Hello World!”,其实有无数多中方式,以下代码介绍4种,希望能打开你的思维。
# 法1:将0、1、2赋值i 循环3次
for i in range(3):
print('Hello World!')
# 法2:将2、3、4赋值i 循环3次
for i in range(2,5):
print('Hello World!')
# 法3:将3、5、7赋值i 循环3次
for i in range(3,9,2):
print('Hello World!')
# 法4:将'X'、'i'、'x'赋值i 循环3次
for i in 'Xin':
print('Hello World!')
# in后面替换成任意具有3个元素且合法的元组、列表、集合、字典都可以(合法即没有错误)
PS:如果是初学者,可能会对 for i in range(1,8):\n\t print(i)
的意义会感到疑惑,本身执行这个其实没有多大的意义,要有对应的场景应用才有意义。该语句的应用有两个方面的价值,一个是只用它的循环次数,一个是变量 i 有意义,需要用来辅助处理数据。给个简单的场景,如我要计算从前一天的21点到次日的13点,过了多少个小时(算整点的即可),可以通过循环次数来查看:(这是一个简单的示例,但不是一个好的示例,因为直接13+24-21=16就可以得出结果)
count = 0 # 从0开始
for i in range(21,24+13):
count = count + 1 # 每循环一次加上1,计算循环的次数
print(count) # 结果为16
基本语法:
while <条件>:
<循环执行代码>
作用:
注意:当while的条件中含有变量时,变量需要先定义。
while循环解决循环次数确定的问题时,通常在循环条件中涉及到变量。变量和条件都是可根据实际情况进行自定义的,如以下代码1和代码2,循环次数和打印结果是一样的,但是变量初始赋值和循环的条件有微小差异,同时在加1重新赋值的位置也有所改变,一开始接触的时候,可以将每一次循环过程写出来,方便理解。
当解决循环次数不确定的问题是,通常会使用关键字True,然后加上一个if 判断当达成某个条件之后进行break(即跳出循环)。
# 处理循环次数确定的问题:
# 代码1
a = 0
while a < 5:
a = a + 1
print(a)
# 代码2
a = 1
while a < 6:
print(a)
a = a + 1
#代码1和代码2的结果均为:
#1
#2
#3
#4
#5
# 代码3
a = 0
while a < 5:
a = a + 1
print(a)
# 显示结果为:(因为print()在循环外,只输出最后一次赋值给a的值)
# 处理循环次数不确定的问题,常用while True+if+break
while True:
if xxx:
break
for循环和whlie循环最大的区别在于【循环的“工作量”是否确定】,当循环次数确定的情况下,两种循环都可以;当循环次数不确定的时候,则不适用for 循环,只能用while 循环。
示例:打印从1到100的整数分别乘以5的计算结果,提示第一个打印的值是5,最后一个是500。
# for循环
for i in range(1,101):
print(i*5)
# while循环
## 方法1:设定初始变量的值为0
i = 0
while i<100 :
i = i+1
print (i*5)
## 方法2:设定初始变量的值为1
i = 1
while i<101 :
print (i*5)
i = i+1
## 方法3:当做工作量不确定,但是有一个条件打印出500后终止循环来出来
i = 1
while True:
print(i*5)
if i*5 == 500:
break
i = i + 1
如上,其实实现方法也有多种,这就是代码的灵活之处,同一个目的地,或有一百种实现方式,多思考,多实践。
<下节预告:函数基本用法>
- End -