python OR语句指向错误的IF / ELSE的麻烦

时间:2014-12-14 16:10:24

标签: python

我正在编写一个简单的程序来计算不同形状的面积。问题是当我包含一个OR语句时,它会指向错误的if语句。这很难解释,我找不到合适的词来获得有意义的结果,所以我在这里。这是代码。

import time
import math
import sys

def calc():
    shape = input("Circle, Square/Rectangle, or Triangle?: ")
    if shape.lower() == "circle":
        rad = int(input("Enter the radius of the circle: "))
        pi = float(math.pi)
        area = float((rad*rad)*pi)
        #rounded = round(area, 3)
        print("The area of your circle is: ", area)
        again()
    elif shape.lower() == "square":
        L = int(input("Enter Length: "))
        H = int(input("Enter Height: "))
        area = float(L*H)
        print("The area is ", area)
        again()
    elif shape.lower() == "triangle":
        base = int(input("Enter the base: "))
        height = int(input("Enter the Height: "))
        area = int((base*height)/2)
        print("The area of your triangle is.. ", area)
        again()

def again():
    ag = input("Again?")
    if ag == "y":
        calc()
    else:
        sys.exit
calc()

我想接受广场的两个值。通过将其更改为此可接受方形或矩形。最后,它会在底部运行代码,询问用户是否有其他形状。

elif shape.lower() == "square" or "rectangle":
    L = int(input("Enter Length: "))
    H = int(input("Enter Height: "))
    area = float(L*H)
    print("The area is ", area)
    again()

def again():
    ag = input("Again?")
    if ag.lower == "y" or "yes":
        calc()
elif ag.lower() == "n" or "no":
    sys.exit

当我在任何其他程序中运行此代码时,接受两个值没有问题。使用这个程序,当我输入“triangle”时,它会完全跳过三角形并返回长度/高度提示,就好像我输入了square。如果我删除方形的OR部分,它没有问题转到三角形。

退出脚本也是如此。如果我将OR留在那里,它会完全跳过退出提示。如果我输入Y或YES,它会再次运行。如果我输入N或NO,它会再次运行。当我拿出OR部分时,它再次运行没有问题。

我知道我可以为矩形创建一个单独的IF / ELSE,并且值是相同的,但这是我之前遇到过的一个问题,我想帮助解决它。任何人都可以对这个问题有所了解吗?

0 个答案:

没有答案