簡體   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