Python

Помогите с кодом

На вход программе подается неопределенное количество строк, каждая из которых содержит произвольное значение. Напишите программу с использованием конструкции try-except, которая выводит сумму всех введенных чисел, а затем — количество введенных нечисловых значений.
Формат входных данных
На вход программе подается неопределенное количество строк (хотя бы одна), каждая из которых содержит произвольное значение.
Формат выходных данных
Программа должна вывести сумму всех введенных чисел (тип int и float), а затем на следующей строке — количество введенных нечисловых значений.
Примечание 1. Если ни одно число введено не было, то сумма равна 0.
Примечание 2. Рассмотрим первый тест. Имеем три введенных числа, сумма которых равна:100+10+1.1=111.1Также три нечисловых значения, а именно: i'm number!, [1, 99], {'math', 'physics'}.
Pak Soi
Pak Soi
337
А как мы поймём, что ввод закончился? Если "неопределенное количество строк", значит должен быть какой-то признак завершения ввода.
 n, s = 0, 0
for v in iter(input, ''):
try: n += float(v)
except: s += 1
print(n, s, sep='\n')
Сейчас завершение ввода - пустая строка.
Надо что-то другое, меняешь '' на нужную строку.
Максим Лысенко
Максим Лысенко
81 115
Лучший ответ
Pak Soi Там же написано: Программа должна вывести сумму всех введенных чисел (тип int и float), а затем на следующей строке — количество введенных нечисловых значений.
Pak Soi А ещё же 2 примечания:
Примечание 1. Если ни одно число введено не было, то сумма равна 0.

Примечание 2. Рассмотрим первый тест. Имеем три введенных числа, сумма которых равна:100+10+1.1=111.1Также три нечисловых значения, а именно: i'm number!, [1, 99], {'math', 'physics'}.
На вход программе подается неопределенное количество строк, каждая из которых содержит произвольное значение. Напишите программу с использованием конструкции try-except, которая выводит сумму всех введенных чисел, а затем — количество введенных нечисловых значений. Формат входных данных На вход программе подается неопределенное количество строк (хотя бы одна), каждая из которых содержит произвольное значение. Формат выходных данных Программа должна вывести сумму всех введенных чисел (тип int и float), а затем на следующей строке — количество введенных нечисловых значений. Примечание 1. Если ни одно число введено не было, то сумма равна 0. Примечание 2. Рассмотрим первый тест. Имеем три введенных числа, сумма которых равна:100+10+1.1=111.1Также три нечисловых значения, а именно: i'm number!, [1, 99], {'math', 'physics'}.
Ниже приведен пример кода на Python, который использует конструкцию try-except для реализации описанной в задании логики:

non_numbers_count = 0
numbers_sum = 0

while True:
try:
line = input()
number = float(line)
numbers_sum += number
except ValueError:
non_numbers_count += 1
except EOFError:
break

print(numbers_sum)
print(non_numbers_count)
В этом коде используется бесконечный цикл while, который продолжается до тех пор, пока не будет получен конец файла (EOF). В каждой итерации цикла программа пытается преобразовать введенную строку в число с помощью функции float(). Если это удается, то число добавляется к сумме. Если преобразовать строку в число не удалось, это означает, что в строке был введен нечисловой символ, и счетчик нечисловых
Андрей Перов
Андрей Перов
5 054
Pak Soi Только сначала всё идёт через с def try-except
Pak Soi Дайте кто нибудь вразумительный ответ на эту задачу