Задача из степика

я хочу осуществить ввод списка букв через пробел, чтобы можно было потом с ним работать. Задача из степика. вот ссылка https://stepik.org/lesson/3373/step/6?unit=956.

Программа должна считывать одну строку со стандартного ввода и выводить для каждого уникального слова в этой строке число его повторений (без учёта регистра) в формате "слово количество" (см. пример вывода). Порядок вывода слов может быть произвольным, каждое уникальное слово должно выводиться только один раз.

Sample Input 1:

a aa abC aa ac abc bcd a

Sample Output 1:

ac 1
a 2
abc 2
bcd 1
aa 2

Sample Input 2:

a A a

Sample 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 шт):

Автор решения: CrazyElf

Чтобы ваша программа заработала, достаточно исправить первые две строки, заодно объединив их в одну:

n = [i for i in input().lower().split()]

Пояснение:

  • lower() надо применять к исходной строке, а не к списку после разбиения (хотя можно её применить потом к каждому элементу этого списка, но проще уж сразу)
  • split() - это функция, её надо вызывать со скобками

Как напечатать в конце элементы словаря нужным образом попробуйте сами всё-таки догадаться и написать, это просто и можно сделать разными способами.

→ Ссылка
Автор решения: gil9red

Нужно:

  • Привести в нижний регистр (lower)
  • Разделить по пробелу
  • Подсчитать (самое простое через Counter)

Пример:

from collections import Counter
for w, c in Counter(input().lower().split()).items():
    print(w, c)
→ Ссылка
Автор решения: whizz169

Можно через генератор словарей, потом просто распечатывать пары ключ значение

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)
→ Ссылка