Я ожидал, что код запросит у меня ввод столько раз, сколько я захочу, а затем распечатает количество раз, когда ввод был введен вместе с именем, написанным с заглавной буквы. Однако он распечатывает только последний ввод с 1 перед входом.
Можете ли вы сказать, где я ошибаюсь
while True:
try:
lst = [
input('Enter name here: ')
]
except (KeyboardInterrupt):
for n in lst:
print(lst.count(n), n.upper())
Вы назначаете lst
вместо добавления
Следуя комментарию @MichaelButscher, вам также необходимо увеличивать n на 1 после каждого ввода.
Вам нужно добавить имя, взятое из ввода, к lst
, но вместо этого вы присваиваете lst
списку только самых новых имен, введенных пользователем.
Используйте lst.append(input(...))
Кроме того, у вас есть еще одна проблема в вашем коде: ваш код никогда не завершится, пока вы не закроете терминал. Это связано с тем, что вы обрабатываете ошибку KeyboardInterruput, но на самом деле вы не останавливаете цикл while, поэтому он никогда не закончится. для этого вам нужно добавить перерыв после списка.
lst = []
while True:
try:
lst.append(input('Enter name here: '))
except KeyboardInterrupt:
print()
for n in set(lst): # use set so that it will not print data for duplicate names
print(lst.count(n), n.upper())
exit()
Enter name here: asd
Enter name here: asd
Enter name here: asd
Enter name here: a
Enter name here: d
Enter name here: qw
Enter name here: a
Enter name here: sd
Enter name here: asd
Enter name here:
1 D
1 QW
1 SD
4 ASD
2 A
Другой способ: если вы хотите, чтобы цикл выполнялся только n раз, вы тоже это делаете.
n = 10
lst = []
for i in range(n):
lst.append(input('Enter name here: '))
print() # just for one line space
for n in set(lst):
print(lst.count(n), n.upper())
Оу чувак, спасибо тебе огромное. Я вижу, где я ошибся
В вашем коде есть некоторые проблемы, например:
Вам следует использовать следующий код:
l = []
try:
while True:
name = input('Enter name here: ')
l.append(name)
except KeyboardInterrupt:
for name in set(l):
print(l.count(name), name.capitalize())
Вы назначаете
lst
список, состоящий из одного элемента, который является результатом ввода пользователя. И вы делаете это снова и снова (назначая один элемент пользовательского ввода).