Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环1-10打印,或仅偶数打印,或仅赔率打印,或全部打印_Python_Loops_Python 2.7_While Loop - Fatal编程技术网

Python 循环1-10打印,或仅偶数打印,或仅赔率打印,或全部打印

Python 循环1-10打印,或仅偶数打印,或仅赔率打印,或全部打印,python,loops,python-2.7,while-loop,Python,Loops,Python 2.7,While Loop,程序循环1-10次,但用户可以选择是否需要 只打印偶数、奇数或所有数字 因此,如果用户选择仅打印偶数,则输出应为: 2 4 6 8 10 如果只是奇数:1 3 5 7 9 全部:12345678910 但当我运行下面的代码时,除了只打印外,它对所有打印都正常工作 偶数或仅打印奇数,则它根本不会运行程序。所以我想知道 这里可能有什么错误 MODE = ["Only Even", "Only Odds", "All Numbers"] for i,v in enumerate(MODE):

程序循环1-10次,但用户可以选择是否需要 只打印偶数、奇数或所有数字

因此,如果用户选择仅打印偶数,则输出应为: 2 4 6 8 10

如果只是奇数:1 3 5 7 9

全部:12345678910

但当我运行下面的代码时,除了只打印外,它对所有打印都正常工作 偶数或仅打印奇数,则它根本不会运行程序。所以我想知道 这里可能有什么错误

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
MODE=[“仅偶数”、“仅赔率”、“所有数字”]
对于枚举(模式)中的i、v:
打印i+1,v
计数=0
s=int(输入(“输入模式:”)
如果s==3:
当计数小于10时:
打印计数+1
计数+=1
elif s==2:

而count您的
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
MODE=[“仅偶数”、“仅赔率”、“所有数字”]
对于枚举(模式)中的i、v:
打印i+1,v
计数=1#将0更改为1
s=int(原始输入(“需要输入模式”))
如果s==3:

首先计数,而不是使用
while
循环,在这种情况下,您应该使用
for
循环,这样您就知道要迭代什么:

for count in range(1, 11):
这样就避免了忘记手动递增<代码>计数
(或者在这种情况下在错误的位置递增)的错误

其次,您应该只运行此循环一次,并在其中移动您的规则:

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
和可选的第二个参数
枚举
来改进用户输入:

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):
    ...        

我对代码做了更多的修改。一定要检查它们。所以我最大的错误是count+=1Ryt的缩进?但是当我在代码中输入s=1或2时,为什么程序没有运行,这与缩进有关吗?还是有其他原因?@避免沮丧,请按原样尝试我的代码。我对它做了很少的调整。它起作用了。我试过了是的,我试过了,效果很好!我只是想知道我犯了什么错误。@避免沮丧,我不确定。我只是复制了你的代码并编辑了一些。你可以看到我把评论放在哪里。是的,评论很有帮助!谢谢你的回答,确实帮了大忙!:)