import math
def main():
radius = float(input('What is the radius?'))
circle()
print('the cirumference is', circum, '.')
print('The area is', area, '.')
def circle():
area = math.pi * radius ** 2
circum = math.pi * radius * 2
area = '{0:.3f}'.format(area)
circum = '{0:.3f}'.format(circum)
main()
我做错了什么?我正在尝试从其他函数中打印变量,但它不会按预期工作。
答案 0 :(得分:0)
主要问题是您尝试访问的变量尚未初始化。如果要访问变量并为它们分配值而不将它们传递给函数和方法,则必须在函数范围之外初始化它们,并在对变量执行任何操作之前明确说明函数内部为global
。如果你没有明确说明变量是global
,它将被视为正在运行的函数范围内的局部变量,并且在它完成后无法访问。
import math
radius = 0
circum = 0
area = 0
def main():
global radius
radius = float(input('What is the radius?'))
circle()
print ('the cirumference is', circum,'.')
print ('The area is', area,'.')
def circle():
global radius
global circum
area = math.pi*radius**2
circum = math.pi*radius*2
area = '{0:.3f}'.format(area)
circum = '{0:.3f}'.format(circum)
main()
如果在函数调用中将radius作为参数传递给circle(arg)
,则可以在main()
函数内分配返回值变量,并从那里访问它们。
import math
def circle(radius):
area = math.pi*radius**2
circum = math.pi*radius*2
area = '{0:.3f}'.format(area)
circum = '{0:.3f}'.format(circum)
return area, circum
def main():
radius = float(input('What is the radius?'))
area, circum = circle(radius)
print ('the cirumference is', circum,'.')
print ('The area is', area,'.')
main()
答案 1 :(得分:0)
您正在访问圈内函数中的radius
变量,但它未在circle函数范围内定义。因此,运行此程序时会出错。
每个变量只能在定义的范围内看到。由于在main
函数中定义了radius
变量,main
只会在global
的范围内看到。
如果需要在不同函数之间共享变量,则应该在函数外部定义变量,并在函数内部将它们声明为circum
,然后程序将知道您要从中评估变量全球范围。 area
和radius
与import math
radius, circum, area = 0, 0, 0
def main():
global radius, circum, area
radius = float(input('What is the radius?'))
circle()
print('the cirumference is', circum, '.')
print('The area is', area, '.')
def circle():
global radius, circum, area
area = math.pi * radius ** 2
circum = math.pi * radius * 2
area = '{0:.3f}'.format(area)
circum = '{0:.3f}'.format(circum)
main()
变量类似。
所以你的代码应该是这样的:
{{1}}