a = 0
for a in range(1,99):
a = (a + 2)
y = a
print(y)
这是我用来尝试生成1到99之间的奇数的代码。但是它没有显示任何结果。问题是,我想保持相同的代码结构,任何问题都要纠正,我可能想添加它但我不想完全编写新代码,因为我可能不理解它因为我是Python的新手。先谢谢你们。
PS - 我遇到的问题是它打印的范围内的所有数字而不是只有奇数。
答案 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]