我正在尝试打印从1到100的所有数字,以5结尾。这就是我所拥有的:
for i in range (1, 100):
if (i/10) == 5:
print(i)
为什么打印50?
答案 0 :(得分:6)
你想使用modulo %
来反对除法。 Modulo得到了余数。
for i in range (1, 100):
if (i % 10) == 5:
print(i)
答案 1 :(得分:6)
因为50/10是5.你真正想要的是:
for i in range(100):
if i % 10 == 5:
print i
%是模运算,并为您提供两个数的整数除法的余数。
答案 2 :(得分:5)
为什么要测试这些值?只需先生成你想要的那些。
for i in range(5, 101, 10):
print (i)
答案 3 :(得分:0)
这是熟悉itertools
的好方法来自IPython shell:
In [5]: import itertools
In [6]: fives = itertools.count(start=5, step=10)
In [7]: fives.next()
Out[7]: 5
In [8]: fives.next()
Out[8]: 15
In [9]: fives.next()
Out[9]: 25
In [10]: fives.next()
Out[10]: 35
In [11]: fives = itertools.count(start=5, step=10)
In [12]: tmp = itertools.takewhile(lambda x: x <= 100, fives)
In [13]: tmp
Out[13]: <itertools.takewhile at 0x171f65f0>
In [14]: list(tmp)
Out[14]: [5, 15, 25, 35, 45, 55, 65, 75, 85, 95]
这也是一个有趣的历史课,因为Python中的列表推导和生成器与他们来自Haskell的激励祖先有很多共同之处。在此页面中搜索无限列表以查看我的意思:(link)。