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