Python:调用包含变量的函数时变量未定义
我几周前刚开始上编程课,老实说,我现在卡得很厉害。我们需要写一个程序,按照我教授的话来说:
模拟掷两个骰子的过程。用一个随机生成的整数来表示每个骰子的点数,放在一个叫做
point
的函数里。返回这次掷骰子的总点数。在主函数中用循环掷五次骰子,并报告每次的结果。
我尽力了,但总是遇到同样的问题,系统告诉我我的变量 total
没有定义,尽管我已经调用了包含这个变量的函数。
我把下面的代码提交给了我的教授,他回复说:
这个骰子程序差不多了。要返回一次掷骰子的总点数。在主函数中调用
point
并捕获返回的值以便打印。
所以他说要在我的 main
函数中调用 point
,我觉得我应该是这样做了,但它还是无法读取我完成这个程序所需的重要变量。
import random
min=1
max=6
def main():
for roll in range(5):
point()
print(total)
def point():
roll=random.randint(min, max)
roll2=random.randint(min, max)
total=roll+roll2
return total
main()
2 个回答
1
你正在尝试引用一个只在point()函数内部存在的变量。但其实你不需要这样做,因为你已经把这个值返回了。
试试这个。
from random import randint
def rollD6():
return randint(1,6)
def point():
return rollD6()+rollD6()
def main():
for roll in range(5):
print point()
main()
1
在main
函数里面,这一行:
point()
并没有让total
在当前的范围内可用。它只是调用了point
这个函数,然后把返回的结果丢掉了。
你需要通过把返回的结果赋值给一个叫total
的变量来保存这个结果:
def main():
for roll in range(5):
################
total = point()
################
print(total)
现在,当你执行print(total)
的时候,total
就会被定义,并且等于point()
的返回值。