用户输入列表-Python

时间:2018-07-06 14:30:24

标签: python python-3.x

XPath

这里的print(i)可以检查它是否正常工作,但是它打印的只是用户输入的名字的第一个字母。这样做的目的是,例如,如果有人不小心在其名称中键入数字(列表字符中未包含的任何符号),则该数字将返回“ ERROR!Invalid entry”。并提示他们再次输入名称。

我在做错什么,如何检查输入中的每个字母以确保它是有效的输入?

谢谢!

2 个答案:

答案 0 :(得分:1)

您需要删除return first_name。除非函数已完成100%,否则切勿调用return。在这里,您是在第一次循环迭代中调用它的,这意味着该函数将在检查名字中的第一个字符后完成。

characters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
"o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "-", "'", " ", "*"]
def enter_first_name():
    while True:
         first_name = input("Enter your first name: ").lower().rstrip().lstrip()
         for i in first_name:
             if i in characters:
                 print(i)
            else:
                 print("ERROR! Invalid entry.")

当您删除return first_name时,它会验证每个字符是否正确。

输出:

Enter your first name: trevor
t
r
e
v
o
r
Enter your first name: trevor!
t
r
e
v
o
r
ERROR! Invalid entry.
Enter your first name:

答案 1 :(得分:1)

您可以使用all来检查输入的所有字符是否都在白名单中。

from string import ascii_lowercase

characters = set(ascii_lowercase + " -*'")

def enter_first_name():
    while True:
        first_name = input("Enter your first name: ").lower().strip()
        if all(i in characters for i in first_name)
                return first_name
        else:
            print("ERROR! Invalid entry.")