您可以使用一组允许的字符来检查该集是否是输入字符串的超集:
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)))