Python:打印用户输入的共同字母

1 投票
2 回答
952 浏览
提问于 2025-04-17 20:07

有没有更好的方法来写这段代码?虽然没有错误,但似乎它把我输入的所有字母都整理成了一个列表。

我想打印出字符串中出现的共同字母,即使它们出现了多次。

这是我现在的代码

mystr = input("Enter a string:")
s = list(mystr) 
letter_counter = {}
for word in mystr:
    if word in letter_counter:
         letter_counter[word] += 1
    else:
         letter_counter[word] = 1

 user_letter = sorted(letter_counter, key = letter_counter.get, reverse = True)

 number_1 = user_letter[:2]
 print(number_1)  

我能正确打印出字母的唯一方法是给

number_1 = user_letter[:2]设置一个限制。

比如说,如果我输入以下内容:

mystr = input("Thomas Jones")

在代码中,打印的结果会是

print(number_1)       
[o], [s]

这没错,但如果限制设置为从23

number_1 = user_letter[:3]

它会打印[o] [s] [a],而实际上只有一个a,所以它不应该出现。

我希望无论用户输入多少个字母,都能正确显示重复的字母而不需要限制

我现在完全卡住了,没办法解决这个问题。

2 个回答

2

你的代码输出了

letter_counter = {'a': 1, ' ': 1, 'e': 1, 'h': 1, 'J': 1, 'm': 1, 'o': 2, 'n': 1, 's': 2, 'T': 1}
user_letter = ['o', 's', 'a', ' ', 'e', 'h', 'J', 'm', 'n', 'T']

这都是正确的。

如果你只想要重复的字母,可以试试

user_letter = [letter for letter in letter_counter if letter_counter[letter] > 1]

或者类似的东西。

8
from collections import Counter
[letter for letter,count in Counter("Thomas Jones").items() if count > 1]

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。

撰写回答