嘿伙计们,我在输出三角形的面积和周长方面存在问题,因为两侧使用了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()
我收到很多错误,比如
我应该这样做的方法是在主函数中询问各边,然后调用第二个,然后输出一个小数位的答案。
有人可以告诉我我做错了吗?
答案 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."