python中 for 跟 else的搭配

news/2024/7/5 6:53:17

和朋友讨论一个简单的用Python实现求指定范围内的所有质数的问题:
教程给出的代码如下

M = input()
N=input()
M = int(M)
N = int(N)
X = []
for i in range(M,N+1):
    for j in range(2,i):
        if i%j == 0:
            break
    else:
         X.append(i)
print(X)

会发现一个很奇特的,else语句居然和for对齐了,在映像中else是和if 搭配的。
首先让我们分析一下这个求质数算法的逻辑:
输入N和M,写一个for循环遍历,内容是对每一个确定的数进行质数判断:
质数判断部分:
输入为i,对于j = 2 , i-1 的所有的数进行一个遍历,这里我们就会考虑到用for 循环,进行操作i%j判断,如果能够整除,马上结束对质数判断的过程,这里我们用一个break就可以结束。
那么关键的点是:如何才能判断是一质数呢,也就是整除遍历都不满足之后,方可判断该数为质数。

在Python的文档中有关于for和else搭配的用法:

When the items are exhausted (which is immediately when the sequence is empty), the suite in the else clause, if present, is executed, and the loop terminates.

A break statement executed in the first suite terminates the loop without executing the else clause’s suite. A continue statement executed in the first suite skips the rest of the suite and continues with the next item, or with the else clause if there was no next item.
大意是说当迭代的对象迭代完并为空时,位于else的子句将执行,而如果在for循环中含有break时则直接终止循环,并不会执行else子句。


http://www.niftyadmin.cn/n/2752652.html

相关文章

小博老师解析Java核心技术 ——JSwing窗体状态监听事件

2019独角兽企业重金招聘Python工程师标准>>> [引言] 我们在学习Java编程的时候,如果需要开发客户端窗体类型的程序,可以使用JDK中的awt和swing库。本文开始小博老师就继续为大家演示Java窗体编程中的各类监听器,今天主要讲解窗体状…

mysql分区 详解

第18章:分区 目录 18.1. MySQL中的分区概述 18.2. 分区类型 18.2.1. RANGE分区 18.2.2. LIST分区 18.2.3. HASH分区 18.2.4. KEY分区 18.2.5. 子分区 18.2.6. MySQL分区处理NULL值的方式18.3. 分区管理 18.3.1. RANGE和LIST分区的管理 18.3.2. HASH和KEY分区的管理 …

Python中的多值函数和和字典的结合

7]:def tracy(cy):print(cy) tracy({lesson1 :1,lesson2:2}) 结果 {lesson1: 1, lesson2: 2}这样做呢,函数传入的参数就只能有一个字典,传入的实参被赋值给cy这个从cy 的输出的结果也可以看出 下面还有第二种方式: def tracy(**cy):print(…

结构光实验正弦信号模板生成

代码如下: ## LL 2020/4/11 14:15 # a demo to generate pattern maps of different frequence. import numpy as np import matplotlib.pyplot as plt import cv2 as cvdef signal_xHz(A,B ,fi, time,N,i):return A * np.sin( 2 * np.pi * fi * np.linspace(0, t…

Yii2 创建项目

安装基础环境创建基础版创建高级版1 安装基础环境 搭建php, nginx环境, 请参考: http://blog.csdn.net/alex_my/article/details/53818143 首先先安装Composer cd ~/Lib/php curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer然后切…

深度图伪彩色处理(matlab)+gray2color

深度图 深度图衡量场景中的深度信息,每一个像素点的像素值代表该采样点对应的场景点到相机的距离,因此深度图是单通道的,从图像的视觉效果来看即灰度图。 判断深度图的质量我们可以通过观察和数据分析两种方法,通常最后的输出图在…

代码“中间地带”的封装与复用

先提出一个词:中间地带。 作为一个框架提供商,微软公司为我们提供了最基础最常用的类和方法,在实际工作中,我们需要去继承去组合这些类与方法,形成我们的解决方案。 那么,存在一个问题,为什么微…

Hexo建站、部署、主题优化

Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 下面记录本人Hexo建站、部署、主题优化的过程。 Hexo建站、部署 Hexo建站教程GitHub Pages绑…