@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())
  • Вопрос задан
  • 7012 просмотров
Решения вопроса 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.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы