2016-04-14 48 views
1
def confirm_choice(): 
    confirm = input("[c]Confirm or [v]Void: ") 
    if confirm != 'c' and confirm != 'v': 
     print("\n Invalid Option. Please Enter a Valid Option.") 
     confirm_choice() 
    print (confirm) 
    return confirm 

例如,如果输入字符'k'后跟有效输入'c',该函数将打印输入'c'和'k'在python中创建确认功能

输出:

c 
k 

如何用上述程序被改变,使得它仅返回任一“C”或“v'and重复功能,如果输入是无效的。

+3

的可能的复制[?我如何使用尝试..除或IF ... ELSE验证用户输入(http://stackoverflow.com/questions/5557937 /怎么办,我使用的试 - 除了有或的if-else对验证用户输入) – jeremycg

回答

3

你忘了之后递归调用confirm_choice()返回,所以它掉下来的,如果块的和执行

print (confirm) 
return confirm 

将打印第一个无效的输入。

def confirm_choice(): 
    confirm = input("[c]Confirm or [v]Void: ") 
    if confirm != 'c' and confirm != 'v': 
     print("\n Invalid Option. Please Enter a Valid Option.") 
     return confirm_choice() 
    print (confirm) 
    return confirm 

应该表现正确。

3

递归是不必要的;它更容易使用这个while循环:

while True: 
    confirm = input('[c]Confirm or [v]Void: ') 
    if confirm in ('c', 'v'): 
     return confirm 
    else: 
     print("\n Invalid Option. Please Enter a Valid Option.")