Python学习日记(三)
一、分支
- if ...elif...else 语句
-
if 条件1: 命令1 elif 条件2: 命令2 else: 命令3
elif 和 else 都必须和 if 联合使用,而不能单独使用。可以将 if,elif 和 else 以及各自缩进的代码,看成一个完整的代码块;
elif可以多次使用,判断多个条件。
- if 条件嵌套
if 条件1 if 条件2 命令1 else 命令2 else 命令3 #仅当同时满足条件1和条件2,才执行命令1
二、条件表达式(三元操作符)
- 语法:x if 条件 else y
- 可以改进分支结构,使程序更简洁。(多少元的元数取决于操作数的个数)
x,y=4,5 if x
三、断言 assert
- 当这个关键字后面条件为假时,程序自动崩溃并抛出异常(自爆)。
- 通常可以用它在程序中置入检查点,若确保程序中某个条件为真则程序正常运行,例:
>>> assert 3>4 Traceback (most recent call last): File "
", line 1, in assert 3>4 AssertionError >>> assert 4>3
四、循环
- while循环
while 条件: 循环体 例: a=1 while a<=10: a+=1
- for循环
- 可迭代的对象可以使用for循环进行遍历,例如:字符串、列表、字典、元组和集合
- for循环里面有一个隐藏的机制,就是自动执行index+1,直到遍历完整个序列
-
for 目标 in 表达式: 循环体 #逐个打印字符串 s="我要变富婆!" print(s) for i in s: print(i) 结果: >>>我要变富婆! >>>我 >>>要 >>>变 >>>富 >>>婆 >>>! #输出列表元素 list=['我要要要要','变成','富婆!'] for i in list: print(i,len(i)) 结果: >>>我要要要要 5 >>>变成 2 >>>富婆! 3 #对列表元素切片 list=['我要','变成','富婆'] for i in list[0]: print(i) 结果: >>>我 >>>要
- for循环遍历字典,默认是遍历字典的所有key值
- 如果想要取字典的value值,需要先取出所有的value值后,进行遍历取值,或者遍历key,打印的时候打印value值
- 也可以使用for循环取字典的键值对
dict={"name":"小花","age":18,"性别":"女"} #默认遍历字典中的key值 for i in dict: print(i) 输出结果: name age 性别 #直接遍历字典中的key值,打印出对应的value值 for j in dict: print(dict[j]) 输出结果: 小花 18 女 #直接遍历字典中的value值 for m in dict.values(): print(m) 输出结果: 小花 18 女 #取字典中的键值对 for h in dict.items(): print(h) for key,value in dict.items(): print('{} 的值为 {}'.format(key,value)) 输出结果: ('name', '小花') ('age', 18) ('性别', '女') name 的值为 小花 age 的值为 18 性别 的值为 女
- range()
- 语法:range([start],stop,[step=1])
- 生成一个从start参数的值开始到stop参数的值-1结束的数字序列,用[]括起来的参数为可选参数,例如range(1,5)表示生成1,2,3,4,step默认为1
-
传一个参数默认start=0 >>> range(5) range(0, 5) >>> for i in range(5): print(i) 0 1 2 3 4 默认step=1 >>> for i in range(2,9): print(i) 2 3 4 5 6 7 8 设置step=2 >>> for i in range(2,9,2): print(i) 2 4 6 8
-
break
-
break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
break语句用在while和for循环中。
如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。
answer='成为富婆' question=input("猜猜我的愿望是:") while True: if question==answer: break question=input("错咯,猜对才放过你:") print("对啦!放过你啦,可以走咯")
- continue
- Python continue 语句跳出本次循环,而break跳出整个循环。
- 若条件为真则执行后续语句并继续下一循环,为假则跳出本轮循环,跳到continue下方执行语句并继续下一轮循环。
- continue语句用在while和for循环中。
-
for i in range(10): if i % 2!=0: print(i) continue i+=2 print(i) 2 1 4 3 6 5 8 7 10 9
习题扩展:
-
请写一个程序打印出 0~100 所有的奇数。
方法一: for i in range(0,100): if i%2!=0: print(i) 方法二: i=0 while i<=100: if i%2!=0: print(i) i+=1
-
爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
题目:请编程求解该阶梯至少有多少阶?
方法一: step=0 while True: if step%2==1 and step%3==2 and step%5==4 and step%6==5 and step%7==0: print("该长阶至少有",step,"阶") break else: step+=1 方法二: x = 7 i = 1 flag = 0 while i <= 100: if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5): flag = 1 else: x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7 i += 1 if flag == 1: print('阶梯数是:', x) else: print('在程序限定的范围内找不到答案!')
-
请将以下代码修改为三元操作符实现:
x, y, z = 6, 5, 4 if x < y: small = x if z < small: small = z elif y < z: small = y else: small = z
答:small = x if (x < y and x < z) else (y if y < z else z)
总结:
- if的4种用法:if;if...else;if..elif...elif...elif...else;if嵌套;
- Python可以有效地避免“悬挂else”(缩进的使用)
- 条件表达式(三元操作符)
small = x if x < y else y
(求最小数) - 断言(assert):当需要确保程序中的某个条件一定为真才能让程序正常工作时,assert关键字就非常有用了,关键字后的条件为假的时候,程序自动崩溃并抛出AssertionError异常。