我的程序中有一个python检测到的错误。另外,我确信还有更多的错误。请修理^-^

我的程序中有一个python检测到的错误。另外,我确信还有更多的错误。请修理^-^,python,python-2.7,Python,Python 2.7,我的节目: import random from random import randint print "Welcome to fishing game!" tries = 3 Fish = [] Fishlist = ["Shark", "Whale", "Boot", "Nothing"] Money = 0 randomfishvar = (random.choice(Fishlist)) def randomnum100(): randomnum100 =(randint(1,

我的节目:

import random
from random import randint
print "Welcome to fishing game!"
tries = 3
Fish = []
Fishlist = ["Shark", "Whale", "Boot", "Nothing"]
Money = 0
randomfishvar = (random.choice(Fishlist))
def randomnum100():
    randomnum100 =(randint(1, 100))
    print randomnum100
    Money = Money + randomnum100
    print str(Money) + "$"
def randomnum75():
    randomnum75 = (randint(1, 75))
    print randomnum75
    Money = Money + randomnum75
    print str(Money) + "$"
def randomnum50():
    randomnum50 = (randint(1, 50))
    print randomnum50
    Money = Money + randomnum50
    print str(Money) + "$"
def randomnum25():
    randomnum25 = (randint(1, 25))
    print randomnum25
    Money = Money + randomnum25
    print str(Money) + "$"
def randomnum0():
    randomnum = 0
    print randomnum
    Money = Money + 0
    print str(Money) + "$"
dowhat = raw_input("Tries, Fish, Money, Gofish? ")
if dowhat.lower() == "tries":
    print "You currently have " + str(tries) + " tries."
if dowhat.lower() == "fish":
    print Fish
if dowhat.lower() == "money":
    print str(Money) + "$"
if dowhat.lower() == "gofish":
    print randomfishvar
    Fish.append(randomfishvar)
    if randomfishvar == "Nothing":
        randomnum0()
        Fish.remove("Nothing")
    if randomfishvar == "Shark":
        randomnum75()
    if randomfishvar == "Whale":
        randomnum100()
    if randomfishvar == "Boot":
        randomnum25()
它给了我这样一个错误: 回溯最近一次呼叫上次: 文件,第52行,在 随机数m25 文件,第27行,随机编号25 金钱=金钱+随机数25 UnboundLocalError:分配前引用的局部变量“Money”

我怎样才能解决这个问题? + 您能检测到我可以修复的任何其他错误吗?因为在我修复之前python不会检测到任何其他错误


谢谢

这是一个基本的范围问题。默认情况下,非局部变量在函数中具有只读访问权限,分配给与函数外部变量同名的变量将导致创建一个新的空局部变量

在每个函数的顶部添加一个全局货币行,以操作非本地货币变量中的数据,这是一个可能的解决方法。更简单的方法是将变量作为参数传递给函数

此外,虽然具有互斥条件的ifs序列本身在逻辑上不是错误的,但它们不是干净的代码,因为它们会导致进行大量不必要的检查。在这种情况下,请尝试使用elif


另外,在将来,如果你有胆量直截了当地要求其他人为你修改代码,那么最好至少简短地解释一下如果它正常工作,你希望它做什么。

谢谢你的完美回答。我有一门关于UDE的课程,我最近的一堂课是关于示波器的。我真的什么都没得到,赛义德以后会研究的谢谢你的建议@阿卜杜拉阿尔扎比很乐意帮忙:如果你能将我的答案标注为已被接受,我将不胜感激。