Python

Информатика питон помогите пожалуйста

Написать программу. Она должна запрашивать у пользователя 5 чисел.
Среди этих чисел найти число с самой большой последней цифрой, а также
найти сумму всех 5 чисел и вывести данные значения на экран
Рекомендуемое количество переменных – 2 .
"Сумма цифр"? Может быть, "Сумма чисел"?

Двухпроходный алгоритм, хранящий все числа в памяти, переменная - всего одна (nums).
 nums = list(map(int, map(input, ["Введите число: "] * 5)))
print(
f"Число с максимальной последней цифрой: {max(nums, key = (10).__rmod__)}",
f"Сумма цифр: {sum(nums)}",
sep = '\n'
)
Это - самый простой по записи в коде вариант реализации. К сожалению, он не очень эффективен. Поэтому можно рассмотреть другие варианты.

Однопроходный алгоритм, использующий ровно две переменные (параметры лямбды):
 from functools import reduce

print(
*map(
': '.join,
zip(
("Число с максимальной последней цифрой", "Сумма цифр"),
map(
str,
reduce(
lambda t, n: (max(t[0], n, key = (10).__rmod__), t[1] + n),
map(int, map(input, ["Введите число: "] * 4)),
(int(input("Введите число: ")),) * 2
)
)
)
),
sep = '\n'
)
Разбил на строчки для читабельности.
В памяти хранится только одно обрабатываемое число и агрегаты. Правда, ещё хранится список из приглашений ("Введите число: "). Этот недостаток можно устранить при помощи функции repeat из itertools, т.е. вместо
 map(int, map(input, ["Введите число: "] * 4)) 
вводить числа такой конструкцией:
 map(int, map(input, repeat("Введите число: ", 4))) 

Ещё можно избавиться от лямбды и её параметров, оставив чисто комбинаторную логику Шейнфинкеля-Карри и одновременно сохранив однопроходный алгоритм с низкими требованиями по памяти. Вот так - вполне аппликативненько:
 from functools import partial, reduce

print(
*map(
': '.join,
zip(
("Число с максимальной последней цифрой", "Сумма цифр"),
map(
str,
reduce(
partial(
map,
partial.__call__,
(partial(max, key = (10).__rmod__), partial(int.__add__))
),
map(
tuple.__mul__,
zip(map(int, map(input, ["Введите число: "] * 4))),
[2] * 4
),
(int(input("Введите число: ")),) * 2
)
)
)
),
sep = '\n'
)
Здесь переменных нет совсем.
Умножения списков оставлены для наглядности, а для производительности лучше переделать их на repeat, как я описал выше.
Частичная аппликация для int.__add__ алгоритму не нужна, но я как-то не нашёл в Питоне универсального типа, к которому можно применить любой __call__. Поэтому partial для этой функции работает исключительно, как обёртка.
Ещё, конечно, есть вопросы к константам (они выпадают из чистого ФП), можно и их устранить, но тогда программа совсем разрастётся. Не хватает в Питоне достаточно лаконичных функциональных конструкций.
ВЧ
Виталий Чаднов
87 571
Лучший ответ
Вот пример программы на Python, которая запрашивает у пользователя 5 чисел, находит число с самой большой последней цифрой и сумму всех 5 чисел, а затем выводит эти значения на экран:
 max_num = 0 
sum_num = 0

for i in range(5):
num = int(input("Введите число: "))
sum_num += num
last_digit = num % 10
if last_digit > max_num % 10:
max_num = num

print("Число с максимальной последней цифрой:", max_num)
print("Сумма цифр:", sum_num)
В этой программе мы используем цикл for, чтобы запрашивать у пользователя 5 чисел. Мы также используем две переменные: max_num для хранения числа с самой большой последней цифрой и sum_num для хранения суммы всех 5 чисел.
Внутри цикла мы добавляем каждое число к sum_num и находим последнюю цифру числа с помощью операции %. Затем мы сравниваем последнюю цифру с последней цифрой max_num и, если она больше, присваиваем max_num значение этого числа.
Наконец, мы выводим значения max_num и sum_num на экран с помощью функции print().
Анатолий Солдатов Что так долго отвечал?
Виталий Чаднов 5 переменных, а в задании рекомендуется 2.
 max_num = None 
sum_nums = 0

for i in range(5):
num = int(input("Введите число: "))
sum_nums += num

last_digit = num % 10

if max_num is None or last_digit > max_num % 10:
max_num = num

print("Сумма чисел: ", sum_nums)
print("Число с самой большой последней цифрой: ", max_num)
Виталий Чаднов 5 переменных, а в задании рекомендуется 2.