Aide programme. [Débutant]

Fermé
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021 - 24 sept. 2020 à 21:00
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021 - 27 sept. 2020 à 20:59
Bonjour,
Je suis actuellement en terminale spé NSI et je dois rendre un code pour lundi. Il s'agit du jeu de yams et je rencontre une mince difficulté (pour ce que je dois faire). Il s'agit de la suivante : Lors du comptage de point pour un brelan, ou un carré, je croyais avoir programmé ma fonction points pour qu'elle ne compte que lorsque liste.count(i)==3 et 4
Exemple : avec liste=[3,3,3,4,5] le programme est censé me renvoyer 9 points, or, il me renvoie le sum de la totalité de la liste. Idem pour le carré. J'aimerai avoir de l'aide pour corriger ceci, avant lundi. Je vous joint des screenshots de mon programme (les liste==[] correspondent a la meme ligne)



Configuration: Windows / Chrome 85.0.4183.121

15 réponses

Utilisateur anonyme
24 sept. 2020 à 21:39
Bonjour

si tu veux que quelqu'un t'aider, il faut poster le code, pas une image.
Voir ce petit tuto, primordial en python, car c'est le seul moyen de conserver l'indentation sur le site https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
1
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
24 sept. 2020 à 21:56
Merci beaucoup ! J'essaie et réitère après
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
Modifié le 24 sept. 2020 à 22:09
Voilà mon code
from random import randint


def des():
    print("Les dés sont les suivants")
    liste=[]
    for i in range(5):
        des=randint(1,6)
        liste.append(des)
    liste=tri_des(liste)
    print(liste)
    return (liste)
        
def tri_des(liste):
    n = len(liste)
    for j in range(n):
        for i in range(1,n):
            if liste[i-1]>liste[i]:
                liste[i-1],liste[i]=liste[i],liste[i-1]
    return (liste)
    
    
def choix(liste):
    print("Les dés ont été choisis, choisissez ceux que vous souhaitez relancer")
    liste2=[]
    for i in (liste):
        print("Souhaitez vous relancer le dé numéro",i)
        réponserelance=input()
        if réponserelance=="oui":
            i=randint(1,6)
            liste2.append(i)
        elif réponserelance=="non":
            i=i
            liste2.append(i)
        elif réponserelance!="oui" or "non":
            print("Recommençons, veuillez entrer oui ou non")
            return(choix(liste))
    liste2=tri_des(liste2)
    print("Votre set de dés final est : ")
    print(liste2)
    return(liste2)

def deuxiemerelance(liste2):
     print("Voulez vous relancer à nouveau les dés?")
     réponsejoueur=input()
     if réponsejoueur=="oui":
        return choix(liste2)
     else:
        print("Votre set de dés final est : ")  
        print(liste2)
        return(liste2)
    

        
def classer(liste):
    brelan=[]
    carré=[]
    fullhouse=[]
    petitesuite=[]
    grandesuite=[]
    chance=[]
    yams=[]
    classer=input("Où souhaitez vous ranger votre score ? Entrez 1 pour 'petite suite' , 2 pour 'grande suite' , 3 pour 'brelan', 4 pour 'carré', 5 pour 'Yam's !' , 6 pour 'chance', et 7 pour 'fullhouse' ")
        
    if classer=="1":
        petitesuite.append(liste)
        print('\033[31m' + '[petite suite]')
        print(petitesuite)
    elif classer=="2":
        grandesuite.append(liste)
        print('\033[31m' + '[grande suite]')
        print(grandesuite)
    elif classer=="3":
        brelan.append(liste)
        print('\033[31m' + '[brelan]')
        print(brelan)
    elif classer=="4":
        carré.append(liste)
        print('\033[31m' + '[carré]')
        print(carré)
    elif classer=="5":
        yams.append(liste)
        print('\033[31m' + '[yams]')
        print(yams)
    elif classer=="6":
        chance.append(liste)
        print('\033[31m' + '[chance]')
        print(chance)
    elif classer=="7":
        fullhouse.append(liste)
        print('\033[31m' + '[fullhouse]')
        print(fullhouse)

        
    
        
        
        
            

def points(liste):
    for i in liste:
        if liste.count(i)==3 or liste.count(i)==4:
            points_liste_2=[]
            for i in liste:
                if liste.count(i)==3 or liste.count(i)==4:
                    liste.remove!=i
                    points_liste_2.append(i)
            points_liste_2=sum(points_liste_2)
            print(points_liste_2)
            
        if liste.count(i)!=3 and liste.count(i)!=4:
            points_liste_3=[]
            points_liste_3.append(sum(liste))
            return (points_comb(liste),points_liste_3)
            

def points_comb(liste):
        points_liste_2=[]
        if liste==[1,2,3,4,5] or liste==[2,3,4,5,6]:
            points_liste_2.append(40)
        elif liste==[1,1,2,3,4] or liste==[1,2,2,3,4] or liste==[1,2,3,3,4] or liste==[1,2,3,4,4] or liste==[2,3,4,5,5] or liste==[2,3,4,4,5] or liste==[2,3,4,5,5] or liste==[3,4,5,5,6] or liste==[3,3,4,5,6] or liste==[3,4,4,5,6] or liste==[3,4,5,6,6] or liste==[2,3,3,4,5] or liste==[2,2,3,4,5] or liste==[1,2,3,4,6]:
            points_liste_2.append(30)
        elif liste==[1,1,1,2,2] or liste==[1,1,1,3,3] or liste==[1,1,1,4,4] or liste==[1,1,1,5,5] or liste==[1,1,1,6,6] or liste==[2,2,2,3,3] or liste==[2,2,2,4,4] or liste==[2,2,2,5,5] or liste==[2,2,2,6,6] or liste==[3,3,3,4,4] or liste==[3,3,3,5,5] or liste==[3,3,3,6,6] or liste==[4,4,4,5,5] or liste==[4,4,4,6,6] or liste==[5,5,5,6,6] or liste==[1,1,2,2,2] or liste==[1,1,3,3,3] or liste==[1,1,4,4,4] or liste==[1,1,5,5,5] or liste==[1,1,6,6,6] or liste==[2,2,3,3,3] or liste==[2,2,4,4,4] or liste==[2,2,5,5,5] or liste==[2,2,6,6,6] or liste==[3,3,4,4,4] or liste==[3,3,5,5,5] or liste==[3,3,6,6,6] or liste==[4,4,5,5,5] or liste==[4,4,6,6,6] or liste==[5,5,6,6,6]:
            points_liste_2.append(25)
        for i in liste:
            if liste.count(i)==5:
                points_liste_2.append(50)
                points_liste_2.append(sum(liste))
                return(sum(points_liste_2))
        return(points_liste_2)
            
    


def yams():
#    liste=identification(deuxiemerelance(choix(des())))
#    print(liste)
#    liste=deuxiemerelance(choix(des()))
     liste=deuxiemerelance(choix(des()))
     print(liste)
     classer(points(liste))
     print('\033[30m' + "La premiere case correspond au score obtenu si vous avez eu une combinaison. Si elle n'est pas vide, prenez le score de cette case en compte. Il s'agit de votre score. En revanche, si cette case est vide, votre score correspond à la case de droite. Les combinaisons ainsi dites sont : 'Yams','Grande suite','fullhouse','petite suite'. Les autres combinaisons se comptent par la somme de leurs chiffres")
#    return(liste)

#def classer(resultat_liste,points_liste):
#    score=[]
#    if resultat_liste==["Vous avez un brelan"]:
#        print("Souhaitez vous placer votre brelan dans la case brelan?")
#        reponseuser=input()
#        if reponseuser=="oui":
#            score.append(resultat_liste,points_liste)
#            return score
#            
if __name__ == "__main__":
    yams()
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 25 sept. 2020 à 11:57
liste.remove!=i
renvoie True
mais ne "remove" rien du tout ...
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
25 sept. 2020 à 13:22
Comment corriger cela? J'ai essayé en remplaçant pop a la place de remove mais même résultat... J'ai testé également si liste.remove!=i==True alors liste=liste.pop(i) mais sans résultat...
Merci de votre réponse et en attente de vous lire
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 25 sept. 2020 à 13:26
en fait, pour enlever un élément i d'une liste, il faut tout simplement faire:

liste.remove(i)

n = liste.pop() enlève le dernier élément et le met dans n
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
25 sept. 2020 à 13:49
Après beaucoup d'essais je n'ai pas réussi ..... Je réexplique mon idée : Je parcours ma liste et si je vois que dans une liste par exemple : liste=[1,1,1,2,3] on enlève tout ce qui n'est pas i lorsque il y a liste.count(i)=3 donc ça devrait enlever 2 et 3 et faire le sum donc de la liste [1,1,1] car lors du comptage de point je ne veux le résultat que des 1 (des nombres pour (i)=3 ou 4) et non pas le résultat de toute la liste... Je suis dans une impasse je ne comprends pas trop comment m'y prendre malgré votre explication
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 25 sept. 2020 à 16:55
" liste=[1,1,1,2,3] on enlève tout ce qui n'est pas i lorsque il y a liste.count(i)=3 "

si liste.count(i) == 3

     pour chaque element de liste 

          si element == i -> l'ajouter à points_liste_2    (  points_liste_2.append(element)  )

     En fin de boucle :  total  = sum(points_liste_2)          (donc 1+1+1 = 3)



(total = sum et non pas points_liste_2 = sum c' est une liste, or, c'est juste un entier que l'on veut)
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
25 sept. 2020 à 18:43
C'est ce que je fais, ca marche toujours pas.... Voici ma fonction
def points(liste):
    for i in liste:
        points_liste_2=[]
        if liste.count(i)==3:
            for x in liste:
                if x==i :
                    points_liste_2.append(x)
            total=sum(points_liste_2)
            print(total)
            return(total)
                
        if liste.count(i)!=3 and liste.count(i)!=4:
            points_liste_3=[]
            points_liste_3.append(sum(liste))
            return (points_comb(liste),points_liste_3)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
25 sept. 2020 à 19:57
J'ai copié ta fonction et j'ai fait juste ceci pour voir:

def points(liste):
	for i in liste:
		points_liste_2=[]
		if liste.count(i)==3:
			for x in liste:
				if x==i : points_liste_2.append(x)
			total=sum(points_liste_2)
			print(total)
			return(total)

		if liste.count(i)!=3 and liste.count(i)!=4:
			points_liste_3=[]
			points_liste_3.append(sum(liste))
			return (points_comb(liste),points_liste_3)

liste = [1,1,1,2,2,3]
points(liste)


Et ca m'imprime bien 3
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
25 sept. 2020 à 21:24
Merci, cela marche pour le "1" et le "3" mais étrangement pas pour les autres chiffres.... Je vous envoie mon code et vous recommende de tester avec celui ci, pour que vous voyiez par vous meme . Je ne doute pas de l'efficacité de votre code , mais je ne comprend pas pourquoi cela ne marche pas avec toutes les valeurs .
from random import randint


def des():
    print("Les dés sont les suivants")
    liste=[]
    for i in range(5):
        des=randint(1,6)
        liste.append(des)
    liste=tri_des(liste)
    print(liste)
    return (liste)
        
def tri_des(liste):
    n = len(liste)
    for j in range(n):
        for i in range(1,n):
            if liste[i-1]>liste[i]:
                liste[i-1],liste[i]=liste[i],liste[i-1]
    return (liste)
    
    
def choix(liste):
    print("Les dés ont été choisis, choisissez ceux que vous souhaitez relancer")
    liste2=[]
    for i in (liste):
        print("Souhaitez vous relancer le dé numéro",i)
        réponserelance=input()
        if réponserelance=="oui":
            i=randint(1,6)
            liste2.append(i)
        elif réponserelance=="non":
            i=i
            liste2.append(i)
        elif réponserelance!="oui" or "non":
            print("Recommençons, veuillez entrer oui ou non")
            return(choix(liste))
    liste2=tri_des(liste2)
    print("Votre set de dés final est : ")
    print(liste2)
    return(liste2)

def deuxiemerelance(liste2):
     print("Voulez vous relancer à nouveau les dés?")
     réponsejoueur=input()
     if réponsejoueur=="oui":
        return choix(liste2)
     else:
        print("Votre set de dés final est : ")  
        print(liste2)
        return(liste2)
    

        
def classer(liste):
    brelan=[]
    carré=[]
    fullhouse=[]
    petitesuite=[]
    grandesuite=[]
    chance=[]
    yams=[]
    classer=input("Où souhaitez vous ranger votre score ? Entrez 1 pour 'petite suite' , 2 pour 'grande suite' , 3 pour 'brelan', 4 pour 'carré', 5 pour 'Yam's !' , 6 pour 'chance', et 7 pour 'fullhouse'. Entrez '0petitesuite' si vous souhaitez inscrire 0 dans la petite suite, '0grandesuite' si vous souhaitez inscrire 0 dans la grande suite. Vous pouvez faire cela pour toutes les combinaisons en remplaçant le nom de la combinaison par la combinaison souhaitée ")
        
    if classer=="1":
        petitesuite.append(liste)
        print('\033[31m' + '[petite suite]')
        print(petitesuite)
        print("Vous avez mit",liste,"dans la petite suite")
    elif classer=="2":
            grandesuite.append(liste)
            print('\033[31m' + '[grande suite]')
            print(grandesuite)
    elif classer=="3":
        brelan.append(liste)
        print('\033[31m' + '[brelan]')
        print(brelan)
        print("Vous avez mit",liste,"dans le brelan")
    elif classer=="4":
        carré.append(liste)
        print('\033[31m' + '[carré]')
        print(carré)
        print("Vous avez mit",liste,"dans le carré")
    elif classer=="5":
        if liste==[1,1,1,1,1] or liste==[2,2,2,2,2] or liste==[3,3,3,3,3] or liste==[4,4,4,4,4] or liste==[5,5,5,5,5] or liste==[6,6,6,6,6]:
            yams.append(liste)
            print('\033[31m' + '[yams]')
            print(yams)
            print("Vous avez mit",liste,"dans le yam's")
        else:
            liste=0
            yams.append(liste)
            print('\033[31m' + '[yams]')
            print(yams)
            print("Vous avez mit 0 points dans le Yam's")
    elif classer=="6":
        chance.append(liste)
        print('\033[31m' + '[chance]')
        print(chance)
        print("Vous avez mit",liste,"dans le chance")
    elif classer=="7":
        fullhouse.append(liste)
        print('\033[31m' + '[fullhouse]')
        print(fullhouse)
        print("Vous avez mit",liste,"dans le fullhouse")
    elif classer=="0petitesuite":
        liste=0
        petitesuite.append(liste)
        print('\033[31m' + '[petite suite]')
        print(petitesuite)
        print("Vous avez mit",liste,"dans la petite suite")
    elif classer=="0grandesuite":
        liste=0
        grandesuite.append(liste)
        print('\033[31m' + '[grande suite]')
        print(grandesuite)
        print("Vous avez mit",liste,"dans la grande suite")
    elif classer=="0brelan":
        liste=0
        brelan.append(liste)
        print('\033[31m' + '[brelan]')
        print(brelan)
        print("Vous avez mit",liste,"dans le brelan")
    elif classer=="0carre":
        liste=0
        carré.append(liste)
        print('\033[31m' + '[carré]')
        print(brelan)
        print("Vous avez mit",liste,"dans le carré")
    elif classer=="0yams":
        liste=0
        yams.append(liste)
        print('\033[31m' + '[yams]')
        print(yams)
        print("Vous avez mit",liste,"dans le yams")
    elif classer=="0chance":
        liste=0
        chance.append(liste)
        print('\033[31m' + '[chance]')
        print(chance)
        print("Vous avez mit",liste,"dans la chance")
    elif classer=="0fullhouse":
        liste=0
        fullhouse.append(liste)
        print('\033[31m' + '[fullhouse]')
        print(fullhouse)
        print("Vous avez mit",liste,"dans le fullhouse")
    elif classer=="0brelan":
        liste=0
        brelan.append(liste)
        print('\033[31m' + '[brelan]')
        print(brelan)
        print("Vous avez mit",liste,"dans le brelan")



        
    
        
        
        
            

def points(liste):
	for i in liste:
		points_liste_2=[]
		if liste.count(i)==3:
			for x in liste:
				if x==i : points_liste_2.append(x)
			total=sum(points_liste_2)
			print(total)
			return(total)

		if liste.count(i)!=3 and liste.count(i)!=4:
			points_liste_3=[]
			points_liste_3.append(sum(liste))
			return (points_comb(liste),points_liste_3)
            

def points_comb(liste):
        points_liste_2=[]
        if liste==[1,2,3,4,5] or liste==[2,3,4,5,6]:
            points_liste_2.append(40)
        elif liste==[1,1,2,3,4] or liste==[1,2,2,3,4] or liste==[1,2,3,3,4] or liste==[1,2,3,4,4] or liste==[2,3,4,5,5] or liste==[2,3,4,4,5] or liste==[2,3,4,5,5] or liste==[3,4,5,5,6] or liste==[3,3,4,5,6] or liste==[3,4,4,5,6] or liste==[3,4,5,6,6] or liste==[2,3,3,4,5] or liste==[2,2,3,4,5] or liste==[1,2,3,4,6]:
            points_liste_2.append(30)
        elif liste==[1,1,1,2,2] or liste==[1,1,1,3,3] or liste==[1,1,1,4,4] or liste==[1,1,1,5,5] or liste==[1,1,1,6,6] or liste==[2,2,2,3,3] or liste==[2,2,2,4,4] or liste==[2,2,2,5,5] or liste==[2,2,2,6,6] or liste==[3,3,3,4,4] or liste==[3,3,3,5,5] or liste==[3,3,3,6,6] or liste==[4,4,4,5,5] or liste==[4,4,4,6,6] or liste==[5,5,5,6,6] or liste==[1,1,2,2,2] or liste==[1,1,3,3,3] or liste==[1,1,4,4,4] or liste==[1,1,5,5,5] or liste==[1,1,6,6,6] or liste==[2,2,3,3,3] or liste==[2,2,4,4,4] or liste==[2,2,5,5,5] or liste==[2,2,6,6,6] or liste==[3,3,4,4,4] or liste==[3,3,5,5,5] or liste==[3,3,6,6,6] or liste==[4,4,5,5,5] or liste==[4,4,6,6,6] or liste==[5,5,6,6,6]:
            points_liste_2.append(25)
        for i in liste:
            if liste.count(i)==5:
                points_liste_2.append(50)
                points_liste_2.append(sum(liste))
                return(sum(points_liste_2))
        return(points_liste_2)
            
    


def yams():
#    liste=identification(deuxiemerelance(choix(des())))
#    print(liste)
#    liste=deuxiemerelance(choix(des()))
     liste=deuxiemerelance(choix(des()))
     print(liste)
     classer(points(liste))
     print('\033[30m' + "La premiere case correspond au score obtenu si vous avez eu une combinaison. Si elle n'est pas vide, prenez le score de cette case en compte. Il s'agit de votre score. En revanche, si cette case est vide, votre score correspond à la case de droite. Les combinaisons ainsi dites sont : 'Yams','Grande suite','fullhouse','petite suite'. Les autres combinaisons se comptent par la somme de leurs chiffres")
#    return(liste)

#def classer(resultat_liste,points_liste):
#    score=[]
#    if resultat_liste==["Vous avez un brelan"]:
#        print("Souhaitez vous placer votre brelan dans la case brelan?")
#        reponseuser=input()
#        if reponseuser=="oui":
#            score.append(resultat_liste,points_liste)
#            return score
#            
if __name__ == "__main__":
    yams()
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
25 sept. 2020 à 21:28
ca marche aussi pour le 2! mais jai remarqué visiblement que ca ne marche pas que dans certaines conditions... très étrange
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
25 sept. 2020 à 23:19
Up :/
0
Utilisateur anonyme > Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
25 sept. 2020 à 23:51
Ça ne marche pas aux pièces ici, on est tous bénévoles et on prend sur notre temps personnel pour essayer d’aider.
Un vendredi soir après 21h30 Phil a probablement d’autres priorités que toi.
Quand on demande de l’aide sur un forum, il faut accepter que les réponses arrivent quand elles arrivent si elles arrivent
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021 > Utilisateur anonyme
26 sept. 2020 à 00:47
je ne l'ai jamais réprimandé sur ce point là en disant up je m'adressait aux autres personnes potentielles....
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021 > Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
26 sept. 2020 à 00:53
Néanmoins je m'excuse si j'ai paru trop impatient , ce n'était pas mon intention, auprès de phil et toi
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 26 sept. 2020 à 19:05
Hello Sh3perd,

Dans ta fonction points(), il manque un test, non ?

if liste.count(i)==3:

C'est plutôt:

if liste.count(i)==3 or liste.count(i)==4:
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
26 sept. 2020 à 21:22
En effet ! Mais même problème haha
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
27 sept. 2020 à 11:33
Bonjour Sh3perd,

Bizarre !

Chez moi, [5,5,5,2,2] retourne bien 15

et [1,5,5,5,4] retourne [ ] [20]

En fait, dans la fonction points(), on est dans le 1er cas (if (liste.count(i)==3 or liste.count(i)==4): si les 3 premiers chiffres sont au nombre de 3 ou 4

Sinon, meme s'il y a trois 5 dans la liste, mais avec un premier chiffre différent, on tombe dans le 2eme cas (if liste.count(i)!=3 and liste.count(i)!=4:)

A part ça, tu devrais ajouter un titre, à l'affichage, c'est mieux:

if __name__ == "__main__":
    print('\n******** Yams *********\n')
    yams()


Pour les question avec réponse "oui" ou "non", c'est plus clair si tu affiche ce que tu attends comme réponse (avec contrôle de la saisie) :

     reponsejoueur = ''
     while(reponsejoueur not in ['o','n']):
    	 reponsejoueur=input("Voulez vous relancer à nouveau les dés o/n ? ")


Evite les caractères accentués dans les noms de variables: réponsejoueur

Pour les longues explications tu peux faire comme ça:
print('''\nLa premiere case correspond au score obtenu si vous avez eu une combinaison.
Si elle n'est pas vide, prenez le score de cette case en compte: il s'agit de votre score.
En revanche, si cette case est vide, votre score correspond à la case de droite.
Les combinaisons ainsi dites sont : 'Yams','Grande suite','fullhouse','petite suite'.
Les autres combinaisons se comptent par la somme de leurs chiffres''')


A l'affichage, c'est plus sympa

Et ça aussi:

q='''
Petite suite : 1
grande suite : 2
brelan       : 3
carré        : 4
Yam's        : 5
chance       : 6
fullhouse    : 7
'''
classe = 0
print(q)
while(classe not in [1,2,3,4,5,6,7]):
        classe=int(input('Où souhaitez vous ranger votre score ? '))
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 27 sept. 2020 à 11:47
Un exemple d'exécution chez moi:

0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
Modifié le 27 sept. 2020 à 16:52
Merci beaucoup pour ces améliorations Phil :) Je les ai ajoutés dans mon code. Mais je me demande alors comment faire pour que le code comprenne que je ne veux pas seulement calculer la somme des 3 premiers termes de la liste lorsqu'ils sont au nombre de 3 ou de 4, mais pour tous les termes ?
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 27 sept. 2020 à 17:29
Ah oh, c'est ça que tu voulais, ça n'était pas clair depuis le début
Ce que tu veux, c'est ça ??? :

si liste = [2,2,2,3,3] -> total = 6
ou bien si liste = [1,2,2,2,3] -> total = 6

La fonction points() ne fait pas ça du tout:
boucle sur chaque terme:
    si le 1er terme apparait 3 ou 4 fois:
        total = somme des termes
        return(total) :  # on sort tout de suite de la fonction, et donc on n'analyse pas plus loin

0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
Modifié le 27 sept. 2020 à 17:40
C'est exact ! En gros , ce que je voudrais c'est que le code me calcule le score de mon brelan ou de mon carré, c'est à dire : si liste=[1,2,3,3,3] il me renvoie 3*3 donc 9 , ou si liste = [5,5,5,5,6] il me renvoie 20. En gros, peu importe la place du brelan (ou du carré) dans la liste, l'objectif serait de le calculer, et non pas calculer la somme de tout les termes de la liste. Je m'excuse si je n'étais pas clair, c'était difficile à expliquer, mais j'espère que maintenant c'est mieux. Et ainsi, si il ne détecte pas de brelan ni de carré dans ma liste, il renvoie a la fonction points_comb qui va alors détecter si l'on a une combinaison afin de la calculer, de la renvoyer, et de la classer plus tard.
Quand je dis qu'il renvoie a points_comb, c'est ceci (à partir de la ligne 11) :
def points(liste):
	for i in liste:
		points_liste_2=[]
		if liste.count(i)==3 or liste.count(i)==4:
			for x in liste:
				if x==i : points_liste_2.append(x)
			total=sum(points_liste_2)
			print(total)
			return(total)

		if liste.count(i)!=3 and liste.count(i)!=4:
			points_liste_3=[]
			points_liste_3.append(sum(liste))
			return (points_comb(liste),points_liste_3)
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021 > Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
27 sept. 2020 à 17:46
Qui plus est, quand aucune combinaison n'est détectée, ni aucun brelan ni carré, mon code me calcule (déja, ca fonctionne actuellement) la somme totale de ma liste.
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 27 sept. 2020 à 18:01
Un truc comme ça, alors:

def points(liste):
 ''' Calcul du score'''

    deja_vu = []
    total = 0
    for element in liste:
        if (liste.count(element)==3 or liste.count(element)==4):
            if(element not in deja_vu):
                total = element * liste.count(element)
                deja_vu.append(element)
    print(total)
    return(total)


(Il n'y a que le test pour brelan ou carré)
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
Modifié le 27 sept. 2020 à 18:02
Merci beaucoup ! Je vais a présent rajouter le else, et voir si ca fonctionne, pour l'instant R.A.S ! Merci beaucoup Phil :)
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
27 sept. 2020 à 18:03
Reprends voir mon code je viens de le modifier ...
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
27 sept. 2020 à 18:03
J'ai également modifié mon message, autant pour moi je n'avais pas vu sur le coup :)
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
27 sept. 2020 à 18:11
pour le else, c'est plutot comme ça:
def points(liste):
    ''' Calcul du score'''

    deja_vu = []
    total = 0

    for element in liste:
        if (liste.count(element)==3 or liste.count(element)==4):
            if(element not in deja_vu): total = element * liste.count(element)
            deja_vu.append(element)
    
    if(total != 0):
        return(total)
    else:
        for element in liste:
            if liste.count(element)!=3 and liste.count(element)!=4:
                points_liste_3=[]
                points_liste_3.append(sum(liste))
        return (points_comb(liste),points_liste_3)
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
27 sept. 2020 à 18:30
Merci beaucoup pour le temps que vous m'avez accordé Phil, c'était très gentil de votre part .Tout fonctionne, vous faites un heureux. Passez une excellente soirée :)
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 27 sept. 2020 à 20:07
ok, en espérant que tu n'as pas fait que copier/coller, mais que tu as bien examiné et assimilé tout ça, et également les améliorations:

r = input('réponse ? : ')

au lieu de
print('réponse ? : ')
input r


faire un print sur plusieurs lignes avec les triples quotes : ' ' '

faire une saisie avec contrôle de la réponse
r = ''
while(r not in ['o', 'n']):
    r = input(réponse (o/n) ? : ')


Il y avait aussi des noms de variables identiques à des noms de fonctions : à éviter

Eviter aussi les caractères accentués dans les noms de variables ou de fonctions
0
Sh3perd Messages postés 74 Date d'inscription lundi 6 juin 2016 Statut Membre Dernière intervention 4 mars 2021
27 sept. 2020 à 20:59
Oui évidemment , je compte garder cette discussion si jamais j'oublie ces nouvelles choses. Le code fonctionne, sauf pour le fullhouse, il le gère comme un brelan dans le calcul des points, mais je m'y attendais un peu, enfin c'est pas bien grave.
0