Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercices du cours Python / postez ici !

    15 février 2020 à 22:03:45

    Ce que doit faire votre programme :
    Le palais est un grand carré de taille 10×10, et le robot se trouve au départ dans le coin en bas à gauche, comme représenté ci-dessous :
    Votre robot doit passer une et une seule fois dans chacune des pièces, puis se retrouver dans sa case de départ.
    • Partager sur Facebook
    • Partager sur Twitter
      15 février 2020 à 22:18:52

      Josy-AnneLeccia a écrit:

      Ce que doit faire votre programme :
      Le palais est un grand carré de taille 10×10, et le robot se trouve au départ dans le coin en bas à gauche, comme représenté ci-dessous :
      Votre robot doit passer une et une seule fois dans chacune des pièces, puis se retrouver dans sa case de départ.

      Ton énoncé est incomplet et ce n'est pas un  exercice du cours Python, poste ton message dans un nouveau fil de discussion (pas Exercices du cours Python) et avec l'énoncé complet sinon on ne peut pas répondre.
      • Partager sur Facebook
      • Partager sur Twitter
        16 février 2020 à 17:40:42

        Bonjour à tous,

        Je suis débutant en Python.

        J'ai écrit le petit programme suivant:

        i = 0
        liste = [32,5,12,8,3,75,2,15]
        longueur = len (liste) -1
        compteur = 0
        
        
        while (compteur < longueur):
            if (liste[0]>liste[1]):
                del(liste[1])
            else:
                del(liste[0])
            compteur +=1
        
        print("le plus grand élément de cette liste a la valeur",liste)

        Le résultat est le suivant:

        le plus grand élément de cette liste a la valeur [75]

        J'aimerais que le chiffre 75 ne soit pas affiché comme une liste, donc sans les crochets. Quelqu'un pourrait il m'indiquer comment faire (s'il existe une solution)?

        Merci d'avance

        Bien cordialement


        • Partager sur Facebook
        • Partager sur Twitter
          16 février 2020 à 18:18:19

          Comme le maxi que tu as trouvé est le seul élément de la liste, c'est liste[0]. Tu fais afficher liste[0] au lieu de liste.
          • Partager sur Facebook
          • Partager sur Twitter

          S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

            19 février 2020 à 11:55:15

            Bonjour,

            Je suis sur l'exercice du cours python développement sur les casinos. Je ne comprends pas pourquoi mon code ne marche pas. J'ai lu la correction et j'ai fait quelque chose de similaire mais j'ai une erreur

            TypeError: not all arguments converted during string formatting

             J'ai l'impression que cette erreur est du a ma fonction couleur. Pourtant celle ci fonctionne bien en la testant séparement. Pouvez vous m'aider?

            from random import randrange
            from math import ceil
            import os
            
            
            def couleur (numero) :
                if numero % 2 == 0 :
                    return "rouge"
                else :
                    return "noir"
            
               
            
            argent = 50
             
            
            while argent > 0 :
                numerochoisi = input ("quel numéro voulez vous jouer?")                       
                mise = input ("quelle somme voulez vous miser?")
                                       
                numerogagnant= randrange(50)
                print ("le numéro gagnant est" ,numerogagnant)
                                    
                couleurnumerogagnant = couleur(numerogagnant)
                couleurnumerochoisi = couleur(numerochoisi)
                print ("la couleur du numéro gagnant est" ,couleurnumerogagnant)
                print ("la couleur du numéro choisi est", couleurnumerochoisi)
                                       
                if numerogagnant == numerochoisi :
                    argent = argent + (mise+ mise*3)
                    print ("jackpot! votre argent est de ", argent)
                    
                elif couleurnumerogagnant == couleurnumerochoisi :
                    argent = argent + (mise + ceil(mise/2))
                    print ("même couleur! Votre argent est de", argent)
                else :
                    argent = argent - mise
                    print ("raté! Votre argent est de ", argent)



            • Partager sur Facebook
            • Partager sur Twitter
              19 février 2020 à 12:16:36

              MatthieuMalric2 a écrit:

              Bonjour,

              Je suis sur l'exercice du cours python développement sur les casinos. Je ne comprends pas pourquoi mon code ne marche pas. J'ai lu la correction et j'ai fait quelque chose de similaire mais j'ai une erreur

              TypeError: not all arguments converted during string formatting

               J'ai l'impression que cette erreur est du a ma fonction couleur. Pourtant celle ci fonctionne bien en la testant séparement. Pouvez vous m'aider?



              L'erreur est assez vicieuse. Si tu écris maVariable % 2 et si ma variable est une chaîne alors l'opération n'est pas un calcul de reste mais un formatage de chaîne, ce qui suppose que maVariable ait une certaine syntaxe. Dans ton cas, maVariable est du genre la chaîne "42" qui n'a pas la bonne syntaxe, d'où l'erreur.

              Remède : convertir numero en int (tu le fais la première fois mais pas la 2e).

              • Partager sur Facebook
              • Partager sur Twitter
                19 février 2020 à 12:17:52

                La fonction couleur fonctionne bien quand tu lui passes un nombre entier.

                Mais dans ton code, input renvoie une variable de type str, donc numerochoisi est une chaîne de caractères, pas un nombre. Et là ça plante (l'opération % n'a pas la même signification).

                • Partager sur Facebook
                • Partager sur Twitter
                  19 février 2020 à 21:04:30

                  Bonjour, 

                  Je bossais sur l'exercice de re-travail du labyrinthe en réseau et l'activités a été supprimer.

                  Est-ce que quelqu'un possède encore la correction ? J'aimerais m'auto-évaluer 

                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 février 2020 à 12:32:47

                    Merci beaucoup pour vos réponses! Effectivement sa marche bien en convertissant mes inputs en int! Merci
                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 février 2020 à 16:19:30

                      Bonjour

                      Je suis en train de faire un exercice Python. Voilà le sujet :

                      Ce que doit faire votre programme :

                      Votre programme devra lire le nombre d'emplacements nbEmplacements (au maximum 1 000), puis pour chaque emplacement à partir de 0, le numéro du marchand à qui est attribué l'emplacement (entre 0 et nbEmplacements − 1).

                      Ensuite, pour chaque marchand de 0 à nbEmplacements − 1, votre programme devra afficher le numéro de l'emplacement qui lui est attribué.

                      ET voici mon début de programme :

                      nbEmplacements = int(input())
                      if nbEmplacements < 1001:
                         for nbEmplacement in range(0, nbEmplacements):
                            marchand = int(input())   
                         for marchand in range(0, nbEmplacements):
                            

                      Je suis vraiment bloqué  et je ne sais pas comment avancer.

                      Merci d'avance

                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 février 2020 à 17:24:34

                        Tu ne donnes pas l'énoncé complet qui est ICI. Assure-toi d'avoir bien compris l'énoncé et d'être capable de donner la réponse sans Python, à la main.

                        Ta ligne 2 ne sert à rien.

                        Lignes 3-4 : OK sauf que tu utilises deux fois nbEmplacements (en écrasant le premier) et que tu ne fais rien de marchand. A rectifier.

                        Il y a plusieurs façons de faire à partir de là. Le plus simple serait de construire une liste marchands de nbEmplacements valeurs 0 et de remplir cette liste au fur et à mesure que es dans ta boucle ligne 4.

                        -
                        Edité par PascalOrtiz 22 février 2020 à 17:24:52

                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 février 2020 à 18:05:27

                          Merci pour ta réponse rapide.

                          Mais je n'ai pas tout à fait saisi ce que tu voulais dire.

                          Que faut -il que je rectifie aux lignes 3 et 4?

                          Et pour la liste, comment la trier par ordre croissant et, ensuite, afficher les éléments de la liste, comme demandé par le sujet?

                          Merci bien

                          • Partager sur Facebook
                          • Partager sur Twitter
                            22 février 2020 à 18:23:14

                            Tu dois revoir l'essentiel de ton programme et sa logique et t'assurer d'avoir bien compris ce qu'il faut faut faire et comment le faire sans python (l'algorithme) Et je ne suis pas sûr que tu aies suffisamment pratiqué Python et fait de petits exos pour pouvoir répondre au problème que tu fois résoudre. 

                            UltraInstinct a écrit:

                            Que faut -il que je rectifie aux lignes 3 et 4?

                             Si tu écris qqchose du genre

                            n=42
                            for n in range(0, n):
                            

                            ton n=42 est perdu dans la boucle for, écrasé par la variable de la boucle. Ce genre de confusion ultra basique semble montrer que tu n'as pas jamais pratiqué de boucle for, ce qui est bien gênant pour faire l'exo.

                             Ensuite, tu fais marchand=input() et c'est tout sans faire quoi que ce soit avec marchand qui est donc perdu.

                             UltraInstinct a écrit:

                            Et pour la liste, comment la trier par ordre croissant et, ensuite, afficher les éléments de la liste, comme demandé par le sujet?

                             Déjà, crée la liste dans ton code et montre-nous. Et ta question sur l'ordre croissant montre que tu n'as pas bien compris les listes ou alors le problème posé (qui n'est pas des plus simples quand on débute). Ici, il n'y a rien à trier car ta liste est triée par indices croissants. Pour l'affichage, il se fera après la boucle, dans une 2e boucle for.

                            -
                            Edité par PascalOrtiz 22 février 2020 à 18:23:27

                            • Partager sur Facebook
                            • Partager sur Twitter
                              22 février 2020 à 18:51:13

                              voilà où j'en suis :

                              nbEmplacements = int(input())
                              Marchand = []
                              for loop in range(0, nbEmplacements):
                                 marchand = int(input())   
                                 Marchand.append([marchand])
                                 



                              • Partager sur Facebook
                              • Partager sur Twitter
                                22 février 2020 à 19:00:04

                                UltraInstinct a écrit:

                                voilà où j'en suis :

                                nbEmplacements = int(input())
                                Marchand = []
                                for loop in range(0, nbEmplacements):
                                   marchand = int(input())   
                                   Marchand.append([marchand])
                                   



                                En progrès très net ! Attention que tu ajoutes la liste formée de marchand alors qu'il faut juste ajouter marchand tout court, je te laisse rectifier.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  22 février 2020 à 19:10:41

                                  Merci, j'ai rectifié.

                                  Ensuite, comment faire pour associer chaque marchand à son emplacement et l'afficher dans l'ordre croissant?

                                  J'ai deja fair un début de boucle :

                                  nbEmplacements = int(input())
                                  emplacement = 0
                                  Marchand = []
                                  for loop in range(0, nbEmplacements):
                                     marchand = int(input())   
                                     Marchand.extend([marchand])
                                  for marchand in Marchand:



                                  -
                                  Edité par UltraInstinct 22 février 2020 à 19:11:51

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    22 février 2020 à 21:37:01

                                    Tu as compliqué avec extend mais peu importe tu as ta liste. Le problème c'est que je ne te parlais pas de cette liste là !

                                    Admettons que comme dans l'exemple de france-ioi, ta liste Marchand soit formée de 5 marchands

                                    Marchand = [1, 4, 0, 3, 2]


                                    Bien comprendre que les indices de cette liste sont des emplacements, des numéros de places pour dire les choses autrement. Et les valeurs de la liste sont des numéros de marchands :

                                    place    : 0 1 2 3 4
                                    ----------------------
                                    marchand : 1 4 0 3 2
                                    


                                    A partir de là, tu as deux possibilités pour répondre.

                                    Première possibilité (deux boucles for imbriquées) :

                                    • tu parcours les entiers i de 0 à 4 (i représente un marchand) avec range
                                    • à chaque indice i tu parcours ta liste Marchand par indice j et tu attends de trouver dans cette liste la valeur i
                                    • tu affiches j

                                    Deuxième possibilité :

                                    • tu crées une nouvelle liste places formée de 5 valeurs arbitraires, disons -1
                                    • tu parcours ta liste Marchand par indice i de 0 à 4
                                    • à chaque indice i, on appelle j la valeur de Marchand[i] : tu mets dans places[j] la valeur i
                                    • tu affiches avec une 3e boucle for les valeurs de ta liste places.

                                    La première méthode est conceptuellement plus simple mais oblige à créer deux boucles for imbriquées (tu as déjà du mal avec une !) et en plus tu ne passeras par les tests de performance. 

                                    La 2e est plus simple à écrire mais moins facile à comprendre.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      23 février 2020 à 13:13:15

                                      Merci de ton aide.

                                      Mais j'abandonne

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        23 février 2020 à 15:18:40

                                        Je viens de finir le mien. Cela m'a quand même pris 2 ou 3 heures...

                                        Vivement que je progresse.

                                        En tout cas, ça m'a bien aidé à comprendre les `try`et èxcept`dont j'avais du mal à saisir le concept.

                                        Voici mon ZCasino:

                                        from random import randrange
                                        from math import ceil
                                        money = 1000
                                        playing = True
                                        while playing == True:
                                        	guess=0
                                        	while guess < 1 or guess > 50:
                                        		try:
                                        			guess = int(input('Guess a number between 1 and 50:'))
                                        		except ValueError:
                                        			print("The value is invalid. It must be a number between 1 and 50.")
                                        			continue
                                        		if guess < 1 or guess > 50:
                                        			print("The number guessed must be between 1 and 50.")
                                        	print('You have {}$'.format(money))
                                        	bet=0
                                        	while bet == 0 or bet > money or bet < 0:
                                        		try:
                                        			bet = int(input('Enter the ammount of money you want to bet:'))
                                        		except ValueError:
                                        			print("The value is invalid. Enter a valid value.")
                                        			continue
                                        		if bet > money or bet < 0:
                                        			print("The ammount must not exceed the ammount of money you have, and can not be negative.")
                                        	result = randrange(1, 50)
                                        	print('You chose the number {}!'.format(guess))
                                        	print('You bet {} on it!'.format(bet))
                                        	print('The result is {}!'.format(result))
                                        	if result == guess:
                                        		print('Congratulations, you won {}$!'.format(bet * 3))
                                        		money += bet * 3
                                        		print('You now have {}$'.format(money))
                                        	elif result % 2 == guess % 2:
                                        		print('Congratulations, you won {}$ for picking the right colour!'.format(ceil(bet / 2)))
                                        		money += ceil(bet / 2)
                                        		print('You now have {}$'.format(money))
                                        	else:
                                        		print('Sadly, you lost...')
                                        		money -= bet
                                        		print('You now have {}$'.format(money))
                                        		if money < 0 or money == 0:
                                        			playing = False
                                        			print("You can't continue to play. You have no money left.")
                                        	continue_playing = 0		
                                        	while continue_playing == 0 or continue_playing != 'y' and continue_playing != 'n':
                                        		continue_playing = str(input('Do you want to continue? (Y/N)').lower())
                                        		if continue_playing == 0 or continue_playing != 'y' and continue_playing != 'n':
                                        			print('Please, enter Y for YES, or N for No.')
                                        	if continue_playing == 'n':
                                        		playing = False
                                        		print('You chose to stop playing, leaving the game with {}$'.format(money))


                                        Habituellement, je commente énormément, mais là, vu que c'était de base que pour moi, je n'ai pas pensé à le faire.

                                        A part ça, la semaine passée, après avoir commencé et appris les bases de Python, j'ai voulu me faire un programme pour résoudre une grille de sudoku (sans utiliser aucun module importé). Avec mes 2 jours d'expèriences en programmation, c'était pas simple, mais si ça intéresse des gens, j'ai mis une version détaillé du code sur GitHub : https://github.com/Dyrits/-python-sudokusolver

                                        Cela m'a pris plus de 10 heures...

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          27 février 2020 à 21:38:13

                                          from random import randrange
                                          from math import ceil
                                          money = 1000
                                          playing = True
                                          while playing == True:
                                              guess=0
                                              while guess < 1 or guess > 50:
                                                  try:
                                                      guess = int(input('Guess a number between 1 and 50:'))
                                                  except ValueError:
                                                      print("The value is invalid. It must be a number between 1 and 50.")
                                                      continue
                                                  if guess < 1 or guess > 50:
                                                      print("The number guessed must be between 1 and 50.")
                                              print('You have {}$'.format(money))
                                              bet=0
                                              while bet == 0 or bet > money or bet < 0:
                                                  try:
                                                      bet = int(input('Enter the ammount of money you want to bet:'))
                                                  except ValueError:
                                                      print("The value is invalid. Enter a valid value.")
                                                      continue
                                                  if bet > money or bet < 0:
                                                      print("The ammount must not exceed the ammount of money you have, and can not be negative.")
                                              result = randrange(1, 50)
                                              print('You chose the number {}!'.format(guess))
                                              print('You bet {} on it!'.format(bet))
                                              print('The result is {}!'.format(result))
                                              if result == guess:
                                                  print('Congratulations, you won {}$!'.format(bet * 3))
                                                  money += bet * 3
                                              elif result % 2 == guess % 2:
                                                  print('Congratulations, you won {}$ for picking the right colour!'.format(ceil(bet / 2)))
                                                  money += ceil(bet / 2)
                                              else:
                                                  print('Sadly, you lost...')
                                                  money -= bet
                                                  if money == 0:
                                                          playing = False
                                                          print("You can't continue to play. You have no money left.")
                                                          break
                                              print('You now have {}$'.format(money))
                                              
                                              continue_playing = 0       
                                              while continue_playing != 'y' and continue_playing != 'n':
                                                  continue_playing = str(input('Do you want to continue? (Y/N)').lower())
                                                  if continue_playing != 'y' and continue_playing != 'n':
                                                      print('Please, enter Y for YES, or N for No.')
                                              if continue_playing == 'n':
                                                  playing = False
                                                  print('You chose to stop playing, leaving the game with {}$'.format(money))
                                          


                                          Salut, j' ai quelques suggestions d' améliorations:

                                          supprimer les print lignes 32, 36, 40 pour le réécrire après la condition qui détermine le gain

                                          enlever la condition money < 0 car l' utilisateur ne peut pas miser plus que son argent donc pas perdre plus que son argent donc il ne peut pas avoir un nombre négatif d' argent

                                          rajouter un break après la ligne 43 pour quitter le while playing sans que le programme nous demandesi on veut le quitter

                                          supprimer la condition "continue playing = 0" (l.45, 47) puisque si  "continue playing = 0" continue playing est forcément différent de y et n

                                          J' ai fait les modifs ci-dessus.

                                          P.S. Quelqu' un peut m' expliquer comment on fait pour afficher en font noir, moi ça mets tout sur une seule ligne

                                          -
                                          Edité par Théobald d'Uberwald 27 février 2020 à 22:21:57

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            27 février 2020 à 22:12:06

                                            Merci beaucoup pour ton retour et tes suggestions. Je vais retravailler cela un peu.

                                            J'avais même pas pensé à certaine choses qui me semblent assez évidentes maintenant.

                                            -
                                            Edité par Dylan J. Gerrits 27 février 2020 à 22:49:30

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              27 février 2020 à 22:16:07

                                              De rien, comment on met le code sur le fond noir ?

                                              -
                                              Edité par Théobald d'Uberwald 27 février 2020 à 22:18:21

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                27 février 2020 à 22:19:43

                                                Dans la barre au dessus de ton texte, tu sélectionnes les balises de code et tu copies ton texte à l'intérieur une fois le langage sélectionné.
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  27 février 2020 à 22:23:04

                                                  merci, sinon a quoi tu n' avais pas pensé ?

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    28 février 2020 à 21:34:03 - Message modéré pour le motif suivant : Merci de créer votre propre sujet


                                                      3 mars 2020 à 20:31:13

                                                      Bonjour,

                                                      J'ai les quelques lignes ci dessous:

                                                      from os import *
                                                      chdir("/Users/pytho/OneDrive/Bureau/Python")
                                                      recup = getcwd()
                                                      print(recup)
                                                      
                                                      obFichier = open('Chagchag','a')
                                                      obFichier.write('Bonjour, fichier !')
                                                      obFichier.write("Quel beau temps, aujourd'hui !")
                                                      obFichier.close()

                                                      Pour lesquelles j'ai le message d'erreur suivant:

                                                      Traceback (most recent call last):
                                                        File "C:\Users\pytho\OneDrive\Bureau\pythonexo\8.7.py", line 6, in <module>
                                                          obFichier = open('Chagchag','a')
                                                      TypeError: an integer is required (got type str)

                                                      Pourriez vous m'indiquer d'ou provient cette erreur. J'ai été voir la librairie (https://docs.python.org/3/library/functions.html#open) et il faut bien des guillemets (Cf. l'exemple proposé)

                                                      Par ailleurs, afin d'être sûr d'avoir bien compris: le fichier ChagChag n'existant pas, ce dernier va bien être créer dans le répertoire courant qui se situe à l'adresse suivante: /Users/pytho/OneDrive/Bureau/Python ? 

                                                      Merci d'avance pour votre aide

                                                      Bien cordialement



                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        4 mars 2020 à 0:12:57

                                                        from os import *
                                                        

                                                        Pourquoi faire ça ? Il est généralement fortement déconseillé d'utiliser import *, justement pour ne pas tomber dans le cas problématique que tu rencontres.

                                                        Quand tu fais un import *, tu importes tous les noms contenus dans le module vers l'espace de noms courant. En l'occurrence, le module os contient plus de 350 noms, dont une fonction open, différente de la fonction built-in.

                                                        Différente parce qu'os est un module de fonctions bas-niveau, il s'agit donc d'une fonction qui a la même interface qu'en C. Donc évite l'import * et tout se passera bien, open sera bien open.

                                                        Et pour ton autre question, oui le fichier sera bien créé dans le répertoire cible.

                                                        -
                                                        Edité par entwanne 4 mars 2020 à 0:14:19

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        Exercices du cours Python / postez ici !

                                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                        • Editeur
                                                        • Markdown