Python 使用循环检查字符串中的标点符号
如何使用循环检查字符串是否有标点符号。我被告知使用in接线员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
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下面