我正在编写一个程序,它将一个字符串作为输入,并检查其中的元素是否有效.
我希望我的输入只包含较低的字符和句点,感叹号和空格,而不是空字符串.如果用户输入空字符串或无效字符,则会要求他们再次输入字符串:
我希望我的输入只包含较低的字符和句点,感叹号和空格,而不是空字符串.如果用户输入空字符串或无效字符,则会要求他们再次输入字符串:
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)))
原文地址:https://www.jb51.cc/python/185567.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。