用输入()循环函数

时间:2016-01-18 00:28:37

标签: python python-3.x

所以我试图让这个函数只在它等于数组中的字符时返回我写的内容。如果不是,我希望它继续循环。

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;开始"如果不正确的话,这个会继续循环吗?

2 个答案:

答案 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()将返回一个字符串。

并且,是的,此功能将阻止,直到收到有效输入,停止执行后续功能。