0
votes

comment faire en sorte que python additionne plusieurs totaux et imprime le total global

Je travaille sur du code pour mes examens simulés et je suis bloqué sur la partie où je dois additionner tous les scores ensemble, puis imprimer le total. Le but du code est que 2 joueurs lancent 2 dés, si les nombres sont identiques, ils lancent un troisième dé. le code ajoute ensuite le dé et imprime le total selon que le total peut être divisé par 2. après avoir répété cela 5 fois, le code devrait alors additionner tous les totaux et afficher le total global. pourtant, il n'imprime que le dernier total et n'additionne pas les 5 totaux ensemble. si quelqu'un pouvait m'aider, ce serait apprécié, je suis également désolé pour la question noob. Je suis nouveau dans ce domaine.

import random                   
score = 0                      
for i in range(5):
    print ("\n")
    dice1 = random.randint(1,6)
    dice2 = random.randint(1,6)            
    dice3 = random.randint(1,6)
    print ("player 1: roll 1 = ",dice1)
    print ("player 1: roll 2 = ",dice2)         
    if dice1 == dice2:
        print ("player 1: roll 3 = ",dice3)         
    score = dice1+dice2
    if dice1 == dice2:
        score = dice1+dice2+dice3                                 
    if score % 2 == 0:
        score = score+10                   
    if score % 2 == 1:
        score = score-5                    
        print ("player 1: score = ", score)

print ("\n")
overalltotal = score
print ("total for player 1:", overalltotal)       

Je m'attends à ce que la sortie soit le total des 5 scores. pourtant la sortie réelle n'est que le dernier score


1 commentaires

score = score + dés1 + dés2 et score = score + dés1 + dés2 + dés3


3 Réponses :


1
votes

Je pense que vous devez inclure globaltotal + = score à la fin de la boucle for plutôt que de définir Overalltotal = score après la boucle for. Donc votre code serait:

import random                   
score = 0
overalltotal = 0 # <-- initialize here                      
for i in range(5):
    print ("\n")
    dice1 = random.randint(1,6)
    dice2 = random.randint(1,6)            
    dice3 = random.randint(1,6)
    print ("player 1: roll 1 = ",dice1)
    print ("player 1: roll 2 = ",dice2)         
    if dice1 == dice2:
        print ("player 1: roll 3 = ",dice3)         
    score = dice1+dice2
    if dice1 == dice2:
        score = dice1+dice2+dice3                                 
    if score % 2 == 0:
        score = score+10                   
    if score % 2 == 1:
        score = score-5                    
        print ("player 1: score = ", score)
    overalltotal += score # <-- add value of each round here

print ("\n")
print ("total for player 1:", overalltotal)


1 commentaires

Remarque pour les débutants: a + = b équivaut à peu près à a = a + b . Même chose pour - = , * = , etc. (Pas exactement équivalent, car il s'agit d'une modification sur place; pour plus de détails, suivez les liens dans la doc )



0
votes

Votre problème n'est pas Python mais c'est la logique du programme. Utilisez un papier et un crayon pour d'abord décrire ce qui doit être fait, étape par étape avec des tests, des boucles et des blocs. Suivez ensuite le processus sur le papier avec différents cas d'utilisation. Lorsque vous pensez que cela devrait fonctionner, traduisez-le en code Python, ajoutez des impressions de trace pour contrôler ce qui se passe et exécutez. Vous devriez pouvoir tout réparer vous-même.

Comme indices de ce qui devrait être corrigé ou amélioré:

  • 2 if dice1 == dice2: différents tests l'un après l'autre. Mieux vaut grouper en dehors de ce qui est commun ( score = dés1 + dés2 ) et utiliser un seul test pour ce qui est spécifique ( score + = dés3 )
  • le print ("player 1: score =", score) est à l'intérieur d'un bloc if. Rien ne sera imprimé si score% 2! = 1 . Est-ce vraiment souhaitable?
  • initialisez total global avant la boucle principale, et incrémentez-le avec score à l'intérieur de la boucle
  • votre code calcule toujours dice3 même s'il n'est pas utilisé. Pourquoi ne pas le calculer uniquement dans le bloc if dice1 == dice2: ?

0 commentaires

0
votes

Si vous souhaitez modifier le score comme vous l'avez mentionné, vous devez modifier vos déclarations

score = dice1+dice2 --> score += dice1+dice2 (do this for dice things)
score = score+10 --> score += 10 (for score things)
score = score-5 --> score -= 5 (for score things)


0 commentaires