繁体   English   中英

Python-使用while循环重复代码

[英]Python - Repeating code with a while loop

所以这是我的问题。 我有一大堆输入代码,以防输入错误。 到目前为止,这就是我所拥有的(请注意,这只是一个示例代码,我在打印和输入中拥有的实际值是不同的:

input_var_1 = input("select input (1, 2 or 3)")
if input_var_1 == ("1"):
    print ("you selected 1")
elif input_var_1 == ("2")
    print ("you selected 2")
elif input_var_1 == ("3")
    print (you selected 3")
else:
    print ("please choose valid option")

我要在ELSE之后添加什么,以便第一个IF和最后一个ELIF之间的所有代码都重复执行直到输入有效为止? 我现在所得到的只是简单地重复执行3次代码,但是这样做的问题是它仅重复输入请求3次,而且太大而又不切实际。

谢谢您的帮助!

正如umutto所暗示的,您可以使用while循环。 但是,您可以在结尾处有一个中断,而不是对每个有效输入都使用break ,您可以使用continue保留在循环中来跳过不正确的输入。 如下

while True:
    input_var_1 = input("select input (1, 2 or 3): ")
    if input_var_1 == ("1"):
        print ("you selected 1")
    elif input_var_1 == ("2"):
        print ("you selected 2")
    elif input_var_1 == ("3"):
        print ("you selected 3")
    else:
        print ("please choose valid option")
        continue
    break

我还清理了代码中的其他一些语法错误。 经过测试。

一个有效的代码将是

input_values=['1','2','3']
while True:
    input_var_1 = input("select input (1, 2 or 3): ")
    if input_var_1 in input_values:
        print ("your selected input is "+input_var_1)
        break
    else:
        print ("Choose valid option")
        continue

我建议使用此答案,因为我相信python可以用简约的代码完成工作。

像mani的解决方案一样,在这种情况下,除了continue的使用是多余的。

另外,在这里我允许将int()的float()或string()的输入标准化为int()

while 1:
    input_var_1 = input("select input (1, 2, or 3): ")
    if input_var_1 in ('1','2','3',1,2,3):
        input_var_1 = int(input_var_1) 
        print 'you selected %s' % input_var_1
        break
    else:
        print ("please choose valid option")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM