Задать вопрос
@GorAndI

Почему функция возвращает None?

Доброго времени суток. Решил начать самообучаться азам Python. Сейчас играюсь с функциями и return. Написал вот такой калькулятор, но он возвращает None, хотя весь код исполняется.

Подскажите, пожалуйста, в чем я ошибаюсь. Самостоятельный поиск в гугле не помог.

#Вычисляем факториал
def factorial(num1):
	if num1 == 1:
		return 1
	elif num1 > 0:
		return num1 * factorial (num1 - 1)
	else:
		return ('Не верное число')

#Вычисляем сумму
def summa(num1, num2):
	return (num1 + num2)

#Вычисляем разность
def raznost(num1, num2):
	return (num1 - num2)

#Вычисляем произведение
def proisvedenie(num1, num2):
	return (num1 * num2)

#Вычисляем деление
def delenie(num1, num2):
	if num2 == 0:
		return ('Делить на 0 нельзя')
	else:
		return (num1 / num2)

#Определяем что делать
def deistvie(znak, num1, num2):
	if znak == '!':
		factorial(num1)
	elif znak == '+':
		summa(num1, num2)
	elif znak == '-':
		raznost(num1, num2)
	elif znak == '*':
		proisvedenie(num1, num2)
	elif znak == '/':
		delenie(num1, num2)
	else:
		return ('Нет такого действия')

#Получаем данные
def inputs():
	num1 = float(input('Введите число: '))
	znak = input('Введите знак (+, -, *, /, !): ')
	if znak == '!':
		num2 = ''
	else:
		num2 = float(input('Введите второе число: '))
	deistvie (znak, num1, num2)

print (inputs())
  • Вопрос задан
  • 7212 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
@aby125
В вашей функции deistvie происходит просто вызов функций сложение, вычитания, умножения и т.д. И вы с ними ничего не делатете, т.е. как вариант, это выводить результат, например так:
#Определяем что делать
def deistvie(znak, num1, num2):
  if znak == '!':
    print(factorial(num1))
  elif znak == '+':
    print(summa(num1, num2))
  elif znak == '-':
    print(raznost(num1, num2))
  elif znak == '*':
    print(proisvedenie(num1, num2))
  elif znak == '/':
    print(delenie(num1, num2))
  else:
    return ('Нет такого действия')

либо надо возвращать значения в deistvie и в inputs, т.е. таким образом
#Определяем что делать
def deistvie(znak, num1, num2):
  if znak == '!':
    return factorial(num1)
  elif znak == '+':
    return summa(num1, num2)
  elif znak == '-':
    return raznost(num1, num2)
  elif znak == '*':
    return proisvedenie(num1, num2)
  elif znak == '/':
    return delenie(num1, num2)
  else:
    return ('Нет такого действия')
#Получаем данные
def inputs():
  num1 = float(input('Введите число: '))
  znak = input('Введите знак (+, -, *, /, !): ')
  if znak == '!':
    num2 = ''
  else:
    num2 = float(input('Введите второе число: '))
  return deistvie (znak, num1, num2)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Вы ничего не возвращаете из inputs. Можно сказать, что возвращаете ничего. То есть None.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽