Не выполняется код. Проценты в Питоне

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


     #Calculator test

vub = input("Что делать будем: Сравнивать(1), Считать(2) или Проценты(3): ") #Выбор что будут делать


def max(x, y): 

    if x > y:
        return "Больше число: " + str(x)

    else:
        return"Больше число: " + str(y)


def count():
    a = float( input("Введите первое число: ") ) #Число а в функции посчитать
    b = float( input("Введите второе число: ") ) #Число b в функции посчитать

    wh = input("Выберите действие (+, -, /, *): ")

    if wh == "+":
        c = a + b
        return"Результат: " + str(c)

    elif wh == "-":
        c = a - b
        return"Результат: " + str(c)

    elif wh == "/":
        c = a / b
        return"Результат: " + str(c)

    elif wh == "*":
        c = a * b
        return"Результат: " + str(c)

    else:
        print("Выбранна неверная операция! ")

def pro1():
    n = float( input("Введите число от которого нужно вычислить процент: ") ) #Число а в функции pro
    p = float( input("Введите процент который нужно найти: ") ) #Число b в функции pro
    rez = n * p / 100
    return "Результат:" + str(rez)



def pro2(): 
    n = float( input("Введите число от которого нужно прибавить процент: ") ) 
    p = float( input("Введите процент: ") )
    rez = n * (1 + p / 100)
    return "Результат:" + str(rez)

def pro3(): 
    n = float( input("Введите число от которого нужно отнять процент: ") ) 
    p = float( input("Введите процент: ") )
    rez = n * (1 - p / 100)
    return "Результат:" + str(rez)

def pro4():
    input("Выберите действие(+,-):") 
    if wp == "+":
        print(pro2())
    elif wp == "-":
        print(pro3())

def pro5():
    whp = float( input ("Что нужно делать: Проценты от числа(1), или Уменьшить/увеличить число на процент(2)"))
    if whp == "1":
        print(pro1())
    elif whp == "2":
        print(pro4())


if vub == "1":
    x = float( input("Введите первое число: ") )
    y = float( input("Введите второе число: ") )
    print(max(x, y))
    print("Действие завершено!")

elif vub == "2":
    print(count())
    print("Действие завершено!")

elif vub == "3":
    print(pro5())
    print("Действие завершено!")
else:
    print("Вы выбрали неверное действие! Повторите попытку!")

input()

Прошу прощения за кривой код, я правда только начал и не смог найти проблему в гугле


    Что делать будем: Сравнивать(1), Считать(2) или Проценты(3): 3
Что нужно делать: Проценты от числа(1), или Уменьшить/увеличить число на процент(2)2
None
Действие завершено!

Это выводит в командную строку


Ответы (1 шт):

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

В функции pro5 Вы конвертируете полученную от пользователя строку в число с плавающей точкой с помощью float().

А затем число сравниваете со строками.
Ни одно сравнение не истинно, поэтому функция возвращает None.

def pro5():
    whp = float( input ("Что нужно делать: Проценты от числа(1), или Уменьшить/увеличить число на процент(2)"))
#         ^^^^^^                                                                                              ^

Либо не конвертируйте ввод в число, либо сравнивайте с числами.

Пример:

def pro5():
    whp = input("Что нужно делать: Проценты от числа(1), или Уменьшить/увеличить число на процент(2)")


Кстати, есть ещё ошибки. Так в функции pro4 не присваивается результат ввода пользователя:

def pro4():
    input("Выберите действие(+,-):")
#   ^^^^^

А ещё Вы увидите 2 дополнительных None из-за того, что печатаете результаты функций pro5 и pro1/pro4, которые ничего не возвращают (а точнее возвращают этот самый None).

→ Ссылка