В моей программе есть ошибка, обнаруженная Python.Плюс я уверен, что есть больше ошибок.Пожалуйста, исправьте ^ - ^ - PullRequest
0 голосов
/ 24 июня 2018

Моя программа:

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()

Это дало мне такую ​​ошибку: Traceback (последний вызов был последним): Файл "", строка 52, в randomnum25 () Файл "", строка 27, в randomnum25 Деньги = Деньги + randomnum25 UnboundLocalError: локальная переменная «Деньги», на которую есть ссылка перед присвоением

Как я могу это исправить? + Не могли бы вы обнаружить другие ошибки, которые я мог бы исправить? Потому что python не обнаружит любую другую ошибку, пока я не исправлю это.

Спасибо!

1 Ответ

0 голосов
/ 24 июня 2018

Это основная проблема. Нелокальные переменные по умолчанию имеют доступ только для чтения в функциях. Присвоение переменной с тем же именем, что и у переменной вне функции, приведет к созданию новой пустой локальной локальной переменной.

Добавление строки global Money в верхней части каждой функции, которая должна манипулировать данными в нелокальной переменной Money, было бы возможным обходным путем. Возможно, чище будет передать переменную в качестве параметра функции.

Кроме того, хотя ваши последовательности if с взаимоисключающими условиями сами по себе не являются логически неисправными, они не являются чистым кодом, поскольку приводят к множеству ненужных проверок. Попробуйте использовать elif в этом случае.

Кроме того, в будущем, если у вас хватит смелости просто попросить других людей «исправить» ваш код для вас, было бы неплохо хотя бы дать краткое объяснение того, что вы ожидаете от него, если он работает .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...