所以我试图让这个函数只在它等于数组中的字符时返回我写的内容。如果不是,我希望它继续循环。
def pick():
picks = input('Type one letter. ')
choice = {'q', 'w', 'e', 'r', 't', 'y'}
for x in choice:
while x in choice != picks:
picks = input('Pick again. ')
else:
return x
pick()
我对此感到非常困惑。
示例:
Type one letter. z
Pick again. q
然后它将q
返回到要在另一个函数中使用的函数。
如果这个功能正确(返回正确的字符),它必须只继续下一个功能。比较此功能时的另一个功能是回答它自己的功能。它会阻止其他功能从#34;开始"如果不正确的话,这个会继续循环吗?
答案 0 :(得分:3)
没有必要每次循环选择。另外,我不太确定你在while
条件下尝试做什么,但是这样的事情应该可以解决问题。主题x in y
返回一个布尔值,表示x
是否是y
的成员。
def pick():
picks = input('Type one letter. ')
choice = {'q', 'w', 'e', 'r', 't', 'y'}
while picks not in choice:
picks = input('Pick again. ')
return picks
pick()
此外,我可能会做一点清理用户的输入。
while picks.lower().rstrip() not in choice:
答案 1 :(得分:1)
尝试(Python 3):
def pick():
choices = {'q', 'w', 'e', 'r', 't', 'y'}
picked = input('Type one letter: ')
while picked not in choices:
picked = input('Pick again: ')
return picked
pick()
对于Python 2:
def pick():
choices = {'q', 'w', 'e', 'r', 't', 'y'}
picked = raw_input('Type one letter: ')
while picked not in choices:
picked = raw_input('Pick again: ')
return picked
pick()
每次choices
检查in
的每个成员时,您都不需要遍历set
。
在Python 2中使用input()
时,Python会尝试将输入解释为变量,但raw_input()
将返回一个字符串。
并且,是的,此功能将阻止,直到收到有效输入,停止执行后续功能。