我的while循环有问题,不太清楚为什么

时间:2019-10-25 05:06:32

标签: python while-loop

我正在编写一个小循环,以阻止用户使用无效的输入;但是,现在,如果他们输入了错误的输入,它将不断要求输入。 baseLet,secLet,thirdLet和forLet都是其中包含字符的列表。该代码应能够告诉用户是否输入了不在任何列表中的任何字符,并让他们重新输入输入的字符。

enchan = list(input("Enter your runes:"))

for z in enchan:
    if not(z in baseLet or z in secLet or z in thirdLet or z in forLet):
        valid = False


x = 0
while not(valid):
    x = 0
    enchan = list(input("Invalid character entered. Enter your runes:"))
    while not(x < len(enchan)):
        valid = True
        for z in enchan:
            if not(z in baseLet or z in secLet or z in thirdLet or z in forLet):
                valid = False
            x += 1

请原谅,我是编码的新手,有可能出现愚蠢的错误,但这是我在这里学习的主要原因。

1 个答案:

答案 0 :(得分:1)

这应该有效:

baseLet = ['a']
secLet = ['b']
thirdLet = ['c']
forLet = ['d']
valid = False

def is_valid(input_string):
    for s in input_string:
        if not(s in baseLet or s in secLet or s in thirdLet or s in forLet):
            print('false input')
            return False
    print('valid input')
    return True

while not valid:
    enchan = list(input("Enter your runes:"))
    valid = is_valid(enchan)

您可以使用一个函数来检查输入内容是否属于列表,并设置一个标志来停止while循环。