Исправьте ошибку с вводом данных в список от пользователя

введите сюда описание изображения

Я протестировал свою программу с заранее заготовленными данными как в примере и все работает нормально, но эти данные должен вводить пользователь,как исправить вторую строчку чтобы пользователь мог делать ввод? просто у меня показывает ошибку

a = [input().split()]
s = [input().split() for _ in range(a[0])]
sumch=0
poz=[]

for i in range(a[0]):
  string = (''.join(s[i].split())).split('=')
  e = eval(string[0])
  sumch += e
  if e != int(string[1]):
     poz.append(i+1)

if poz: 
  print (a[1] - sumch); print (*poz)
else: 
  print (0)

введите сюда описание изображения


Ответы (1 шт):

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

если вы хотите получить набор целых чисел, то превратите строку в числа, например

nums = list(map(int, input().split()))

это касательно вашей 1 строчки:

a = [input().split()]

в таком виде ваша строка - это СПИСОК СПИСКА - ведь .split() уже делает список

если бы вы написали:

a = input().split()

то получили бы список строк, но вам нужны числа, а значит надо:

a = list(map(int, input().split()))

Касательно основного кода - вы зря использовали eval - там это не нужно

  string = (''.join(s[i].split())).split('=')
  e = eval(string[0])
  sumch += e
  if e != int(string[1]):
     poz.append(i+1)

А нужно разбить строку и вычленить числа, например так:

parts = text.split()

price = int(parts[0])
amount = int(parts[1][1:]) # отрезан первый символ '*'
cost = int(parts[2][1:])   # отрезан первый символ '='

#выполнить проверку
if price * amount != cost:

полный код:

# получить кол-во товаров в чеке и итоговую сумму
items_count, items_cost = list(map(int, input().split()))

# проанализировать корректность товаров в чеке
errors = []

for index in range(items_count):
    # получить запись чека и разбить ее на части
    parts = input().split()

    # сформировать информацию о товаре (стоимость, кол-во и цену)
    price = int(parts[0])
    amount = int(parts[1][1:]) # отрезан первый символ '*'
    cost = int(parts[2][1:])   # отрезан первый символ '='

    # вычесть из итоговой суммы сумму товара
    items_cost -= price * amount

    # проверить запись чека на корректность и в случае ошибки - записать позицию товара в чеке
    if price * amount != cost:
        errors.append(index + 1)

# вывести результат
print(items_cost)

if errors != []:
    print(*errors, sep=' ')
→ Ссылка