Nestes if в Python не работает и математический модуль неисправен

В этом коде я сначала спрашиваю пользователя о тригонометрической функции, а затем спрашиваю угол в радианах или градусах. в соответствии с кодом консоль должна выводить сообщение об ошибке, но при запуске кода первые операторы if принимают любой ввод как true. окончательное копируемое значение также имеет значение. Пожалуйста, предложите, что делать, и любые другие соответствующие изменения, которые можно внести в код.

from math import *
trigFunc = str(input("What function do you want to use? Sine, Cosine or Tangent: "))
if trigFunc.lower == "sine" :
    radOrDeg = str(input("Do you want to input the value as radians or degrees? "))
    if radOrDeg.lower == "radians" :
        angle = int(input("Please input the value of the angle: "))
        print(math.sin(angle))
    elif radOrDeg.lower == "degrees" :
        angle = int(input("Please input the value of the angle: "))
        radAngle = int(math.radians(angle))
        print(math.sin(radAngle))
    else:
        print("error")
elif trigFunc.lower == "cosine" :
    radOrDeg = str(input("Do you want to input the value as radians or degrees? "))
    if radOrDeg.lower == "radians" :
        angle = int(input("Please input the value of the angle: "))
        print(math.cos(angle))
    elif radOrDeg.lower == "degrees" :
        angle = int(input("Please input the value of the angle: "))
        radAngle = int(math.radians(angle))
        print(math.cos(radAngle))
    else:
        print("error")
elif trigFunc.lower == "tangent" :
    radOrDeg = str(input("Do you want to input the value as radians or degrees? "))
    if radOrDeg.lower == "radians" :
        angle = int(input("Please input the value of the angle: "))
        print(math.tan(angle))
    elif radOrDeg.lower == "degrees" :
        angle = int(input("Please input the value of the angle: "))
        radAngle = int(math.radians(angle))
        print(math.tan(radAngle))
    else:
        print("error")
else:
    print("ERROR, the function cannot be used")
input("press enter to exit")

2 ответа

Решение

.lower это функция, и вам нужно вызвать ее, чтобы вернуть строку. Прямо сейчас вы сравниваете функцию со строкой, которая будет возвращать False,

+ Изменить trigFunc.lower в trigFunc.lower(),

https://docs.python.org/3/library/stdtypes.html

В вашем коде есть несколько ошибок. Вот что я изменил, чтобы ваш код работал:

  1. использование trigFunc.lower() вместо trigFunc.lower, Вам нужно вызвать метод, чтобы получить желаемый результат.
  2. использование import math вместо from math import *, так как вы ссылаетесь на math Библиотека повсюду.
  3. использование math.radians(int(angle)) вместо int(math.radians(angle)), поскольку math.radians не принимает строку в качестве входных данных.
Другие вопросы по тегам