Задача из степика
я хочу осуществить ввод списка букв через пробел, чтобы можно было потом с ним работать. Задача из степика. вот ссылка https://stepik.org/lesson/3373/step/6?unit=956.
Программа должна считывать одну строку со стандартного ввода и выводить для каждого уникального слова в этой строке число его повторений (без учёта регистра) в формате "слово количество" (см. пример вывода). Порядок вывода слов может быть произвольным, каждое уникальное слово должно выводиться только один раз.
Sample Input 1:
a aa abC aa ac abc bcd aSample Output 1:
ac 1 a 2 abc 2 bcd 1 aa 2Sample Input 2:
a A aSample Output 2:
a 3
Не знаю сам как это сделать.
a aa abC aa ac abc bcd a
n=[i for i in input().split]
n.lower()
print (n)
m={}
for i in n:
s=n.count(i)
if i not in m:
m[i]=s
print (m)
Ответы (3 шт):
Чтобы ваша программа заработала, достаточно исправить первые две строки, заодно объединив их в одну:
n = [i for i in input().lower().split()]
Пояснение:
lower()надо применять к исходной строке, а не к списку после разбиения (хотя можно её применить потом к каждому элементу этого списка, но проще уж сразу)split()- это функция, её надо вызывать со скобками
Как напечатать в конце элементы словаря нужным образом попробуйте сами всё-таки догадаться и написать, это просто и можно сделать разными способами.
Нужно:
- Привести в нижний регистр (
lower) - Разделить по пробелу
- Подсчитать (самое простое через
Counter)
Пример:
from collections import Counter
for w, c in Counter(input().lower().split()).items():
print(w, c)
Можно через генератор словарей, потом просто распечатывать пары ключ значение
a = [i.lower() for i in input().split()]
b = {i:a.count(i) for i in a}
for key, value in b.items():
print(key, value)