Fonction "choice"

Résolu
Bonjour à tous,
J’aimerai qu’on m’explique qu’elles sont les erreurs que j’ai commises dans ce petit programme que je teste (je débute)
1) ne donne pas les points
2) cartes2 pas def.

 from random import choice
t = 0
def info():
    """ Informations """
    print("Touche q pour quitter")
    print("Touche Enter pour continuer")
#liste des 52 cartes à compléter
liste = ['as de pique', ' as de coeur', 'as de carreau',' as de trêfle',
         '2 de pique','2 de coeur', '2 de carreau', '2 de trêfle']

(choice(liste)) # choix de 2 cartes

print(choice(liste)) # donne la carte qui a été choisie
print(choice(liste)) # donne une deuxième carte qui a été choisie


# points attribués aux cartes
cartes1 = ['as de pique','as de coeur','as de carreau', 'as de trêfle']# 11
cartes2 = ['2 de pique','2 de coeur', '2 de carreau', '2 de trêfle']# 2

if (choice(liste)) in cartes1: #si la carte choisie se trouve dans les cartes 1 = 11 points
    t== t+11  # 0 + 11 = 11
    print(t)
if (choice(liste)) in carte2: # si la carte choisie se trouve dans les cartes 2 = 2 points
    t=t+2
    print(t)



#début du programme
info()
while True:
    choix = input()
    if choix == 'q':
        break
    print(choice(liste))

#résultat    
# as de pique
# as de trêfle   
#Traceback (most recent call last):
# File "C:\Users\Alain-3\Desktop\Introd au langage python\MODELE QUITTER_CONTINUER.py", line 20, in <module>
#   if (choice(liste)) in carte2: # si la carte choisie se trouve dans les cartes 2 = 2 points
#NameError: name 'carte2' is not defined

4 réponses

  1. Contributeur
    bonsoir, carte2 ou cartes2, que choisis-tu?
    0
    1. Bonjour
      OK c'est cartes2 Merci

      2t
      tu as 2 points
      total des points = 2
      Touche q pour quitter
      enter pour continuer
      as de t

      Pourquoi il me donne une deuxième carte as de t ?
      La fonction enter ne continue pas le programme.
      En fait je veux arriver à une première donne de 2 cartes et en connaître le total des points(jeu de carte 21)
      Ensuite choix ou pas d'une carte qui peut éventuellement éliminer le joueur si >21
      Naturellement je vais jouer avec 52 cartes
      Encore merci pour ton aide
      J'ai 77 ans je sais que je ne vais pas faire des miracles en programmation mais je trouve ce passe temps très intéressant.
      J'étudie le langage Python avec le tutoriel "Introduction au langage Python"
      qui me semble assez clair
      Bonne fin de journée et encore merci pour ton aide car très rare les gens qui ont encore la patience de s'intéresser aux vieux.
      0
      1. Contributeur
        Bonjour Lecorse,

        J'ai dix ans de moins que vous, espère atteindre votre âge et me passionne pour la programmation (python, scratch, arduino, robotique).

        J'ai l'habitude de dire : "les vieux sont tous d'anciens jeunes mais ces derniers ne sont pas certains de le devenir". Non encore déposé à la SACEM.

        Persévérez et prenez du plaisir. Nul doute que les abonnés de CCM vous viendront en aide car tel est leur bon plaisir.

        Cordialement
        0
      2. Contributeur
        je t'ai aidé sans connaitre ton âge, tu ne peux donc pas en déduire que j'ai "la patience de m'intéresser aux vieux". :-)
        0
      3. Contributeur
        j'ai l'impression que tu nous poses une question ("Pourquoi il me donne une deuxième carte as de t ?") à propos du comportement d'un programme, sans nous montrer le programme. je me trompe?
        0
    2. Bonjour

      Voila l'ébauche du programme :
      from random import choice

      t1 = 0 # total des points gagnés = compteur voir fichier:fonction compteur
      #t2 = 0
      def info():
      """ Informations """
      print("Touche q pour quitter")
      print("enter pour continuer")
      #print(choice(liste))

      liste =['2 pique','2 coeur','2 carreau','2 trêfle','3 pique','3 coeur ','3 carreaud','3 trêfle',
      '4 pique','4 coeur','4 carreau','4 trêfle','5 pique','5 coeur','5 carreau','5 trêfle',
      '6 pique','6 coeur','6 carreau','6 tr^fle','7 pique','7 coeur','7 carreau','7 trêfle',
      '8 pique','8 coeur','8 carreau','8 trêfle','9 pique','9 coeur','9 carreau','9 trêfle',
      '10 pique','10 coeur','10 carreau','10 trêfle']
      # ,'Valet pique',
      # 'Valet coeur','Valet carreau','Valet trêfle','Dame pique','Dame coeur','Dame coeur','Dame trêfle',
      # 'Roi pique','Roi coeur','Roi carreau','Roi trêfle','As pique','As coeur','As carreau','As trêfle']
      print(choice (liste))

      carte1 = ['as p', 'as coeur', 'as carreau', 'as trêfle',]
      carte2 = ['2 pique','2 coeur','2 carreau','2 trêfle']
      carte3 = ['3 pique','3 coeur','3 carreau','3 trêfle']
      carte4 = ['4 pique','4 coeur','4 carreau','4 trêfle']
      carte5 = ['5 pique','5 coeur','5 carreau','5 trêfle']
      carte6 = ['6 pique','6 coeur','6 carreau','6 trêfle']
      carte7 = ['7 pique', '7coeur','7 carreau','7 trêfle']
      carte8 = ['8 pique', '8coeur','8 carreau','8 trêfle']
      carte9 = ['9 pique', '9 coeur','9carreau','9 trêfle']
      carte10 = ['10 pique', '10coeur','10 carreau','810trêfle']
      #carte11 = ['vallet pique', 'valet coeur','valet carreau','valet trêfle']
      #carte12 = ['dame pique', 'dame coeur','dame carreau','dame trêfle']
      #carte13 = ['roi pique', 'roi coeur','roi carreau','roitrêfle']

      if (choice (liste)) in carte1:
      print('tu as 11 points')
      t1 = t1 + 11
      print ('total des points = ', t1)

      if (choice (liste)) in carte2:
      print('tu as 2 points')
      t1 = t1 + 2
      print ('total des points = ', t1)

      if (choice (liste)) in carte3:
      print('tu as 3 points')
      t1 = t1 + 3
      print ('total des points = ', t1)

      if (choice (liste)) in carte4:
      print('tu as 4 points')
      t1 = t1 + 4
      print ('total des points = ', t1)

      if (choice (liste)) in carte5:
      print('tu as 5 points')
      t1 = t1 + 5
      print ('total des points = ', t1)

      if (choice (liste)) in carte6:
      print('tu as 6 points')
      t1 = t1 + 6
      print ('total des points = ', t1)

      if (choice (liste)) in carte7:
      print('tu as 7 points')
      t1 = t1 + 7
      print ('total des points = ', t1)
      if (choice (liste)) in carte8:
      print('tu as 8 points')
      t1 = t1 + 8
      print ('total des points = ', t1)
      if (choice (liste)) in carte9:
      print('tu as 9 points')
      t1 = t1 + 9
      print ('total des points = ', t1)

      if (choice (liste)) in carte10:
      print('tu as 10 points')
      t1 = t1 + 10
      print ('total des points = ', t1)

      #résultat
      #6 carreau = 6 points et pas neuf
      #tu as 9 points
      #total des points = 9
      #Touche q pour quitter
      #enter pour continuer !!!! ne continue pas donc ne
      #conserve pas les points antérieurs

      #début du programme
      info()
      while True:
      choix = input()
      if choix == 'q' :
      break
      print(choice(liste))

      Merci à tous
      Bonne journée
      0
      1. Contributeur
        il faudrait que tu montres le programme correctement, en utilisant les possibilités offertes par le forum. comme tu le partages, ton code est illisible.
        je suis étonné par tous ces appels
        choice (liste)
        : à chaque fois, cela tire une carte au hasard, et cela n'est probablement pas ce que tu souhaites.
        je suggère plutôt:
        cartetiree= choice(liste)
        if (cartetiree) in carte1:
        0
      2. Contributeur
        @yg_beou plutôt:
        from random import choice 
        
        
        t1 = 0 # total des points gagnés = compteur voir fichier:fonction compteur 
        #t2 = 0 
        def info(): 
            """ Informations """ 
            print("Touche q pour quitter") 
            print("enter pour continuer") 
        #print(choice(liste)) 
        
        
        liste =['2 pique','2 coeur','2 carreau','2 trefle','3 pique','3 coeur','3 carreau','3 trefle', 
        '4 pique','4 coeur','4 carreau','4 trefle','5 pique','5 coeur','5 carreau','5 trefle', 
        '6 pique','6 coeur','6 carreau','6 trefle','7 pique','7 coeur','7 carreau','7 trefle', 
        '8 pique','8 coeur','8 carreau','8 trefle','9 pique','9 coeur','9 carreau','9 trefle', 
        '10 pique','10 coeur','10 carreau','10 trefle'] 
        # ,'Valet pique', 
        # 'Valet coeur','Valet carreau','Valet trêfle','Dame pique','Dame coeur','Dame coeur','Dame trêfle', 
        # 'Roi pique','Roi coeur','Roi carreau','Roi trêfle','As pique','As coeur','As carreau','As trêfle'] 
        
        carte1 = ['as pique', 'as coeur', 'as carreau', 'as trefle',] 
        carte2 = ['2 pique','2 coeur','2 carreau','2 trefle'] 
        carte3 = ['3 pique','3 coeur','3 carreau','3 trefle'] 
        carte4 = ['4 pique','4 coeur','4 carreau','4 trefle'] 
        carte5 = ['5 pique','5 coeur','5 carreau','5 trefle'] 
        carte6 = ['6 pique','6 coeur','6 carreau','6 trefle'] 
        carte7 = ['7 pique', '7 coeur','7 carreau','7 trefle'] 
        carte8 = ['8 pique', '8 coeur','8 carreau','8 trefle'] 
        carte9 = ['9 pique', '9 coeur','9carreau','9 trefle'] 
        carte10 = ['10 pique', '10 coeur','10 carreau','10 trefle'] 
        #carte11 = ['vallet pique', 'valet coeur','valet carreau','valet trêfle'] 
        #carte12 = ['dame pique', 'dame coeur','dame carreau','dame trêfle'] 
        #carte13 = ['roi pique', 'roi coeur','roi carreau','roitrêfle'] 
        info() 
        while True: 
            ct=choice (liste)
            print(ct) 
        
        
        
            if (ct) in carte1: 
                print('tu as 11 points') 
                t1 = t1 + 11 
                print ('total des points = ', t1) 
        
            if (ct) in carte2: 
                print('tu as 2 points') 
                t1 = t1 + 2 
                print ('total des points = ', t1) 
        
            if (ct) in carte3: 
                print('tu as 3 points') 
                t1 = t1 + 3 
                print ('total des points = ', t1) 
        
            if (ct) in carte4: 
                print('tu as 4 points') 
                t1 = t1 + 4 
                print ('total des points = ', t1) 
        
            if (ct) in carte5: 
                print('tu as 5 points') 
                t1 = t1 + 5 
                print ('total des points = ', t1) 
        
            if (ct) in carte6: 
                print('tu as 6 points') 
                t1 = t1 + 6 
                print ('total des points = ', t1) 
        
            if (ct) in carte7: 
                print('tu as 7 points') 
                t1 = t1 + 7 
                print ('total des points = ', t1) 
            if (ct) in carte8: 
                print('tu as 8 points') 
                t1 = t1 + 8 
                print ('total des points = ', t1) 
            if (ct) in carte9: 
                print('tu as 9 points') 
                t1 = t1 + 9 
                print ('total des points = ', t1) 
        
            if (ct) in carte10: 
                print('tu as 10 points') 
                t1 = t1 + 10 
                print ('total des points = ', t1) 
        
        
        #résultat 
        #6 carreau = 6 points et pas neuf 
        #tu as 9 points 
        #total des points = 9 
        #Touche q pour quitter 
        #enter pour continuer !!!! ne continue pas donc ne 
        #conserve pas les points antérieurs 
        
        
        
        #début du programme 
        
            choix = input("?") 
            if choix == 'q' : 
                break 
             
        0
    3. Bonsoir

      Ok C’est ce que je voulais.
      Je suis content car j’étais sur la bonne piste et ça m’encourage à poursuivre.
      J’ai vu comment tu as procédé avec while True que je n’avais pas encore bien étudié.
      Maintenant je vais peaufiner la fin du programme.
      Un grand merci
      C’est avec des gens sympas comme toi que des débutants peuvent avancer.
      Je regrette de ne pas avoir commencé plus vite au début de ma retraire mais j’avais programmé (déjà !) autre chose qui ne s’est pas réalisé malheureusement.

      Encore merci

      Bonne soirée.
      0
      1. Contributeur
        content d'avoir pu t'aider.
        peux-tu marquer le sujet comme résolu (en utilisant le lien en-dessous du titre)?
        bonne continuation!
        0