0
votes

Problème avec un jeu de dés simple utilisant python

Je suis nouveau à Python, j'ai donc décidé de faire un jeu de dés simple en utilisant une boucle tandis que de faire un test simple de moi-même. Dans le jeu, j'utilise le module aléatoire et le procédé aléatoire.randint (1, 6) code> pour imprimer un entier aléatoire de toute valeur de "1 à 6", ce qui est évidemment comment un dés travaille dans vrai vie. Mais pour faire cela un jeu, si l'intégrité imprimé est même (aléatoire.Randint (1, 6)% 2 == 0) code> puis "vous gagnez" est imprimé. Si l'entier est étrange, alors "tu perds" est imprimé. Après cela, la console demande à nouveau si vous voulez rouler les dés à nouveau, et si vous dites oui (non sensible à la case, .Lower () code>) puis il roule à nouveau et la boucle continue, mais si vous dites autre chose que la boucle se casse.

Je pensais que c'était comme ça que cela fonctionnerait, mais de temps en temps, quand un nombre pair est roulant, "tu perds" est imprimé et le contraire pour des nombres impairs, ce qui n'est pas quoi Je pensais avoir codé ma boucle à faire. Évidemment je fais quelque chose de mal. Quelqu'un peut-il aider? P>

Ceci est mon code: P>

import random
min = 1
max = 6

roll_again = True
while roll_again:
    print(random.randint(min, max))
    if random.randint(min, max) % 2 == 0:
        print('you win')

    else:
        print('you lose')

    again = input('roll the dice? ').lower()
    if again == ('yes'):
        continue
    else:
        print('ok')
        break


0 commentaires

4 Réponses :


1
votes
roll = random.randint(min, max)
print(roll)
if roll % 2 == 0:
    print('you win')

0 commentaires

0
votes

Vous devez attribuer un nombre aléatoire à une variable, à l'heure actuelle imprimée et que l'autre est des chiffres différents.

import random
min = 1
max = 6
dice = 0

while True: 
    dice = random.randint(min, max) 
    print(dice) 
 
    if dice % 2 == 0: 
        print('you win') 
    else: 
        print('you lose') 

    again = input('roll the dice? ').lower() 
    if again == ('yes'): 
        continue 
    else: 
        print('ok') 
        break 


0 commentaires

1
votes

Vous générez un nombre aléatoire deux fois, le numéro imprimé n'est pas le même numéro que celui que celui que vous vérifiez dans la condition IF.

Vous pouvez enregistrer le numéro généré dans une variable comme celle-ci pour vérifier si votre ordinateur. Le code fonctionne bien: xxx


0 commentaires

0
votes

Random.Randint (min, max) renvoie une valeur différente chaque fois qu'elle est exécutée. Donc, la meilleure chose à faire est de stocker la valeur à la toute première exécution et de vérifier cette valeur stockée pour la victoire ou la perte.

Vous pouvez essayer cette version de code: p>

import random

while(True):
    value = random.randint(1,6)
    print(value)
    if(value % 2 == 0):
        print("You Win!")
    else:
        print("You Lose!")

    again = input("Want to roll Again? Type 'Yes' or 'No'")
    if(again.lower() != 'yes'):
        break


0 commentaires