我正在尝试为学校完成骰子游戏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)
答案 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进行缩进!