字母数字重复字符计数器

问题描述 投票:1回答:2

我正在编写一小段代码来练习学习python。注意,我现在不担心错误处理,而只是功能块。

用户输入字母数字字符串,输出以显示输入中每个字符的计数

 input = "poop"
 desired output = p:2, o:2
 current output = p:1, o:1

我已将所有内容写成直方图和for循环来收集每个字符的计数,但是当我的for循环运行时,我只会返回1的计数。有人可以帮助我说明为什么字符不正确吗?计数不止一次吗?

我的代码在下面。

    s = input("Enter alphanumeric: ")
    print(s)

    l = []

    for char in s:
        l.append(char)
    print(l)

    letter_histogram = dict.fromkeys(l,0)
    print(letter_histogram)

    for char in letter_histogram:
        letter_histogram[char] = letter_histogram[char] + 1
    print(letter_histogram)
python for-loop counting
2个回答
1
投票

您应该遍历用户输入,而不是字典

for char in s:
    letter_histogram[char] += 1

1
投票

更好地使用此方法,它更具可读性,您可以使用set对唯一字符进行分组,然后使用.count字符串方法查找出现的次数,例如:

sample = "poop"
letters = set(sample)
histogram = {
    letter: sample.count(letter) for letter in letters
}
print(histogram)

>>> {'p': 2, 'o': 2}
© www.soinside.com 2019 - 2024. All rights reserved.