Python 试图从一个函数到另一个函数获取返回信息

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

我正在尝试使用函数(这是我天生不擅长的),并且尝试从第一个函数中获取返回语句信息,然后在第二个函数中使用它。两者都是用于掷骰子的,因此第一个函数是返回第一组骰子,然后在第二个函数中使用第一组骰子,以向用户提供重新掷骰子的选项。我在这个实现中犯了什么错误,它不能识别原始的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()
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
函数中引用它们,请修复代码格式。