如何重置接受它作为参数的函数中使用的变量?

How to reset a variable used in a function that accepts it as a parameter?

我有一个问题,我在 Python 中使用函数创建了一个乘法游戏,但是当我检查用户是否有足够的点数来更改级别时,点数计数器(“compteur”)没有重置为 0 .我是初学者所以很可能错误很愚蠢,但我不明白...... You can see this in Python tutor, but I tried adding "return compteur" but that doesn't work either...

功能代码如下:

 def update (compteur) :
        global level
        if compteur == 20 :
            level+=1
            print("Niveau",level-1,"terminé. Passage au niveau",level,"!")
            compteur = 0
            return compteur

以及整个代码:

###############################################################################
#  Importation de fonctions externes                                          #

import random

###############################################################################
#  Définitions locales de fonctions                                           #

compteur=0

def calcul (max) :
    '''
    Cette fonction calcule une mutiplication avec des valeures aléatoires, elle
    admet un seul paramètre :
        - Maximum des valeures alétoires
    Elle retourne le nombre saisi par l'utilisateur ainsi que le nombre calculé
    par l'ordinateur.
    '''
    global compteur
    global nb_user
    global nb_result
    valeur_1=random.randint(1, max)
    valeur_2=random.randint(1, max)
    nb_result=valeur_1*valeur_2
    print(valeur_1,"*",valeur_2)
    print("Debug =",nb_result,)
    nb_user=int(input("Entrer votre réponse : \n"))
    return nb_user
    return nb_result
      
def verif (nb_user, nb_result) :
    '''
    Cette fonction vérifie si le résultat saisi par l'utilisateur est égale au
    résultat attendu, elle admet donc deux paramètres :
        - Nb_user
        - Nb_result
    Elle retourne l'indice de réussite.
    '''
    global compteur
    if nb_user == nb_result :
        compteur+=1
        print("Bonne réponse !")
    else :
        compteur-=1
        print("Mauvaise réponse !")

def update (compteur) :
    global level
    if compteur == 20 :
        level+=1
        print("Niveau",level-1,"terminé. Passage au niveau",level,"!")
        compteur = 0
        return compteur
    

###############################################################################
#  Corps principal du programme


# Déclarations des variables 

level=1

# Debut

print("Bienvenue dans le Jeu des multiplications !")
while level == 1 :
    calcul(10)
    print(compteur, level)
    verif(nb_user, nb_result)
    update(compteur)
while level == 2 :
    calcul(20)
    print(compteur, level)
    verif(nb_user, nb_result)
    update(compteur)
while level == 3 :
    calcul(50)
    verif(nb_user, nb_result)
    update(compteur)
while level == 4 :
    calcul(100)
    verif(nb_user, nb_result)
    update(compteur)
while level == 5 :
    print("Bien joué ! Tu es venu à bout du jeu.")

提前感谢您的帮助!

每次调用 update(compteur) 都必须将值赋值给 compteur:

替换:

update(compteur)

作者:

compteur = update(compteur)

您必须缩进 return compteur:

 def update (compteur) :
        global level
        if compteur == 20 :
            level+=1
            print("Niveau",level-1,"terminé. Passage au niveau",level,"!")
            compteur = 0
        return compteur  # Remove one tab