gpt4 book ai didi

python - 检查无效输入

转载 作者:太空狗 更新时间:2023-10-29 22:25:22 25 4
gpt4 key购买 nike

我正在编写一个程序,它将一个字符串作为输入并检查其中的元素是否有效。我希望我的输入仅包含小写字符和句点、感叹号和空格,而不是空字符串。如果用户输入空字符串或无效字符,他们将被要求再次重新输入字符串:

我知道如何检查字符串中的字符。我用这个方法

alpha ="abcdefghijklmnopqrstuvwxyz"
message= input("Enter message: ")
for i in message:
if i in alpha:
print i

通常我会使用下面的方法来检查无效输入,但如果我想检查字符串中的字符,它不适用于这种情况。我只能用这个来检查消息是否为空

textOK = False
while not textOK:
message= input(prompt)
if len(message) == 0:
print("Message is empty)
else:
textOK= True

这将在用户输入空字符串时重新提示用户。我不知道如何结合这两种方法。简而言之,我想检查我的输入是否只包含小写字母、句点、感叹号和空格。如果它包含其他特殊字符或数字或者是一个空字符串,将提示用户再次输入消息。请帮忙!!

最佳答案

您可以使用一组允许的字符来检查该组是否是输入字符串的超集:

allowed = set("abcdefghijklmnopqrstuvwxyz! .")

while True:
message = input("Enter message: ")

if message and allowed.issuperset(message):
# do whatever
break
print("Invalid characters entered!")

它只会允许允许的内容:

In [19]: message = "foobar!!$ "

In [20]: message and allowed.issuperset(message)
Out[20]: False

In [21]: message = "foobar!! "

In [22]: message and allowed.issuperset(message)
Out[22]: True

In [23]: message = ""

In [24]: bool( message and allowed.issuperset(message))
Out[24]: False

你也可以使用all()...:

while True:
message = input("Enter message: ")
if message and all(ch in allowed for ch in message):
print("ok")
break
print("Invalid characters entered!)

如果你想输出坏字符:

while True:
message = input("Enter message: ")
if message and all(ch in allowed for ch in message):
print("ok")
break
print("The following invalid character(s) were entered! {}"
.format(" ".join(set(message)- allowed)))

关于python - 检查无效输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38293185/

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