我如何才能告诉程序仅允许的某种输入类型?

时间:2019-04-30 19:33:47

标签: python list input

我正在研究一个要求用户输入十二次输入的程序。这些输入必须包含在列表中,其中包含字母表的前十二个字母。

letters=("A","B","C","D","E","F","G","H","I","J","K","L")

def gen_():

    s = []

    for i in range(1, 13):

        in_ = input("Input the note number " + str(i) + ", please\n", )

        if in_ in letters:

          s.append(in_)

          print(" \n"+str(s)+"\n " )

        else:

          print("not valid")

gen_()

我想告诉程序,如果某个输入无效,它应该要求用户重试并在同一实例上输入有效输入。我尝试通过将i减1来将“ i”设置回输入无效的值,但这没用。

我该如何编码?谢谢

2 个答案:

答案 0 :(得分:1)

您需要一个while循环来连续验证输入的输入是否有效。请检查此解决方案:

def gen():
    s = []
    for i in range(12):
        in_ = input("Input the note number {i}, please: ".format(i=i))
        while len(in_) != 1 or ord(in_) < 65 or ord(in_) > 76:
            in_ = input("Invalid input, please enter again: ")
        s.append(in_)
    return s

我在while循环中做了一些调整,以检查输入字符的ASCII值,而不是查找预定义的元组/列表。

答案 1 :(得分:0)

为什么我减去1可能不起作用,是因为python不能像其他编程语言一样工作,在Python中,您可以在for循环内修改index变量,并且它会做出相应的反应。简而言之,因为我不想深入了解细节,因此在循环中对i所做的任何更改都不会更改我在下一次迭代中的值。

执行您要执行的操作的一种方法是编写一个while循环,只要用户输入的内容无效,该循环就会重复。像这样:

in_ = input("Input the note number " + str(i) + ", please\n", )
while in_ not in letters:
    print("not valid")
    in_ = input("Input the note number " + str(i) + ", please\n")
s.append(in_)
print(" \n"+str(s)+"\n " )