我的代码跳过IF块并转到ELSE

时间:2016-09-17 14:49:10

标签: python

几个小时前刚开始使用python并遇到问题。 打击片段显示,最初我将userInput存储为1或2,然后执行if块。问题是代码直接跳转到else(即使我在控制台窗口中输入1)。 我知道我犯了一个简单的错误,但任何帮助都会受到赞赏。

使用Python 3.5 ===在Visual Studio 2015中运行===特别是cPython

userInput = float(input("Choose 1 (calculator) or 2 (area check)\n"))
if(userInput =='1') :
    shape = input("Please enter name of shape you would like to calculate the area for\n")

if(shape == 'triangle') :
    base = int(input("Please enter length of BASE\n"))
    height = int(input("Please enter HEIGHT\n"))
    print("The area of the triangle is %f" % ((base * height)*0.5))

elif (shape == 'circle') :
    radius = int(input("Please enter RADIUS\n"))
    print("The Area of the circle is %f" % ((radius**2)*22/7))

elif (shape == 'square') :
    length = int(input("Please Enter LENGTH\n"))
    print("The area of the square is %f" % ((length**2)*4))

else :
    initial1 = float(input("Please enter a number\n"))
    sign1 = input("please enter either +,-,*,/ \nwhen you wish to exit please type exit\n")
    initial2 = float(input("Please enter number 2\n"))
if(sign1 == '+') :
    answer = float(initial1) + float(initial2)
    print(answer)
elif(sign1 == '*') :
    answer = float(initial1) * float(initial2)
    print(answer)
elif(sign1 == '-') :
    answer = float(initial1) - float(initial2)
    print(answer)
elif(sign1 == '/') :
    answer = float(initial1) / float(initial2)
    print(answer)

PS。如果[可能]你能尽可能保持基本的帮助,因为我想确保我完全理解基础知识。

感谢所有的帮助!! :d

1 个答案:

答案 0 :(得分:1)

您正在将输入转换为float,但检查数字的字符串。将其更改为:

If userInput == 1.0:

或者更好的是,保持原样并且不要将用户输入转换为浮动状态。如果您想对其进行数学运算,则只需将输入转换为floatint。在您的情况下,您只是将其用作选项,因此您可以将其保留为字符串:

userInput = input("Choose 1 (calculator) or 2 (area check)\n")

P.S。确保在Python中使用缩进非常小心。我假设您的缩进在代码编辑器中是正确的,但在粘贴到此站点时也要小心。您在此处拥有相同级别的所有内容,但是您的某些if块需要进一步缩进,以便您的程序正常运行。