为什么我一直得到名称未定义的错误?

时间:2016-02-26 01:34:44

标签: python

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

当我运行myRoll = RollTwoDice线时,我认为die1和die2正在被定义?我做错了什么?

5 个答案:

答案 0 :(得分:3)

  • public static String vowelCount(String sentence) { int[] vowelsCounted = new int[5]; vowelsCounted.toString(); for (int i=0; i<sentence.length(); i++) { char ch = sentence.charAt(i); if (ch == 'a') { vowelsCounted[0]++; } else if (ch == 'e') { vowelsCounted[1]++; } else if (ch == 'i') { vowelsCounted[2]++; } else if (ch == 'o') { vowelsCounted[3]++; } else if (ch == 'u') { vowelsCounted[4]++; } } return Arrays.toString (vowelsCounted); } 不返回任何内容。在函数末尾添加一行代表RollTwoDice()

  • 您需要在函数外部定义return die1, die2die1 ,您需要调用它,而不仅仅是提及它。将die2更改为myRoll = RollTwoDice

答案 1 :(得分: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中有用。

搜索&#34;变量范围&#34;或者&#34;本地范围&#34;为了解释。

答案 2 :(得分:0)

die1die2是局部变量,它们的范围只是函数RollTwoDice

答案 3 :(得分:0)

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

答案 4 :(得分:0)

Die1和die2需要全局声明,或者函数rolltwodice应该返回单个die的列表 返回die1,die2