返回似乎在python 3.4中为我工作

时间:2014-11-16 23:57:09

标签: python-3.x

我正在尝试为学校完成骰子游戏python(3.4)编程任务,并且我在使用return语句将变量从一个函数传递到另一个函数时遇到了一些麻烦,但是当我运行该程序时变量" dieum"被解释为未定义。

import random

def RollDice():
    die1 = random.randint(1, 6)
    die2 = random.randint(1, 6)
    diesum = die1 + die2
    return diesum

def Craps(diesum):
    craps = [2, 3, 12]
    natural = [7, 11]
    established = [4, 5, 6, 8, 9, 10]
if (diesum == craps):
    print(die1, "+", die2, "=", diesum, ",You lost")
elif (diesum == natural):
    print(die1, "+", die2, "=", diesum, ",You Win")
elif (diesum == established):
    print("Point is ", diesum)
    diesum = roll
    while diesum == roll:
        RollDice()
        if diesum == roll:
            print("Same Number, You Won!")
        elif (diesum != 7):
            print("You Win")
        else:
            print("You Lost!")
            break


RollDice()
Craps(diesum)

2 个答案:

答案 0 :(得分:1)

您未将RollDice的结果传递给Craps。试试这个:

result = RollDice()
Craps(result)

您已粘贴的代码段中还有其他一些问题,但这是您看到错误的主要原因。 return语句从函数返回一个值。您需要先将值绑定到名称(在我的情况下为result),然后才能引用它。如果您不想将结果捕获到中间绑定中,也可以编写Craps(RollDice())

答案 1 :(得分:0)

因为它不起作用有很多原因。首先简化问题!这是一个有效的初步示例:

import random

def RollDice():
    die1 = random.randint(1, 6)
    die2 = random.randint(1, 6)
    diesum = die1 + die2
    print(diesum)
    return diesum

def Craps(diesum):
    craps = [2, 3, 12]
    natural = [7, 11]
    established = [4, 5, 6, 8, 9, 10]
    for x in craps:
        if diesum == x:
            print("> You lost")
    for x in natural:
        if diesum == x:
            print("> You Win")
    for x in established:
        if diesum == x:
            print("> Point is ", diesum)


diesum = RollDice()
Craps(diesum)

现在编写游戏的第二部分......并注意使用Python进行缩进!