Помогите с решением

Дано натуральное число. Напишите программу, которая вычисляет:

  1. сумму его цифр;
  2. количество цифр в нем;
  3. произведение его цифр;
  4. среднее арифметическое его цифр;
  5. его первую цифру;
  6. сумму его первой и последней цифры.

Формат входных данных На вход программе подается одно натуральное число.

Формат выходных данных

Программа должна вывести значения указанных величин в указанном порядке.

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 шт):

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

Идея правильная, исполнение не очень

  1. сначала сформируйте список цифр и от этого пляшите

     value = int(input())
    
     digits = []
    
     while value != 0:
         digits.append(value % 10)
         value //= 10
    
  2. а дальше работайте со списком как хотите, например

сумма первой и последней цифр:

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))
→ Ссылка
Автор решения: Kers

Предложу чуть другой вариант. Не приводите ввод к цифрам он вам в начале мешает.

n = input() # Получите строку

l = [] # в l получите список цифр
for i in x:
    l.append(int(i)) # Получаем число

А дальше почти все вычислений в принт можно писать сразу. Только с произведением чуть подумать. Например print("Среднее арифм:", sum(l)/len(l)). Если возникнут вопросы дополню.

→ Ссылка
Автор решения: n1tr0xs

Вот так можно:

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)
→ Ссылка