Помогите с решением
Дано натуральное число. Напишите программу, которая вычисляет:
- сумму его цифр;
- количество цифр в нем;
- произведение его цифр;
- среднее арифметическое его цифр;
- его первую цифру;
- сумму его первой и последней цифры.
Формат входных данных На вход программе подается одно натуральное число.
Формат выходных данных
Программа должна вывести значения указанных величин в указанном порядке.
INPUT
5678
OUTPUT
26
4
1680
6.5
5
13
МОЙ ОТВЕТ:
n = int(input())
m = 1
print(sum(map(0, n)))
print(len(n))
while n > 0:
m *= n % 10
n = n // 10
print(m)
print(sum(map(int, n)) / len(n))
print(n[0])
print(int(n[0]) + int(n[-1]))
Ответы (3 шт):
Идея правильная, исполнение не очень
сначала сформируйте список цифр и от этого пляшите
value = int(input()) digits = [] while value != 0: digits.append(value % 10) value //= 10а дальше работайте со списком как хотите, например
сумма первой и последней цифр:
res = digits[0] + digits[-1]
правда надо учесть ситуацию, когда всего 1 цифра в числе
res = (digits[0] + digits[-1]) if len(digits) > 1 else digits[0]
P.S.
кстати список цифр можно получить так (без всяких while в 1 строчку):
digits = list(map(int, str(value))
Предложу чуть другой вариант. Не приводите ввод к цифрам он вам в начале мешает.
n = input() # Получите строку
l = [] # в l получите список цифр
for i in x:
l.append(int(i)) # Получаем число
А дальше почти все вычислений в принт можно писать сразу. Только с произведением чуть подумать. Например print("Среднее арифм:", sum(l)/len(l)). Если возникнут вопросы дополню.
Вот так можно:
n = list(map(int, input()))
_sum = sum(n)
_len = len(n)
f = 1
for x in n:
f *= x
print(_sum)
print(_len)
print(f)
print(_sum/_len)
print(n[0])
print(n[0]+n[1] if _len > 1 else 0)