[英]printing words with double letters prints twice
我正在尝试打印具有双字母但它们打印两次的单词(尽管打印了正确的单词)。 我究竟做错了什么?
phrase = "Donald hat seine Mutter gegessen"
for word in phrase.split():
for letter in word:
if letter + letter in word:
print(word)
letter
对phrase
每个word
进行迭代,因此“t”和“s”出现两次,因此您会得到两次“Mutter”和“gegssen”。
我的建议:使用 list 保存您的结果,然后消除重复项:
phrase = "Donald hat seine Mutter gegessen"
#Start empty list
duplicate = []
for word in phrase.split():
for letter in word:
if letter + letter in word:
duplicate.append(word) #Append the word
#Remove duplicates
duplicate = mylist = list(dict.fromkeys(duplicate))
print(duplicate)
屈服:
['Mutter', 'gegessen']
只搜索每隔一个字母:
phrase = "Donald hat seine Mutter gegessen"
for word in phrase.split():
for letter in word[::2]:
if letter + letter in word:
print(word)
或者最好在找到第一个双倍后添加一个休息时间:
phrase = "Donald hat seine Mutter gessgessen"
for word in phrase.split():
for letter in word:
if letter + letter in word:
print(word)
break
最终解决方案:
phrase = "test Aachen Mainschifffahrt Spaß test Aachen Mainschifffahrt Spaß"
sz_is_ss = True
s = set()
for word in phrase.split():
for letter in word.lower()[::2]:
if not word in s and (letter + letter in word.lower() or "ß" in word and sz_is_ss):
s.add(word)
print(word)
break
印刷:
Aachen
Mainschifffahrt
Spaß
每个字母只有一次,您可以使用一组。 您可以使用set(word)
创建它。 然后,如果any
字母重复两次,则打印该单词。
for word in phrase.split():
if any(letter + letter in word for letter in set(word)):
print(word)
为了使这种大小写不敏感适用lower
。
for word in phrase.split():
if any(letter + letter in word.lower() for letter in set(word.lower())):
print(word)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.