Skip to main content
 首页 » 编程设计

Python:如何要求字符串作为输入而不是特定值

2025年05月04日39pander-it

对于 YourName input(),我想获得一个字符串值。因此,它不应该是 float 、整数等。在这个例子中,我想用任何字符串值替换“Sunny”,以使 while 循环接受输入。

YourName = '' 
 
while YourName != "Sunny": 
    print("Please type in your name") 
    YourName = input() 
 
print(YourName + " is correct") 

提前致谢,最好

森蒂诺

请您参考如下方法:

如评论中所述,您可以使用类似于以下内容的内容:

YourName = input("Please enter your name: ") 
 
while True: 
    if YourName.isalpha(): 
        break 
    else: 
        print("Must enter string") 
        print("Please type in your name") 
        YourName = input("Please enter your name: ") 
        continue 

isinstance()是一个内置函数,用于检查变量是否属于特定类,例如isinstance(my_var, str) == True。 但是,Input() 函数总是返回一个字符串。因此,如果你想确保输入的都是你想使用的字母 .isalpha() .您也可以使用 Try/except。正如@SiHa 所说 this SO question有很大的反响。


正如评论中所指出的,如果字符串中有空格,这个答案将不起作用。如果你想允许多种名称格式,你可以使用正则表达式。例如,您可以执行以下操作:

import re 
 
YourName = input("Please enter your name: ") 
 
while True: 
    if re.fullmatch(r"[a-zA-Z]+\s?[a-zA-Z]+", YourName) is not None: 
        break 
    else: 
        print("Must enter string") 
        print("Please type in your name") 
        YourName = input("Please enter your name: ") 
        continue 

与常规字符串方法相比,使用正则表达式可以让您更好地控制输入。 Docs , Python Regex HOWTO . re 是 python 自带的标准库,会给你最大的灵 active 。您可以使用 regex101帮助您测试和调试。

如果找到,re.fullmatch() 将返回一个匹配对象,否则将返回None。它说输入可以是任何小写或大写字母,中间有一个可选的空格,后跟更多字母。


如果您不想导入包,那么您可以遍历您的输入对象并使用以下方法检查所有字符是否都是空格或字母:

all([x.isalpha() | x.isspace() for x in YourName]) 

但是这不会说明有多少空间或它们在哪里。如果你想要更多的控制,最好使用正则表达式。