我是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()
如果我可以请人解释为什么它存储多个值以及如何防止这种情况,我将非常感激。谢谢!
您的问题是您使用递归返回并获得另一个值(testfunc()
在testfunc()
自身内部的调用)。
如果输入无效值,它将再次调用该函数,并保存其当前位置(在之前print
),以便可以返回到该位置。
然后,当您最终输入一个合适的值时,它将最终使堆栈松开,并随即打印出无效的堆栈。
您最好使用循环进行这种验证,例如:
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()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句