我是python的新手,我可能会使这个问题复杂化。我在函数中的值没有被替换时遇到问题。相反,它似乎只是为它添加新值。使用此功能,如果您选择1或2,则应该执行某些操作,如果您选择其他任何操作,则应该说这不是一个选项并让您再试一次。如果在选择有效选项之前选择了错误的选项,则输出如下:
Select Option
[1] Option 1
[2] Option 2
You selected Option 1
1
9
7
6
因此,不是将我的变量的值替换为1并清除以前的值,而是似乎只是添加它。这是我的代码:
def testfunc():
testvar = input('Select Option\n\n[1] Option 1\n[2] Option 2\n\n >')
if testvar in ('1', 'Option 1', 'option 1'):
print("\nYou selected Option 1")
elif testvar in ('2', 'Option 2', 'option 2'):
print("\nYou Selected Option 2")
else:
print("\n\nThat is not an option, please select another option")
testfunc()
print(testvar)
testfunc()
如果我能让某人解释为什么它存储多个值以及我如何防止这种情况,我会非常感激。谢谢!
答案 0 :(得分:3)
您的问题是您使用递归返回并获取另一个值(testfunc()
内testfunc()
的调用。)
如果输入无效值,它将再次调用该函数,保存其当前位置(print
之前),以便它可以返回到那里。
然后,当您最终输入 good 值时,它最终将展开堆栈,随时打印出无效的堆栈。
最好使用循环进行此类验证,例如:
def testfunc():
ok = False
while not ok:
testvar = input('Select Option\n\n[1] Option 1\n[2] Option 2\n\n >')
if testvar in ('1', 'Option 1', 'option 1'):
print("\nYou selected Option 1")
ok = True
elif testvar in ('2', 'Option 2', 'option 2'):
print("\nYou Selected Option 2")
ok = True
else:
print("\n\nThat is not an option, please select another option")
print(testvar)
testfunc()