Python:调用包含变量的函数时变量未定义

1 投票
2 回答
2089 浏览
提问于 2025-04-18 11:21

我几周前刚开始上编程课,老实说,我现在卡得很厉害。我们需要写一个程序,按照我教授的话来说:

模拟掷两个骰子的过程。用一个随机生成的整数来表示每个骰子的点数,放在一个叫做 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()的返回值。

撰写回答