Найти - Пользователи
Полная версия: Цикл for
Начало » Python для новичков » Цикл for
1
ElatedMIndGjss
Привет всем. Вот такой я написал код

 a = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
b = input("Ввод: ")
for a1 in a:
    count = 0
    for b1 in b:
        if a1 == b1:
            count += 1
        if count > 0:
            print(f"Букв {b1}: {count}")

В окно ввода ввожу: “юююееваа”
Результат выдает такой:
Букв а: 1
Букв а: 2
Букв в: 1
Букв а: 1
Букв а: 1
Букв е: 1
Букв е: 2
Букв в: 2
Букв а: 2
Букв а: 2
Букв ю: 1
Букв ю: 2
Букв ю: 3
Букв е: 3
Букв е: 3
Букв в: 3
Букв а: 3
Букв а: 3
Process finished with exit code 0

Вопрос: Почему некоторые буквы повторяются? Ведь цикл “for a1 in a:” должен перебирать все буквы алфавита поочерёдно и буквы не должны повторяться.
py.user.next
Надо тебе в собственный код добавить вывод скрытых значений. Тогда ты найдёшь причину ошибки.

Вывод скрытых значений можно добавить так
  
>>> def f():
...     a = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
...     b = input("Ввод: ")
...     for a1 in a:
...         count = 0
...         for b1 in b:
...             if a1 == b1:
...                 count += 1
...             if count > 0:
...                 print(f"Букв {b1}: {count}" + " " + str((a1, b1)))
... 
>>> f()
Ввод: юююееваа
Букв а: 1 ('а', 'а')
Букв а: 2 ('а', 'а')
Букв в: 1 ('в', 'в')
Букв а: 1 ('в', 'а')
Букв а: 1 ('в', 'а')
Букв е: 1 ('е', 'е')
Букв е: 2 ('е', 'е')
Букв в: 2 ('е', 'в')
Букв а: 2 ('е', 'а')
Букв а: 2 ('е', 'а')
Букв ю: 1 ('ю', 'ю')
Букв ю: 2 ('ю', 'ю')
Букв ю: 3 ('ю', 'ю')
Букв е: 3 ('ю', 'е')
Букв е: 3 ('ю', 'е')
Букв в: 3 ('ю', 'в')
Букв а: 3 ('ю', 'а')
Букв а: 3 ('ю', 'а')
>>>

Это более полный вывод, ничто не мешает его выводить
  
>>> def f():
...     a = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
...     b = input("Ввод: ")
...     for a1 in a:
...         count = 0
...         for b1 in b:
...             if a1 == b1:
...                 count += 1
...             if count > 0:
...                 print(f"Букв {b1}: {count}" + " " + str((a, b, a1, b1, count)))
... 
>>> f()
Ввод: юююееваа
Букв а: 1 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'а', 'а', 1)
Букв а: 2 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'а', 'а', 2)
Букв в: 1 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'в', 'в', 1)
Букв а: 1 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'в', 'а', 1)
Букв а: 1 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'в', 'а', 1)
Букв е: 1 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'е', 'е', 1)
Букв е: 2 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'е', 'е', 2)
Букв в: 2 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'е', 'в', 2)
Букв а: 2 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'е', 'а', 2)
Букв а: 2 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'е', 'а', 2)
Букв ю: 1 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'ю', 'ю', 1)
Букв ю: 2 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'ю', 'ю', 2)
Букв ю: 3 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'ю', 'ю', 3)
Букв е: 3 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'ю', 'е', 3)
Букв е: 3 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'ю', 'е', 3)
Букв в: 3 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'ю', 'в', 3)
Букв а: 3 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'ю', 'а', 3)
Букв а: 3 ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя', 'юююееваа', 'ю', 'а', 3)
>>>
mixer
 a = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
b = input("Ввод: ")
c = {x:0 for x in b}
for a1 in a:
    for b1 in b:
        if a1 == b1:
            c[a1] += 1
for k,v in c.items():
    print(f"Букв {k}: {v}")
# или (любые буквы посчитает)
from collections import Counter
c = Counter(input("Ввод: "))
for k,v in c.items():
    print(f"Букв {k}: {v}")
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB