2016-02-26 96 views
0
def RollTwoDice() 
    die1 = random.randint(1,6) 
    die2 = random.randint(1,6) 

然后在这里我有一个显示滚取决于数骰子的图片为什么我一直得到名称未定义的错误?

那么代码:

print("Press \'enter\' to roll two dice 
input() 
myRoll=RollTwoDice 
total=die1+die2 
print("You rolled a total of",total) 

现在芯片的显示完美的作品,唯一的问题是最后一行代码。我得到这个错误;

 total = die1+die2 

    NameError: name 'die1' is not defined 

我想die1和die2正在定义当我跑myRoll = RollTwoDice线?我做错了什么?

+0

花点时间您的示例合并成一个单一的工作脚本。现在你有多个错误,表明你没有付出努力发布真实的东西给我们。我们的目标是我们可以削减/粘贴并尝试自己。 – tdelaney

回答

0

die1die2是局部变量,其范围是刚刚在功能RollTwoDice

3
  • RollTwoDice()不返回任何东西。在功能末尾添加一行,表示return die1, die2

  • 您需要定义die1die2以外的功能,你需要调用它,而不是只是提到它。将myRoll = RollTwoDice更改为die1, die2 = RollTwoDice()

0

在您的帖子中折扣语法错误看起来像这里的问题是您在该函数的范围内定义die1。 只需在全局范围内定义die1和die2,程序即可运行!

2

变量die1die2是功能RollTwoDice的本地功能。只需添加return声明即可。您还需要使用圆括号来调用该函数。您不需要在双引号内转义单引号。

import random 
def RollTwoDice(): 
    die1 = random.randint(1,6) 
    die2 = random.randint(1,6) 
    return die1, die2 
print("Press 'enter' to roll two dice") 
input() 
die1, die2 = RollTwoDice() 
total = die1 + die2 
print("You rolled a total of",total) 

这应该在python3中工作。

搜索“变量范围”或“本地范围”作为解释。

0

Die1和die2需要在全球范围内声明的或功能rolltwodice应该返回单个芯片 回报die1的列表,die2

相关问题