Python: изменение глобальной переменной и элементов глобального списка внутри функции



Задача



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



Код



verifier = 0
letters = ["A","B","C","D","E","F","G","H","I"]

if verifier == 0:
letters = ["A","B","C","D","E","F","G","H","I"]
if verifier == 1:
letters = newlist()

def newlist():
numbers = ["0","1","2","3","4","5","6","7","8"]
return animals

def main():
global verifier
# this should print ["A","B","C","D","E","F","G","H","I"]
print(letters)
# global variable should be changed to 1
verifier = 1
# this should print ["0","1","2","3","4","5","6","7","8"] now
print(letters)
main()
748   1  

1 ответ:

Используйте глобальную переменную:

verifier = 0

def newlist():
    if verifier == 0:
        return ["A","B","C","D","E","F","G","H","I"]
    elif verifier == 1:
        return ["0","1","2","3","4","5","6","7","8"]

print newlist()

def main():
    global verifier
    verifier = 1
main()

print newlist()

У вас была неправильная структура кода. Вы ничего не добьетесь, изменив переменную.

Это объявление переменных:

verifier = 0
letters = ["A","B","C","D","E","F","G","H","I"]

Во-первых, если и во-вторых, если код не будет проверяться только один раз, перед вызовом main. Также-читайте о elif.

if verifier == 0:
    letters = ["A","B","C","D","E","F","G","H","I"]
elif verifier == 1:
    letters = newlist()

"Буквы" в main fuinction всегда будут ["A","B","C","D","E","F","G","H","I"]. Смотрите мой пример, если вы хотите исправить свой код. if выполняется только один раз. Вы не сможете повторно сканировать без необходимость перезапустить файл.

В большинстве случаев global не нужно использовать-вы просто передаете переменную аргументам функции:

def newlist(verifier):
    if verifier == 0:
        return ["A","B","C","D","E","F","G","H","I"]
    elif verifier == 1:
        return ["0","1","2","3","4","5","6","7","8"]

def main():
    print newlist(0)
    print newlist(1)
main()

Конкретно по этой задаче-нет даже необходимости использовать функции:

letters = {
    0: ["A","B","C","D","E","F","G","H","I"],
    1: ["0","1","2","3","4","5","6","7","8"]
}

print letters.get(0, None)

Comments

    Ничего не найдено.