python中的for循环奇数生成器的代码是否有效?

时间:2017-09-07 20:04:40

标签: python

a = 0
for a in range(1,99):
  a = (a + 2)
  y = a
  print(y)

这是我用来尝试生成1到99之间的奇数的代码。但是它没有显示任何结果。问题是,我想保持相同的代码结构,任何问题都要纠正,我可能想添加它但我不想完全编写新代码,因为我可能不理解它因为我是Python的新手。先谢谢你们。

PS - 我遇到的问题是它打印的范围内的所有数字而不是只有奇数。

4 个答案:

答案 0 :(得分:1)

问题是你不应该在循环中修改a,因为它是由range行自动设置的。

a = 0   #unneeded
for a in range(1,99):   #first time sets a to 1
  a = (a + 2)  # sets a to 3
  y = a        # sets y to 3
  print(y)     # prints y
# loop back to beginning
for a in range(1,99):   #sets a to 2
  a = (a + 2)  # sets a to 4
  y = a        # sets y to 4
  ...

您可以将循环迭代器更改为其他变量:for _ in range(50):

或者你可以通过使用范围函数设置a而不是在循环体中修改它来做更多pythonic:for a in range(1,100,2): print(a)

答案 1 :(得分:1)

在您的代码中

  

a =(a + 2)

只增加“a”的值。

您可以通过这种方式从任何类型的数字序列中获取奇数:

for a in range(1,100):
    if a % 2 != 0:
        print(a)

答案 2 :(得分:0)

这更简洁:

for a in range(1, 100, 2):
print(a)

答案 3 :(得分:0)

您可以为此使用range

>>> l=1 # start
>>> r=20 # end
>>> range(l if l % 2 else l+1, r+1, 2)
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]