for...else 语法简介——以查找100内的质数为例

本文通过查找100以内质数的例子,介绍了Python中的for...else语法。当for循环正常结束时,else块的代码才会执行。文章分析了常规方法存在的问题,并提供了一个改进版的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




前言

这篇文章是学习python过程中的一些代码摘录,源文件来自李笑来github《自学是门手艺》


一、质数是什么?

质数指的是大于1且只可以被1和它自身整除的自然数,又叫做素数。

二、程序代码

1.常规方法

代码如下(示例):

#程序1
for n in range(2,100):
	if n == 2:
		print(n) 
		continue
	for i in range(2,n):
		if n % i == 0:
			break
	else:
		print(n)

执行结果如下图:
在这里插入图片描述

顺便贴一个刚刚写的错误的程序:

#程序2
for n in range(2,100):
	if n == 2:
		print(n) 
		continue
	for i in range(2,n):
		if n % i == 0:
			break
		else:
			print(n)

执行结果如图:
显然5,7打印了多次

思考一下:为何else要这样对齐?这地方其实用到了一个不常用的语法 for…else, 当 for 所有的语句代码块正常运行完,才会运行 else 语句。程序2的实际输出会出现多次重复打印质数的情况,例如当满足 n = 5 n = 5 n=5 时, i i i 的取值可以为2,3,4 均会执行打印5的操作。

PS:for…else 官方介绍链接

Loop statements may have an else clause; it is executed when the loop terminates through exhaustion of the list (with for) or when the condition becomes false (with while), but not when the loop is terminated by a break statement. This is exemplified by the following loop, which searches for prime numbers:

for n in range(2, 10):
… for x in range(2, n):
… if n % x == 0:
… print(n, ‘equals’, x, ‘*’, n//x)
… break
… else:
… # loop fell through without finding a factor
… print(n, ‘is a prime number’)

2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

2.改进版

不需要除到最后一个数,只需要到 n \sqrt{n} n 即可

for n in range(2,100):
	if n == 2:
		print(n) 
		continue
	for i in range(2int(i ** 0.5) +1):
		if n % i == 0:
			break
	else:
		print(n)

range(a,b)范围包括a,但不包括b,因此 int(i ** 0.5) 加1


总结

以上就是第一篇的内容,本来想寻个简单的,没想到撞上了 for…else。简言之,就是执行完for中的内容,再执行else。道阻且长,继续努力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值