繁体   English   中英

如何将变量从一个函数传递到另一个函数?

[英]How do I get my variables from one function to another?

def getInt():
    while True:
        width = int(input("Enter width (1 - 60):"))
        if width > 1 and width < 60:
            break
        else:
            print("Please enter a valid input")
    while True:
        height = int(input("Enter width (1 - 20):"))
        if height > 1 and height < 20:
            break
        else:
            print("Please enter a valid input")
    return width, height


def calcPerimeter(width, height):
    perimeter = (2 * (width + height))
    return perimeter  

def calcArea(width, height):
    area = width * height
    return area


def main():
print('Results: {}'.format(getInt()))
print('The perimeter is {}' .format(calcPerimeter(width, height)))
print('The area is {}' .format(calcArea(width, height)))


main()

当我跑步时,它说:

追溯(最近一次通话):

主要()

print('周长为{}'.format(calcPerimeter(width,height)))

NameError:名称“宽度”未定义

也许您可以尝试将main()更改为此

def main():
  width, height = getInt()
  print('Results: {}, {}'.format(width, height))  
  print('The perimeter is {}' .format(calcPerimeter(width, height)))
  print('The area is {}' .format(calcArea(width, height)))

您需要先将getInt()返回特定的变量,然后再传递给另一个函数

其他方法是在getInt()函数中调用calculatePerimeter和calculateArea,这是示例

def getInt():
    while True:
        width = int(input("Enter width (1 - 60):"))
        if width > 1 and width < 60:
            break
        else:
            print("Please enter a valid input")
    while True:
        height = int(input("Enter width (1 - 20):"))
        if height > 1 and height < 20:
        break
        else:
            print("Please enter a valid input")
    return calcPerimeter(width, height), calcArea(width, height)


def calcPerimeter(width, height):
    perimeter = (2 * (width + height))
    return perimeter  

def calcArea(width, height):
    area = width * height
    return area


def main():
  perimeter, area = getInt()
  print('Perimeter is {}, area is {}'.format(perimeter, area))  


main()

一种方法是使用全局关键字。 另一种方法是从函数返回所需的变量并将其保存在全局范围内。

您应该阅读这篇文章,并通常研究可变范围的规则。 作为程序员,这是必不可少的知识。

作用域规则的简短说明?

请参阅此(链接)[ http://python-textbok.readthedocs.io/en/1.0/Variables_and_Scope.html]以了解为什么将main函数更改为Po的答案会导致代码正确运行。

在函数calcPerimetercalcArea中定义的变量对main函数不可见/不可访问,因为它们的作用域不同。

#I think i have resolved your problem.In your case it was returning list/tuple .you have to convert it into simple variable
def getInt():
  while True:
     width = int(input("Enter width (1 - 60):"))
     if width > 1 and width < 60:
        break
     else:
        print("Please enter a valid input")
while True:
    height = int(input("Enter height (1 - 20):"))
    if height > 1 and height < 20:
        break
    else:
        print("Please enter a valid input")
return width,height


 def calcPerimeter(width, height):
   hw=width+height
   perimeter = 2*hw
   return perimeter  

def main():
  width,height= getInt()
  p=calcPerimeter(width, height)
  print('The perimeter is %s'%p)
  a=calcArea(width, height)
  print('The area is %s'%a)


main()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM