【发布时间】:2019-04-26 23:08:23
【问题描述】:
我正在尝试制作带有命令提示界面的轮盘游戏。轮盘赌是关于投注的,因此游戏的很大一部分是关于你输赢的钱。我试图做一个变量来告诉玩家在我再次下注之前我有多少钱。我还没有完成游戏,因此只有 3 个选项可用,但我想在继续之前修复这个错误。 我不断收到错误“UnboundLocalError:分配前引用的局部变量'money'” 这是代码: 从随机导入 randint 从时间导入睡眠 from os 导入系统
def how_much():
print("How much money do you want to place on this bet?")
global amount
amount = int(input())
def game():
def bet():
bet = input("What type of bet do you want to make?\n")
how_much()
#Start Bet type 1
if bet == "1":
roll = randint(1,36)
if roll <= 3:
print("You bet correcty!")
money = money + amount
game()
else:
print("You lose!")
money = money - amount
game()
#Start bet type 2
elif bet == "2":
roll = randint(1, 36)
if roll <= 4:
print("You bet correcty!")
money = money + amount
game()
else:
print("You lose!")
money = money - amount
game()
#Start bet type 3
elif bet == "3":
roll = randint(1, 36)
else:
print("Invalid argument.")
bet()
global money
money = int(1000)
print("Welcome to Roulette")
print("Your Wallet has", money, "Euros in it.")
print("1. First 3 Numbers\n2. First 4 Numbers\n3. One Number\n4. Upper-half or Lower-half\n5. Dozens\n6. Odd or Even\n7. Column\n8. Line\n9. 2 Lines\n10. Red or Black\n11. 2 Neighbors\n12. 4 Neighbors\n0. Exit")
bet()
game()
【问题讨论】:
-
money是您的bet函数中的局部变量。老实说,在这里使用全局变量根本不是一个好主意,你应该从根本上改变你的方法 -
诸如“全球货币”之类的行的目标是什么? Python 不需要将变量声明为全局变量来创建它们,而只需从局部范围内引用全局变量。这基本上是另一种说法,如果在大多数程序中负责任地传递变量,则几乎不需要使用全局变量关键字。
-
你建议我怎么做?
-
将值作为参数传递给您的函数,并让这些函数返回您希望在外部可用的值。你为什么要定义
betinsidegame?尽管通常在其他函数中定义函数可能很有用,但您在这里没有利用任何这些原因。 -
@ParitoshSingh 如果不将变量设为全局变量,我该怎么做,我想在多个定义中使用它。
标签: python python-3.x variables reference variable-assignment