我在终端中有一个提示,在没有被要求的情况下调用自己。有问题的行为是,如果它被输入像['artist','art','dogs']这样的名字,并且匹配匹配其中1个,当它到达btn1
时,它会要求你确认“是狗好吗?“两次。它总是要求两次,然后正确地返回'狗'
elif len(matches) == 1:
我一直坚持下去,因为我看到它,hostfunc尝试返回提示,看到它没有答案,并要求你“选择......”,它会调用带有答案的_prompt。 _prompt看到它有答案,获得匹配,自def hostfunc(names):
def _prompt(answer=None):
if answer == None:
answer = gather("Pick from {names}...if you want more than 1, separate like \"name1, name2\"".format(names=names))
_prompt(answer=answer)
matches = check_for_answer_matches(names, answer)
matches_string = process_matches(matches)
if len(matches) == 0:
answer = gather("That string didn't match any of {names}, please try again".format(names=names))
_prompt(answer=answer)
elif len(matches) == 1:
answer = gather("Is {matches_string} OK? ('y' or 'n' to restart)".format(matches_string=matches_string))
if answer == 'y':
return matches
elif answer == 'n':
return _prompt()
return matches
elif len(matches) > 1:
answer = gather("That string matched {matches_string}, is that OK? ('y' or 'n' to restart)".format(matches_string=matches_string))
if answer == 'y':
return matches
elif answer == 'n':
return _prompt()
return _prompt()
起,它应该问你“狗是否正常?”当你说'y'时,立即返回len(matches) == 1
。
我也尝试过['dogs']
,然后返回x。为什么这件事要求你确认两次?
谢谢
答案 0 :(得分:1)
再次致电if answer == None
后,您的_prompt
似乎没有回复,因此您将使用正确的answer
变量重复两次
因此,您将使用_prompt()
致电answer=None
,这会提示输入,然后拨打_prompt(answer)
,这将找到正确的匹配项。 但一旦_prompt(answer)
调用完成,它将继续调用,现在已经相应地设置了答案,从而在技术上运行最终答案两次。
将_prompt(answer)
更改为return _prompt(answer)
应修复此问题