使用循环检查字符串的标点符号

时间:2018-10-19 15:23:38

标签: python

如何使用循环检查字符串是否具有标点符号。有人告诉我使用in运算符

string = input("Enter a string")

for char in string:
    if char in "'.,;:?!":
        print("that string contains  punctuation")
        break 
    else:
        print("that string contains punctuation")
        break

4 个答案:

答案 0 :(得分:1)

您可以使用for-else构造来打印消息,如果该字符串完成循环而没有找到一个,则该消息不包含标点符号:

string = input("Enter a string")

for char in string:
    if char in "'.,;:?!":
        print("that string contains punctuation")
        break 
else:
    print("that string does not contain punctuation")

答案 1 :(得分:0)

使用string模块的punctuation为您处理所有标点符号:

import string

if any(x in string.punctuation for x in s):
    print("that string contains punctuation")      
else: 
    print("that string contains no punctuation")

其中s是您的字符串。

答案 2 :(得分:0)

该代码是正确的一半。

if部分是正确的,因为一旦您找到任何标点符号,您的目标就会被满足,并且您不需要继续寻找,因此可以正确地break跳出循环。

但是else部分是错误的,因为如果当前字符不是标点符号,则您仍必须继续查找-字符串的其余部分可能具有标点符号。消息也是错误的。它应该说字符串没有带有标点符号。

您可以重组代码以利用for/else构造:

string = input("Enter a string")

for char in string:
    if char in "'.,;:?!":
        print("that string contains punctuation")
        break
else:
    print("that string does not contain punctuation")

如果循环一直进行到字符串末尾而没有调用else,则break将执行。

答案 3 :(得分:0)

或者反过来说,考虑输入的字符串比标点符号的字符串长

string = input("Enter a string")

punch_string= "'.,;:?!"
for char in punch_string:
    if char in string:
        print("that string contains punctuation")
        break
else:
    print("that string does not contain punctuation")

使用相交的较短版本

    if set(string).intersection(set("'.,;:?!" )):
        print("that string contains punctuation")
else:
    print("that string does not contain punctuation")