-4

我正在尝试编写一个可以为我计算毕达哥拉斯定理公式的代码,但是我无法将我的“raw_input()”中的答案添加到一个等式中以将它们加在一起。我做错了什么,但我不太确定是什么......请帮忙!

need = raw_input("What do you need to Use?")

if need == "pythagoras" or "Pythagoras":
    pythagoras = raw_input("What side do you Need?")

if pythagoras == "hypotenuse" or "Hypotenuse":
    k1 = raw_input("Known Side 1")
    k2 = raw_input("Known Side 2")
    print eval('str(k1) + str(k2)')
4

2 回答 2

2

您应该使用int()orfloat()将用户输入的数字转换为整数/浮点数,然后将公式应用于它们。

need == "pythagoras" or "Pythagoras"相当于:

(need == "pythagoras") or "Pythagoras"因此,如果need等于"pythagoras",则返回Trueelse 返回"Pythagoras"(即 True 值),换句话说,无论输入是什么,您的if条件始终是。True

工作代码:

need = raw_input("What do you need to Use?")
#use a while loop loop, this will continuously ask for the user input
#until he doesn't enters a corrects one.
while need.lower() != "pythagoras":  
    print "Invalid choice! try again"
    need = raw_input("What do you need to Use?")

pythagoras = raw_input("What side do you Need?")

if pythagoras.lower() == "hypotenuse":
    k1 = int(raw_input("Known Side 1: ")) #use int() to convert the user input to integers
    k2 = int(raw_input("Known Side 2: ")) # use float() if you want floats
    print (k1**2 + k2**2)**0.5            # now apply the formula
于 2013-06-14T11:40:56.583 回答
1

你有几个问题:

  • or没有按您预期的那样工作。在 python 中,你需要说if need == "pythagoras" or need == 'Pythagoras'. 这与您的第二个 if 语句相同。

  • 使用eval() 是个主意。没有它,您的结果很容易获得:

    str(k1) + str(k2)
    

但是,raw_input()返回一个string,(我假设)您想要将其转换为整数。您可以使用以下int()功能执行此操作:

k1 = int(raw_input("Known Side 1"))
k2 = int(raw_input("Known Side 2"))

现在输入将是一个整数而不是字符串。

此外,您可以简单地为您的 if 语句做if need.lower() == 'pythagoras'和。if pythagoras.lower() == 'hypotenuse'

于 2013-06-14T11:38:39.930 回答