Python判断素数(质数)——循换结构、控制及else循环扩展模式的实践

本文介绍了如何使用Python的循环结构和控制语句判断一个数是否为素数。通过详细讲解2种循环结构(遍历循环、无限循环)和2种循环控制(break、continue),并结合else循环扩展模式的应用,阐述了素数判断的实现方法。文中还提及了一个类似问题的解决,展示了else扩展模式带来的代码简洁性。

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

一、问题:Python判断素数(质数)

获得输入正整数 N,判断 是否为质数,如果是则输出 True,否则输出 False。不考虑输入异常。 

我的答案:

#质数定义为在大于1的自然数

N = eval(input())
flag = True

if N > 1:
    for i in range(2,N):
        if N%i == 0:
            print('False')
            break
    else:
        print('True')
else:
    print('False')
    
#非质数:能被range(2,N)中任意i整除即可

在我的答案中,用到了Python循环结构循环控制的知识。此外,还涉及到else循环扩展模式

 

二、知识回顾

1、Python的2种循环结构

遍历循环:环使用保留字for依次提取遍历结构各元素进行处理。
无限循环:使用保留字while根据判断条件执行程序。

2、Python的2种循环控制

break:如果有2层或多层循环,break退出最内层循环。
continue:用来结束当前当次循环,即跳出循环体中下 面尚未执行的语句,但不跳出当前循环。

 3、遍历循环和无限循环的保留字else扩展模式

当for/while循环正常执行之后,程序会继续执行else语句中内容。else中可放置判断循环执行情况的语句。

for 循环遍历 in 循环结构/while 条件:

    <语句块1>

else:

    <语句块2>

以上引自《 Python 语言程序设计》第4章“程序的控制结构”部分。

 

三、练习巩固

在解决python判断素数的问题前,我曾遇到了如下问题,与判断素数问题有异曲同工之妙,作为循环问题的练习补充很合适:

#小问题:打印出给定数组中第一个大于等于7的数字 如果没有打印一条提示消息

 

以下记录了自己的几种解决方法,当时还不知else循环扩展模式:

#方法1 缺点是太复杂

a = [1,2,3,4,5,9,8,3,7]
if max(a)<7:
    print('数组中没有大于等于7的数字!')
else:
    for i in a:
        if i<7:
            continue
        else:
            print(i)
            break

#方法2 利用range 函数

a = [1,2,3,4,5,9,8,3,7]
for i in range(len(a)):
    if a[i] >= 7:
        print(a[i])
        break
    elif i == len(a-1):#注意这里需要减1
        print("数组中没有大于等于7的数字!")

#方法3 

a = [1,2,3,4,5,9,8,3,7]
flag = True
for i in a:
    #先执行循环内的代码
    while (i >= 7)and flag:
        print(i)
        flag = False
        break
if flag:
    print('数组中没有大于等于7的数字!')

#方法4 

a = [1,2,3,4,5,9,8,3,7]
flag = True
for i in a:
    #先执行循环内的代码
    if (i >= 7):#and flag:
        print(i)
        flag = False
        break
if flag:
    print('数组中没有大于等于7的数字!')

所以,当使用了else循环扩展模式,小问题有了更简洁的解答:

#方法5 else扩展模式(方法2改进版)

a = [1,2,3,4,5]
for i in range(len(a)):
    if a[i]>= 7:
        print(a[i])
        break
else:
    print('数组中没有大于等于7的数字!')

 

至此,对python循环结构的知识算是有了初步的掌握。

        


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值