用Python计算三角形的面积和周长?

时间:2015-02-11 22:01:23

标签: python

嘿伙计们,我在输出三角形的面积和周长方面存在问题,因为两侧使用了Heron的公式。这是我的代码:

def main():

a = int(input('Enter first side: '))
b = int(input('Enter second side: '))
c = int(input('Enter third side: '))

def area():

    # calculate the sides
    s = (a + b + c) / 2

    # calculate the area
    area = (s*(s-a)*(s-b)*(s-c)) ** 0.5

    return area

area()

def perimeter():

    # Calculate the perimeter
    perim = a + b + c

    return perim

perimeter()


print( 'Area is: ',format(area,'.1f'))
print( 'Perimeter is: ',format(perim,',.1f'))


main()

我收到很多错误,比如

  • TypeError:传递给object的非空格式字符串。格式
  • NameError:name' perim'未定义

我应该这样做的方法是在主函数中询问各边,然后调用第二个,然后输出一个小数位的答案。

有人可以告诉我我做错了吗?

3 个答案:

答案 0 :(得分:2)

您需要指定返回的值并使三个边长度为全局。老实说,您应该阅读有关变量范围的更多信息,这些变量范围是定义变量的级别。此外,您的变量名称不应覆盖您的函数名称。通过这种方式,您可以稍后在脚本中的任何位置重用这些小函数,只需调用它们并传递三个参数即可。

例如:

def area(a, b, c):
    # calculate the sides
    s = (a + b + c) / 2
    # calculate the area
    area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
    return area

def perimeter(a, b, c):
    # Calculate the perimeter
    perim = a + b + c
    return perim

def main():   
    a = int(input('Enter first side: '))
    b = int(input('Enter second side: '))
    c = int(input('Enter third side: '))

    print "Area is:", area(a, b, c)
    print "Perimeter is:", perimeter(a, b, c)

main()

这应该是一种更简洁的方法,你只需从主线程中调用一个函数。您将避免在原始代码中声明全局变量和大量乱七八糟(无攻击性)。

答案 1 :(得分:0)

您需要指定返回的值并使三个边长度为全局。老实说,您应该阅读有关变量范围的更多信息,这些变量范围是定义变量的级别。此外,您的变量名称不应覆盖您的函数名称。

a = int(input('Enter first side: '))
b = int(input('Enter second side: '))
c = int(input('Enter third side: '))

def area():

    # calculate the sides
    s = (a + b + c) / 2

    # calculate the area
    area = (s*(s-a)*(s-b)*(s-c)) ** 0.5

    return area

areaValue = area()

def perimeter():

    # Calculate the perimeter
    perim = a + b + c

    return perim

perim = perimeter()


print( 'Area is: ', format(areaValue,'.1f'))
print( 'Perimeter is: ', format(perim,',.1f'))

答案 2 :(得分:0)

  • TypeError:请务必使用一对花括号标记格式参数。

    'Area is {}, perimeter is {}.'.format(first_value, second_value)
    
  • NameError:您可能想要了解变量范围。

    def perimeter(a, b, c):
        # Calculate the perimeter
        perim = a + b + c
        return perim
    
    # Call the function with the parameters
    # you want it to compute :
    print "Perimeter is {}."format(
        perimeter(3, 4, 5)
        )
    # output : "Perimeter is 12."