Счетчик повторяющихся символов для буквенно-цифровых символов - PullRequest
1 голос
/ 11 февраля 2020

Я пишу небольшой фрагмент кода, чтобы попрактиковаться в обучении python. Примечание. Сейчас меня не беспокоит обработка ошибок, просто функциональная часть.

Пользователь вводит строку alphanumeri c, вывод которой показывает количество для каждого символа во вводе

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

Я записал все до гистограммы и для l oop, чтобы собрать счет каждого символа, но когда мой для l oop запускает, я всегда возвращаю счет 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)

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Используйте этот подход лучше, он более читабелен, вы можете использовать set для группировки уникальных символов и затем .count метод строки для определения количества вхождений, например:

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

>>> {'p': 2, 'o': 2}
1 голос
/ 11 февраля 2020

Вы должны перебирать ввод пользователя, а не свой словарь

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