开发者学堂课程【Python 入门 2020年版: For…else 语句的使用】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10275
For…else 语句的使用
for…else语句的使用
1.写一个程序可以不断的输入数字,如果输入的数字是 0,打印程序结束后结束该程序。
运行效果:
请输入数字: 9
请输入数字: 762
请输入数字: 18
请输入数字: 0
程序结束i =1
while True:
if i == 0:
break
i = int(input(‘请输入数字:’))
print(‘程序结束’)
#写一个程序可以不断的输入内容,如果输入的内容是 exit,打印程序结束后结束该程序。
while True:
content = input(‘请输入内容:’)
if content == ‘exit’:
Break
运行结果:
请输入内容:hi
请输入内容:helo
请输入内容:hello
请输入内容:good morning
请输入内容:Happy Valentine’s Day
请输入内容:exit
Process finished with exit code 0
只要有 exit 就会推出。
挑战题(选做)
2. 统计 101-200 中素数的个数,并且输出所有的素数。(素数又叫质数, 就是只能被 1 和它本身整除的数)
101 到 200:
for i in range(101,201):
print(i)
运行结果:C:Users\ chris\ AppData\Local\Programs\Python\Python37\python.exe C:/Users/chris/Desktop/PythoDa05-字符
101
102
(一直到)
200
Process finished with exit code 0
#素数也叫质数,除了1和它本身以外,不能再被其他的任何数整除
怎么看是质数:比如 103,就拿比它小的数取余,1 没有比较的意义,从 2 开始除到 102,i 现为具体的数,i=103 时,
for i in range(101,201): #i=103 2~102
for j in range(2,i):
# range( 2,103 )不能取到 103
if i % j ==0:
#i除以某一个数,除尽了,i 是合数
把 i=103 改成 i=105:
for i in range(101,201): #i=105 2~104
for j in range(2,i):
# range(2,105) 从 2 取到 104
if i % j ==0:
#i除以某一个数,除尽了,i 是合数
105 除以 2 除不进,除以 3 除得尽。除到 4 就除不尽了。所以用 break。
for i in range(101,201): #i=105 2~104
for j in range(2,i):
# range(2,105) 从 2 取到 104
if i % j ==0:
# i 除以某一个数,除尽了,i 是合数
print(i,’是合数’)
break
#break 放在内循环里,用来结束内循环。
这里用来结束j的循环,发现 105 是合数就不在判断,就不执行了。就从 106,106从 2 开始除,除尽了就停止了。就从 107 开始,直到 107 能除进。
运行结果:C:Users\ chris\ AppData\Local\Programs\Python\Python37\python.exe C:/Users/chris/Desktop/PythoDa05-字符
102 是合数
至
177 是合数Process finished with exit code 0
求质数:
for i in range(101,201):
# i=105 2~104
for j in range(2,i):
# range(2,105) 从 2 取到 104
if i % j ==0:
# i 除以某一个数,除尽了,i 是合数
#print(i,’是合数’)
break
# break 放在内循环里,用来结束内循环。
else:
print(i,’是质数’)
上面代码是有问题的,运行结果:C:Users\ chris\ AppData\Local\Programs\Python\Python37\python.exe C:/Users/chris/Desktop/PythoDa05-字符
101是质数
…
105是质数
107是质数
Process finished with exit code 0
105 不是质数,是和数。因为 i=105 时,是从 j 是 2 开始除,105 不能被 2 整除,不满足 if 的条件,就直接打印 else,105 是质数,105 只是除以 2 没有除尽,并不是质数。
因为在除以 3 就是质数了。判断质数:把 else 往前缩进,把 for 和 else 对其,for…else 语句,当循环里的 break 没有被执行的时候,就会执行 else。
举例:假设 101 是质数,不断地除以 2,一直除到 100,都有余数,没有余数后才会进到代码里面来,所以就不会进入 break,就会走 else。102%2 的结果是 0,0==0,直接走 break。Break 走了,就不会走 else。
105%2 不等于 0,所以不会走 if i % j == 0:但 105%3 时,直接 break。
运行结果:C:Users\ chris\ AppData\Local\Programs\Python\Python37\python.exe C:/Users/chris/Desktop/PythoDa05-字符
101 是质数
103 是质数
107 是质数
109 是质数
113 是质数
127 是质数
131 是质数
137 是质数
139 是质数
149 是质数
151 是质数
157 是质数
163 是质数
167 是质数
173 是质数
179 是质数
181 是质数
191 是质数
193 是质数
197 是质数
199 是质数
Process finished with exit code 0
验证:求 2 到 100 的合数(1 既不是质数,也不是合数;2 是质数)
for i in range(2,101):
# i=105 2~104
for j in range(2,i):
# range(2,105) 从 2 取到 104
if i % j ==0:
#i除以某一个数,除尽了,i 是合数
#print(i,’是合数’)
break
# break 放在内循环里,用来结束内循环。
else:
#for…else 语句,当循环里的 break 没有被执行的时候,就会执行 else。
print(i,’是质数’)
运行结果:C:Users\ chris\ AppData\Local\Programs\Python\Python37\python.exe C:/Users/chris/Desktop/PythoDa05-字符
101是质数
2是质数
3是质数
5是质数
…
Process finished with exit code 0
验证:百度质数表。
开根号:
for i in range(101,201):
#i=105 2~104
for j in range(2,i **0.5):
#range(2,105) 从 2 取到 104
if i % j ==0:
#i除以某一个数,除尽了,i是合数
#print (i,’是合数’)
break
#break 放在内循环里,用来结束内循环。
else:
#for…else 语句,当循环里的 break 没有被执行的时候,就会执行 else。
print(i,’是质数’)
运行结果:C:Users\ chris\ AppData\Local\Programs\Python\Python37\python.exeC:/Users/chris/Desktop/PythoDa05-字符
Traceback (most recent call last):
File "C: /Users/chris/Desktop/Python 基础/Day05-字符串/01-代码/04-求素数.py", line 5, in <module>
for j in range(2, i ** 0.5):
# range(2,105) 从 2 取到 104 2 3 TypeError: " float’object cannot be interpreted as an integer
Process finished with exit code 1
出现报错,因为 range 开始和结束都要是整数,将开方换为整数,
for i in range(101,201):
#i=105 2~104
for j in range(2,int(i **0.5)):
#range(2,105) 从 2 取到 104
if i % j ==0:
#i除以某一个数,除尽了, i 是合数
#print(i,’是合数’)
break
#break放在内循环里,用来结束内循环。
else:
#for…else 语句,当循环里的 break 没有被执行的时候,就会执行 else。
print(i,’是质数’)
运行结果:C:Users\ chris\ AppData\Local\Programs\Python\Python37\python.exeC:/Users/chris/Desktop/PythoDa05-字符
101 是质数
103 是质数
107 是质数
109 是质数
113 是质数
127 是质数
131 是质数
137 是质数
139 是质数
149 是质数
151 是质数
157 是质数
163 是质数
167 是质数
173 是质数
179 是质数
181 是质数
191 是质数
193 是质数
197 是质数
199 是质数
Process finished with exit code 0
从结果上看是一样的,但是少除很多。比如 101,它没有从 2 除到 100,而是从 2除到了 101 的平方。
答案:for i in range(101, 201):
for j in range(2, i):
if i % j == 0:
break
else:
print(i)