名称未定义,即使使用全局变量?

2024-09-28 05:17:29 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试着写一个函数来计算pi的估计值,然后从pi的实际值中减去。然而,当我运行它时,我得到一个错误,说名称“piCalc”没有定义。你知道我做错了什么吗

import math
import random
def computePI (numThrows):
  circleCount = 0
  for i in range(numThrows):
      xPos = random.uniform (-1.0, 1.0)
      yPos = random.uniform (-1.0, 1.0)
      distance = math.hypot(xPos, yPos)
      if distance < 1:
        circleCount = circleCount + 1  
  piCalc =  4 * (circleCount/numThrows)
  return(piCalc)
def main():
  global piCalc
  throws = int(input(""))
  computePI(throws)
  difference = piCalc - math.pi
  print(piCalc)
  print(difference)
main()

Tags: importmaindefpirandommathuniformdistance
3条回答

您尚未在函数中声明全局

import math
import random
def computePI (numThrows):
  global piCalc
  circleCount = 0
  for i in range(numThrows):
      xPos = random.uniform (-1.0, 1.0)
      yPos = random.uniform (-1.0, 1.0)
      distance = math.hypot(xPos, yPos)
      if distance < 1:
        circleCount = circleCount + 1  
  piCalc =  4 * (circleCount/numThrows)
  return(piCalc)
def main():
  global piCalc
  throws = int(input(""))
  computePI(throws)
  difference = piCalc - math.pi
  print(piCalc)
  print(difference)
main()

尝试这样的操作,您会得到一个错误,因为您的值不是全局的。这样,computPI无论如何都会返回picalc,因此您只需捕获返回值即可

import math
import random
def computePI (numThrows):
  circleCount = 0
  for i in range(numThrows):
      xPos = random.uniform (-1.0, 1.0)
      yPos = random.uniform (-1.0, 1.0)
      distance = math.hypot(xPos, yPos)
      if distance < 1:
        circleCount = circleCount + 1  
  piCalc =  4 * (circleCount/numThrows)
  return(piCalc)
def main():
   throws = int(input(""))
   calc = computePI(throws)
   difference = calc - math.pi
   print(calc)
   print(difference)
main()

在主函数和代码中初始化piCalc 表示piCalc=0

import math
import random
def computePI (numThrows):
  circleCount = 0
  for i in range(numThrows):
      xPos = random.uniform (-1.0, 1.0)
      yPos = random.uniform (-1.0, 1.0)
      distance = math.hypot(xPos, yPos)
      if distance < 1:
        circleCount = circleCount + 1  
  piCalc =  4 * (circleCount/numThrows)
  return(piCalc)
def main():
  global piCalc 
  piCalc = 0
  throws = int(input(""))
  computePI(throws)
  difference = piCalc - math.pi
  print(difference)
main()

相关问题 更多 >

    热门问题