繁体   English   中英

用双字母打印单词打印两次

[英]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)

letterphrase每个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM