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异常。