程序循环1-10,但用户可以选择是否需要只打印偶数,只打印奇数,或所有的数字。
所以,如果用户选择只打印偶数,那么输出应该是:2 4 6 8 10
如果仅为奇数:1 3 5 7 9
所有:1 2 3 4 5 6 7 8 9 10
但是当我运行下面的代码时,它可以正常地打印除打印之外的所有内容偶数或只输出奇数,那么它根本不会运行程序。所以我想知道这里可能有什么错误?
MODE = ["Only Even", "Only Odds", "All Numbers"]
for i,v in enumerate(MODE):
print i+1, v
count = 0
s = int(input("Enter Mode Wanted: "))
if s == 3:
while count < 10:
print count+1
count += 1
elif s == 2:
while count <=10:
if count%2 != 0:
print count
count += 1
elif s == 1:
while count <= 10:
if count%2 == 0:
print count
count += 1
您的count += 1
缩进错误。
纠正:
MODE = ["Only Even", "Only Odds", "All Numbers"]
for i,v in enumerate(MODE):
print i+1, v
count = 1 #changed 0 to 1
s = int(raw_input("Enter Mode Wanted: "))
if s == 3:
while count <= 10: #changed < to <=
print count #changed count+1 to count
count += 1
elif s == 2:
while count <=10:
if count%2 != 0:
print count
count += 1
elif s == 1:
while count <= 10:
if count%2 == 0:
print count
count += 1
首先,在这种情况下,你应该使用for
循环,而不是使用while
循环,你知道你要迭代的是什么:
for count in range(1, 11):
从而避免忘记手动增加count
(或者在错误的地方增加)的错误。
for count in range(1, 11):
if (s == 3 or
(s == 2 and count % 2 != 0) or
(s == 1 and count % s == 0)):
print count
请注意,这是如何显著减少重复,从而减少潜在的错误。
最后,您可以使用这个问题,str.format
和enumerate
的可选第二个参数来改进您的用户输入:
MODE = ["Only Even", "Only Odds", "All Numbers"]
for i, v in enumerate(MODE, 1):
print "{0}: {1}".format(i, v)
while True:
try:
s = int(input("Enter mode wanted: "))
except ValueError:
print("Not an integer.")
else:
if s in range(1, len(MODE) + 1):
break
print("Not a valid mode.")
for count in range(1, 11):
...