我正在尝试使用函数(这是我天生不擅长的东西),并尝试从第一个函数中获取return语句信息,然后在第二个函数中使用它。两者都是用于掷骰子的,因此第一个函数是返回第一组骰子,然后在第二个函数中使用第一组骰子,以便用户可以选择重新掷骰子。在这个实现中,我做错了什么,它不能识别原始的dieset列表?你知道吗
def rollDie():
die1 = 2
die2 = 2
die3 = 2
die4 = 4
die5 = 5
dieset = [die1,die2,die3,die4,die5]
print(dieset)
return dieset
def reRoll1():
rollDie()
reroll1 = input("Would you like to reroll? Yes or No: ")
if reroll1 == "no":
dieset = [die1,die2,die3,die4,die5]
else:
count = 0
times = int(input("How many die would you like to reroll? "))
while count < times:
whichreroll = input("Reroll die: ")
if whichreroll == "1":
die1 = random.randint(1,6)
else:
die1
if whichreroll == "2":
die2 = random.randint(1,6)
else:
die2
if whichreroll == "3":
die3 = random.randint(1,6)
else:
die3
if whichreroll == "4":
die4 = random.randint(1,6)
else:
die4
if whichreroll == "5":
die5 = random.randint(1,6)
else:
die5
dieset = [die1,die2,die3,die4,die5]
count += 1
print(dieset)
return dieset
reRoll1()
它告诉我“局部变量'die1'在赋值前引用”,但rollDie()是第一位的。如果有人能向我解释这一点,那将是非常重要的沉淀:D你知道吗
您没有获得所需的行为,因为
die1
、die2
、...
不是全局变量,但您将它们视为全局变量。你知道吗换句话说,
reRoll1()
内的die1
与rollDie()
内的die1
不同。你知道吗要获得所需的内容,您应该使用返回值,或者通过在调用
reRoll1()
的缩进级别上编写定义来全局初始化变量为了能够引用rollDie()返回的数据,您需要将其赋给一个变量,即:
但是,您在以下方面也有问题:
这里,您引用变量die1,die2。。。但他们没有被赋予任何价值。你知道吗
作为解决方法,您可以为这些变量指定一个任意值,例如0:
但是。。。然后在你的条件中,你引用变量die1,die2…;它们实际上还没有被赋值。所以你可以忘记变量dieset,赋值die1,die2。。。直接:
这样,您就可以在下面的条件中引用这些值,如
die1
等。你知道吗希望这有帮助
相关问题 更多 >
编程相关推荐