Python 试图从一个函数到另一个函数获取返回信息
我正在尝试使用函数(这是我天生不擅长的),并且尝试从第一个函数中获取返回语句信息,然后在第二个函数中使用它。两者都是用于掷骰子的,因此第一个函数是返回第一组骰子,然后在第二个函数中使用第一组骰子,以向用户提供重新掷骰子的选项。我在这个实现中犯了什么错误,它不能识别原始的dieset列表Python 试图从一个函数到另一个函数获取返回信息,python,function,return,Python,Function,Return,我正在尝试使用函数(这是我天生不擅长的),并且尝试从第一个函数中获取返回语句信息,然后在第二个函数中使用它。两者都是用于掷骰子的,因此第一个函数是返回第一组骰子,然后在第二个函数中使用第一组骰子,以向用户提供重新掷骰子的选项。我在这个实现中犯了什么错误,它不能识别原始的dieset列表 def rollDie(): die1 = 2 die2 = 2 die3 = 2 die4 = 4 die5 = 5 dieset = [die1,die2,die3,di
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()
def rollDie():
die1=2
die2=2
die3=2
die4=4
die5=5
dieset=[die1,die2,die3,die4,die5]
打印(dieset)
回程模具
def reRoll1():
罗尔迪()
reroll1=input(“是否要重新回滚?是或否:”)
如果reroll1==“否”:
dieset=[die1,die2,die3,die4,die5]
其他:
计数=0
times=int(输入(“您希望重新滚动多少个模具?”)
计数<次时:
whicherroll=输入(“重新滚动模具:”)
如果whicheroll==“1”:
die1=random.randint(1,6)
其他:
蝶1
如果whicheroll==“2”:
die2=随机随机随机数(1,6)
其他:
蝶2
如果whicheroll==“3”:
die3=随机的随机数(1,6)
其他:
死亡3
如果whicheroll==“4”:
die4=随机的随机数(1,6)
其他:
死亡4
如果whicheroll==“5”:
die5=随机的随机数(1,6)
其他:
死亡5
dieset=[die1,die2,die3,die4,die5]
计数+=1
打印(dieset)
回程模具
重滚1()
它告诉我“在赋值之前引用了局部变量'die1',但首先是rollDie()。如果有人能向我解释这一点,我将不胜感激:D要能够引用rollDie()返回的数据,您需要将其分配给一个变量,即:
dieset = rollDie()
但是,您在以下方面也有问题:
if reroll1 == 'no':
dieset = [die1, die2, die3, die4, die5]
这里,您正在引用变量die1,die2。。。但他们没有被赋予任何价值
作为解决方法,您可以为这些变量指定任意值,例如0:
dieset = [0, 0, 0, 0, 0]
但是。。。然后在条件中,引用变量die1,die2。。。;实际上还没有分配。所以你可以忘记变量dieset,分配die1,die2。。。直接:
die1, die2, die3, die4, die5 = rollDie() if reroll1 == 'yes' else [0, 0, 0, 0, 0]
这样,您就可以在以下条件下简单地将这些值引用为die1
等
希望这对您有所帮助,因为
die1
、die2
、…
不是全局变量,但您将它们视为全局变量
换句话说,reRoll1()中的die1
与rollDie()中的die1
不同
要获得所需的内容,您应该使用返回值,或者通过在调用reRoll1()
die1
,die2
,。。。是在rollDie
函数中定义的,因此您不能在reRoll1
函数中引用它们,请修复代码格式。