Fonction "choice"

Résolu/Fermé
lecorse Messages postés 126 Date d'inscription samedi 11 mars 2006 Statut Membre Dernière intervention 19 juin 2020 - Modifié le 3 déc. 2017 à 01:58
yg_be Messages postés 23242 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 octobre 2024 - 4 déc. 2017 à 20:42
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

yg_be Messages postés 23242 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 octobre 2024 Ambassadeur 1 541
2 déc. 2017 à 20:58
bonsoir, carte2 ou cartes2, que choisis-tu?
0
lecorse Messages postés 126 Date d'inscription samedi 11 mars 2006 Statut Membre Dernière intervention 19 juin 2020 18
3 déc. 2017 à 15:37
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
georges97 Messages postés 12297 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 5 octobre 2024 2 363
3 déc. 2017 à 15:58
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
yg_be Messages postés 23242 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 octobre 2024 1 541
3 déc. 2017 à 16:39
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
yg_be Messages postés 23242 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 octobre 2024 1 541
3 déc. 2017 à 16:46
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
lecorse Messages postés 126 Date d'inscription samedi 11 mars 2006 Statut Membre Dernière intervention 19 juin 2020 18
4 déc. 2017 à 11:38
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
yg_be Messages postés 23242 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 octobre 2024 1 541
4 déc. 2017 à 16:02
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
yg_be Messages postés 23242 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 octobre 2024 1 541 > yg_be Messages postés 23242 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 octobre 2024
Modifié le 4 déc. 2017 à 19:42
ou 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
lecorse Messages postés 126 Date d'inscription samedi 11 mars 2006 Statut Membre Dernière intervention 19 juin 2020 18
4 déc. 2017 à 20:31
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
yg_be Messages postés 23242 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 octobre 2024 1 541
4 déc. 2017 à 20:42
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