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

2024-05-19 18:41:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图打印有两个字母的单词,但它们打印了两次(尽管打印了正确的单词)。我做错了什么

phrase = "Donald hat seine Mutter gegessen"

for word in phrase.split():
    for letter in word:
        if letter + letter in word:
            print(word)

Tags: inforifhat字母单词wordsplit
3条回答

letterphrase中的每一个word进行迭代,因此“t”和“s”出现两次,因此您会得到两次“Mutter”和“gegssen”

我的建议:使用列表保存结果,然后消除重复项:

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)创建它。然后,如果字母中的^{}重复两次,则打印该单词

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)

相关问题 更多 >