首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python for i in range(2,2):print(i) I变量包含什么,它不包含值2?

Python for i in range(2,2):print(i) I变量包含什么,它不包含值2?
EN

Stack Overflow用户
提问于 2018-08-21 08:32:39
回答 2查看 3.3K关注 0票数 0

我正在试着一步一步地了解这个程序是如何工作的。

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')

for i in range(2,2):
    print(i)

这段代码没有打印任何东西,所以我包含的实际值是什么,它是否包含无用价值。

EN

回答 2

Stack Overflow用户

发布于 2018-08-21 08:40:07

range(2, 2)是一个空序列。范围是半开放的,因此range(2, 2)的意思是“除<2以外的所有整数”,其中没有任何整数:

>>> len(range(2, 2))
0
>>> list(range(2, 2))
[]

所以,当你迭代它的时候,你会得到一个空的迭代器:

>>> it = iter(range(2, 2))
>>> next(it)
StopIteration:

所以,for i in range(2, 2):循环了0次,甚至都没有给i赋值,更不用说print了。

因此,在这条for语句之前,i包含了它碰巧包含的所有内容:

>>> i = 'this is a string'
>>> for i in range(2, 2): pass
>>> print(i)
this is a string

…或者,如果它不包含任何内容,则没有i变量:

>>> del i
>>> for i in range(2, 2): pass
>>> print(i)
NameError: name 'i' is not defined
票数 2
EN

Stack Overflow用户

发布于 2018-08-21 08:46:33

对于范围(2,2)中的i,结果为空list []

代码如下:

对于范围(2,11)中的n:对于范围(2,n)中的x:如果n%x == 0:打印(n,“质数”)中断否则:打印(n,“不是质数”)

结果是:2不是素数3不是素数4素数5不是素数6素数7不是素数8素数9素数10

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51940104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档