2017-06-16 77 views
0

我有这样的代码:PYTHON我做错了什么?循环和if语句

methods = ["SNMP", "SUDP","ESSYN", "SSYN", "HTTP"] 

print("Methods: {}".format(', '.join(methods))) 
method = input("Enter method: ") 
method = method.upper() 

while method != methods: 
    print("ERROR: Method unknown") 
    method = input("Enter method: ") 
    method = method.upper() 

if method in methods: 
    print("Method: {}".format(method)) 

print("" 
     "" 
     "") 

seconds = input("Enter length in seconds: ") 
    print("{} seconds".format(seconds)) 

,你可以看到我试图从用户那里得到的答案则显示答案,并继续到下一个任务。但是如果答案不在方法列表中,我希望它再次提出这个问题。但我无法弄清楚如何。我现在使用的代码给了我错误消息“错误:方法未知”,当它最终确实说:方法(用这里的方法)它不会进入下一个任务。任何人都可以告诉我该做什么或在这段代码中出了什么问题?

+0

是你缩进你的代码完全一样,因为它是在这里吗? – JoshKopen

+3

'方法!=方法'没有做你认为的事情 - 尝试'方法不在方法中' – asongtoruin

+1

请修复你的缩进,以便清楚实际问题是什么。 – Carcigenicate

回答

0

怎么能

while method != methods: 

永远做有意义吗?

也许你想:

while method not in methods: 
+0

这将如何解决问题? –

+0

嗯,谢谢我刚开始。它的工作,但我不知道如何与变量做到这一点。 – FluffyMe

+0

@JonClements - 它如何解决这个问题?呃,“立即”? “尽快”? – Malvolio

1
methods = ["SNMP", "SUDP","ESSYN", "SSYN", "HTTP"] 

print("Methods: {}".format(', '.join(methods))) 
ans = None 
while ans is None: # when ans is set as method or any other value loop will stop asking for methods 
    method = input("Enter method: ") 
    if method.upper() in methods: 
     ans = method # when you set ans it will not ask again 
     print("Method: {}".format(method)) 
     # rest of code here.... even another while loop for your input 
    else: 
     print("ERROR: Method unknown") 
+0

看看链接的副本 - 这里不需要初始值并检查它 - 正确使用“continue”或“break”更适合。 –