条件循环语句
1 条件语句
1.1 if语句
if 条件判断:条件成立执行操作
在第1行中,可包含任何条件测试,而在紧跟在测试后面的缩进代码块中,可执行任何操作。 如果条件测试的结果为True,Python就会执行紧跟在if语句后面的代码;否则Python将忽略这些代码。
1.2 if-else语句
需要在条件测试通过了时执行一个操作,并在没有通过时执行另一个操作;在这种情况下,可使用Python提供的if-else语句。
if 条件一:操作一
else:操作二
1.3 if-elif-else语句
需要检查超过两个的情形,则需要if-elif-else结构。Python只执行 if-elif-else结构中的一个代码块,它依次检查每个条件测试,直到遇到通过了的条件测试。测 试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试,elif可使用多个块进行多情景判断。
if 条件一:操作一
elif 条件二:操作二...
elif 条件n操作n
else:操作n+1
1.4 assert关键词
assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。
assert 条件
#条件为False执行操作:AssertionError
与if not条件语句等价:
if not 条件:操作(AssertionError)
断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况。
2 循环语句
2.1 while循环
for循环用于针对集合中的每个元素都一个代码块,而while循环不断地运行,直到指定的条件不满足为止。
条件表达式是循环执行的条件,每次循环执行前,都要执行条件表达式,对条件进行判断,当条件为真时则执行循环体,否则退出循环,如果条件表达式在循环开始时就为假,则不执行循环语句,直接退出循环。
while 条件判断:操作
2.2 while-else循环
当while循环正常执行完的情况下,执行else输出,而是当while条件不成立时,直接跳出while循环,执行else输出如。如果while循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容。
while 条件表达式:操作一
else:操作二
2.3 for循环
for 循环,它常用于遍历字符串、列表、元组、字典、集合等序列类型,逐个获取序列中的各个元素。
其代码格式:
for 迭代变量 in 字符串|列表|元组|字典|集合:代码块
2.4 for-else循环
当for循环正常执行完的情况下,执行else输出,如果for循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容,与while - else语句一样。
其代码格式:
for 迭代变量 in 可迭代对象:代码块
else:代码块
3 range()函数
range(start, stop[, step])
start: 计数从 start 开始。默认是从 0 开始。而range(num)与range(0,num)等价。
stop: 计数到 stop 结束,但不包括 stop。
step:步长,默认为1。
4 enumerate()函数
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,多与for循环搭配使用。
用法:
enumerate(sequence, [start=0])
sequence – 一个序列、迭代器或其他支持迭代对象。
start – 下标起始位置。
示例:
list1 = ["我", "是", "一个", "人"]
for i, lst in enumerate(list1, 1):print(i,lst)
''' 结果: 1 我 2 是 3 一个 4 人 '''
list2 = ["我", "是", "一个", "人"]
for i, lst in enumerate(list2, 2):print(i,lst)
''' 结果: 2 我 3 是 4 一个 5 人 '''
5 break语句与continue语句
break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。
编写示例:
for i in "abcdef":if i=="c":continueprint(i)
''' 结果: a b d e f '''
for i in "abcdef":if i=="c":breakprint(i)
''' 结果: a b '''
6 pass语句
pass是一种空语句,只起到占位的作用,保证代码结构的完整性,避免因代码缺失导致解释器提示出错,保证其他代码正常运行。
7 推导式
7.1 列表推导式
[ expr for value in collection [if condition] ]
expr:列表生成元素表达式,可以是有返回值的函数。
7.2 元组推导式
( expr for value in collection [if condition] )
7.3 字典推导式
{ key_expr: value_expr for value in collection [if condition] }
7.4 集合推导式
{ expr for value in collection [if condition] }
以上推导式都有异曲同工之处,基本是代表符号不同。
8 练习题
8.1 编写一个Python程序来查找那些既可以被7整除又可以被5整除的数字,介于1500和2700之间。
print("既可以被7整除又可以被5整除的数字,介于1500和2700之间的数字有:")
for i in range(1500,2701):num = int(i)if num%5==0 & num%7==0:print(num)
结果:
既可以被7整除又可以被5整除的数字,介于1500和2700之间的数字有:
1505
1540
1575
1610
1645
1680
1715
1750
1785
1820
1855
1890
1925
1960
1995
2030
2065
2100
2135
2170
2205
2240
2275
2310
2345
2380
2415
2450
2485
2520
2555
2590
2625
2660
2695
8.2 龟兔赛跑游戏
#test2 龟兔赛跑
list_1=[]
v1,v2,t,s,l=input("请依次输入v1,v2,t,s,l(空格隔开)其中(v1,v2< =100;t< =300;s< =10;l< =10000且为v1,v2的公倍数)").split()
list=[v1,v2,t,s,l]
for i in list: #将输入的字符串转为正整数并读入新列表data=int(i)list_1.append(data)
v_1,v_2,add,ts,lu=list_1 #依次取出数据
tt=lu/v_2 #乌龟跑完全程所用时间
t_2=0
t_1=0
lu_1=0
flag=1
while flag:t_1 = t_1+1t_2 = t_2 + 1lu_1 = t_2 * v_1if lu_1 >= lu:flag=0elif (lu_1-t_2*v_2)>=add:t_1=t_1+ts
if t_1 > tt: #根据时间判断输赢print("T")print(tt)
elif t_1 < tt:print("R")print(t_1)
else:print("D")print(t_1)
结果:
请依次输入v1,v2,t,s,l(空格隔开)其中(v1,v2< =100;t< =300;s< =10;l< =10000且为v1,v2的公倍数)10 5 5 2 20
D
4
9 总结
今天的学习很充实,练习题对于我这种小白有一定难度,哈哈哈,需要自己查找近两天没有学习过的关于列表的使用方法,比如append()函数,总之,今天在练习题所学知识的较多,需要自己再好好消化下。