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

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

Похожие вопросы