Python Почему не работает код
Написал код который считает количество цифр в списке. Но он не работает, что я делаю не так? Вот сам код:
p2 = list(p1) #Ввод превращает в список
count1 = [0, 0] #Создаем спиок для подсчета количества цифр
#Цикл, если в спике есть "1" то count1[0] увел. на 1, тоже самое с 2, если ввели другой символ, то его пропускаем
for ans in count1:
if ans == 1:
count1[1] += 1
elif ans == 2:
count1[2] += 1
else:
continue
print(p2)
print(count1)
допустим написали мы в ввод: 11212 и он выводит:
['1', '1', '2', '1', '2']
[0, 0]
но должен выводить так:
['1', '1', '2', '1', '2']
[3, 2]
3 означает что там единиц 3шт, а двоек 2шт
Ответы (2 шт):
Вы пускаете цикл не по тому списку. Список
count1у вас является выходными данными, а списокp2- входными (сами же это и написали). Таким образом вам нужно пускать цикл не поcount1а поp2.Более того, вы в примере указали такой входной список:
['1', '1', '2', '1', '2']. В этом списке элементы типаstring(строка), а у вас в коде вы сравниваете строку с числом:if ans == 1: # ans - строка, 1 - число.Так же не стоит создавать 2 переменны
p1иp2ради 1 ввода. Достаточно написать так:p1 = input() # Получаем входные данныеp1 = p1.list() # Преобразовываем в список
Или же:
p1 = input().list()
- И наконец, нумерация элементов в списках начинается с 0, а не с 1. Таким образом у вас нет элемента с индексом
2в спискеcount1.
В итоге вот как должен выглядеть код:
p1 = input().list() # Получаем входные данные и сразу преобразовываем их в список
count1 = [0, 0] #Создаем спиок для подсчета количества цифр
#Цикл, если в спике **p1** есть "1" то count1[0] увел. на 1, тоже самое с 2, если ввели другой символ, то его пропускаем
for ans in count1:
if int(ans) == 1: # т.к. все элементы в списке типа string, а сравниваем мы с числом, пробразовываем элемент в тип integer.
count1[0] += 1 # Нумерация в списках начинается с 0.
elif int(ans) == 2:
count1[1] += 1
else:
continue
print(p2)
print(count1)
Можно решить так:
a = {'1': 0, '2': 0}
for i in input():
if i in a:
a[i] += 1
print([a['1'], a['2']])
а можно так:
from collections import Counter
a = Counter(input())
print([a['1'], a['2']])