加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 检查无效输入

发布时间:2020-12-16 23:44:28 所属栏目:Python 来源:网络整理
导读:我正在编写一个程序,它将一个字符串作为输入,并检查其中的元素是否有效. 我希望我的输入只包含较低的字符和句点,感叹号和空格,而不是空字符串.如果用户输入空字符串或无效字符,则会要求他们再次输入字符串: 我知道如何检查字符串中的字符.我用这种方法 alph
我正在编写一个程序,它将一个字符串作为输入,并检查其中的元素是否有效.
我希望我的输入只包含较低的字符和句点,感叹号和空格,而不是空字符串.如果用户输入空字符串或无效字符,则会要求他们再次输入字符串:

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

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)))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读