Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用循环检查字符串中的标点符号_Python - Fatal编程技术网

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

Python 使用循环检查字符串中的标点符号,python,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

如何使用循环检查字符串是否有标点符号。我被告知使用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
使用字符串模块的标点符号为您处理所有标点符号:

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是您的字符串。

如果字符串完成循环但未找到标点符号,则可以使用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")

这个密码有一半是对的

if部分是正确的,因为一旦你找到标点符号,你的目标就实现了,你不需要继续寻找,所以你可以正确地打破循环

但是,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")

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

或者考虑到字符串输入将比标点字符串长,检查另一个循环

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

@一旦找到标点符号,就必须使用mindfolded break使for循环短路。您的解决方案几乎是正确的。第一次突破很重要,但第二次突破是错误的。你应该把else子句放在for下面,而不是if下面