如何使用循环检查字符串是否具有标点符号。有人告诉我使用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
答案 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")