2015-02-11 1368 views
-1

嘿家伙我有问题输出面积和边缘使用苍鹭的公式给出的边三角。这里是我的代码:用Python计算三角形的面积和周长?

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() 

我得到很多的错误一样

  • 类型错误:传递给对象非空的格式字符串。 格式
  • NameError:名字“丕林岛”没有定义

我应该做的方式是通过在主功能要求两侧,然后调用第二个,然后输出答案有一位小数。

有人能告诉我我做错了什么吗?

回答

1

您需要指定返回的值并使三个边长全局。说实话,你应该阅读更多关于变量范围的内容,这些变量是定义变量的级别。另外,你的变量名不应该覆盖你的函数名。通过这种方式,您可以稍后在脚本的任何地方通过调用它们并传递三个参数来重用这些小函数。

例如:

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() 

这应该做到这一点更清洁的方式,你只能从主线程中调用一个函数。您将避免在原始代码中声明全局变量和一大堆混乱(没有冒犯)。

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')) 
+0

'A =面积()'不会这是一个问题,因为'了'已经存在? – 2015-02-11 22:13:35

+0

不错,谢谢。我会解决它。否则,我是对的,对吧? – 2015-02-11 22:14:06

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."