我迫切需要帮助,我现在已经编写了一点代码,但已经被问题困住了一段时间。
我的函数必须检查给定的单词是否包含特殊字符,以及没有特殊字符的单词的长度是否大于 3。
特殊字符为:()1234567890!?_@#$%^&*.,'
如果单词中没有特殊字符并且没有特殊字符的单词的长度大于 3,则函数必须返回 True。
然而,这里的一个例外是允许特殊字符出现在单词的末尾。
我的想法是将初始单词和特殊字符变成一个列表,然后检查最后一个字符是否为“特殊”。(如果我从末尾删除所有特殊字符,我就不必再担心它们了,因为无论如何它们都是允许的。)然后再次检查该单词是否包含特殊字符,如果确实 > 返回 False。如果它不包含特殊字符并且 len(list) > 3 则返回 True 否则:返回 False (由于 len(list) 为 <= 3。)
查看我的代码,我只是不明白为什么我的测试失败了。
def check_word(word: str) -> bool:
symbols = "()1234567890!?_@#$%^&*.,'"
symbols_list = list(symbols)
word_list = list(word)
while word_list[-1] in symbols_list:
del word_list[-1]
for char in word_list:
if char in symbols_list:
return False
elif char not in symbols_list and len(word_list) > 3:
return True
else:
return False
不断失败的测试是:
print(check_word("te1234et1234")) # False (Mine returns True)
print(check_word("mar132gus")) # False (Mine returns True)
其他一切似乎都井井有条:
print(check_word("jaanus123")) # True
print(check_word("123sander")) # False
print(check_word("123joonas123")) # False
这些测试失败有什么原因吗?我错过了什么?
//Edit2 所以正如用户亲切地指出的那样,我继续在我的代码上使用了调试器,问题似乎是当我进入我最初的“for”循环时,它只检查我列表中的第一个字符是否是特殊字符,如果整个列表中有特殊字符,则没有人可以引导我找到正确的方法,让循环遍历整个列表以查找特价商品?