gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:28 25 4
gpt4 key购买 nike

对于 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])

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

关于Python:如何要求字符串作为输入而不是特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51086772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com