Задать вопрос
@Emince

Почему не считаются символы в строке?

Добрый день! Необходимо сделать подсчёт символов в строке примитивами, код:

def count_letters()

text = str(input('Введите текст: '))
number = str(input('Какую цифру ищем? '))
letter = str(input('Какую букву ищем? '))


def count_letters(text, number, letter):
    result = list(text)
    num_count = 0
    text_count = 0
    index = len(text)
    for i in range(0, index + 1, 1):
        if number == result:
            num_count += 1
        elif letter == result:
            text_count += 1
    print('Количество цифр', number, ':', num_count)
    print('Количество цифр', letter, ':', text_count)

count_letters(text, number, letter)


Не могу понять, где ошибка...
  • Вопрос задан
  • 142 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@kaka888
C, C++, Qt, Python Flask, MySQL, Lua
На каждой итерации цикла for вы сравниваете строку number со списком result и строку letter со списком result, что странно. Задайте себе вопрос: может ли буква равняться списку букв? Это совершенно разные типы данных.

Инпуты не надо оборачивать в str, т.к. input и так возвращает всегда значение типа str.

Исправленный и более удобный вариант:
def count_letters(text, letters):
    letter_counters = [0 for _ in range(len(letters))]
    for current_letter in text:
        for index, letter in enumerate(letters):
            if current_letter == letter:
                letter_counters[index] += 1
    return letter_counters

text = input('Текст: ')
number = input('Какую цифру ищем: ')
letter = input('Какую букву ищем: ')

number_count, letter_count = count_letters(text, (number, letter))

print('Количество цифр', number, ':', number_count)
print('Количество букв', letter, ':', letter_count)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Ошибка в том, что не используется result в цикле for

Ну и накорябал свой велосипед:
result = {'цифр': [0, None], 'букв': [0, None]}
text = input('Введите текст: ')
for key in result:
    result[key][1] = input(f'Какую {key}у ищем? ')
for symbol in text:
    for key in result:
        result[key][0] += int(symbol == result[key][1])       
for key in result:
    print(f'Количество {key} {result[key][1]} : {result[key][0]}')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы