我需要帮助将变量/字符串添加到方程式中

时间:2013-06-14 11:36:12

标签: python

我正在尝试制作一个可以为我计算毕达哥拉斯定理公式的代码,但是我无法将我的'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)')

2 个答案:

答案 0 :(得分:2)

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

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

(need == "pythagoras") or "Pythagoras"因此,如果need等于"pythagoras",则返回True,否则返回"Pythagoras"(即真值),换言之,{{1}无论输入是什么,条件总是if

工作代码:

True

答案 1 :(得分:1)

你有几个问题:

  • or并不像您期望的那样工作。在python中,您需要说if need == "pythagoras" or need == 'Pythagoras'。这与你的第二个if语句相同。

  • 使用eval() is a bad idea。没有它你的结果很容易获得:

    str(k1) + str(k2)
    

但是,raw_input()会返回一个字符串,我希望将其转换为整数(我想假设)。您可以使用int()函数执行此操作:

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

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

此外,您只需为{if-statement>执行if need.lower() == 'pythagoras'if pythagoras.lower() == 'hypotenuse'