Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercices du cours Python / postez ici !

Anonyme
    13 février 2015 à 16:49:42

    Le protocole ne change rien du tout. C'est du routage !

    Ton application serveur tourne sur un ordinateur qui est dans un sous-réseau (ton réseau personnel), derrière un routeur ou une box (c'est la même chose). Pour qu'une application cliente de ton serveur puisse s'y connecter, il faut obligatoirement qu'un ou plusieurs ports du routeur soient ouverts et redirigés vers l'ordinateur local. Peu importe l'application serveur, aucune connexion extérieure au réseau local ne peut lui parvenir si le routeur n'est pas configuré pour !

    Petit exemple :

        ----- PC1 -----   ----- PC2 -----
        | IP 10.0.0.2 |   | IP 10.0.0.3 |
        ---------------   ---------------
                \               /
                 \             /
          ------------ BOX -------------
          | IP INTERNE        10.0.0.1 |
          | IP EXTERNE xxx.xxx.xxx.xxx |
          ------------------------------
                        |
                        |
                  ------------
                  | INTERNET |
                  ------------
                        |
                        |
            --------- PC3 --------
            | IP yyy.yyy.yyy.yyy |
            ----------------------
    

    En admettant que sur PC1 tu as un serveur HTTP qui attend des connexions sur son port 8080. Si tu veux que PC3 s'y connecte simplement en entrant l'adresse http://xxx.xxx.xxx.xxx/, tu dois configurer ta box pour qu'elle ouvre et redirige son port 80 (numéro standard pour le protocole HTTP) vers le port 8080 de PC1 (10.0.0.2:8080).

    PC2 est dans le même réseau local que PC1, il peut donc y accéder avec l'adresse http://10.0.0.2:8080, ou de la même manière que PC3.

    -
    Edité par Anonyme 13 février 2015 à 17:07:13

    • Partager sur Facebook
    • Partager sur Twitter
      15 février 2015 à 20:53:15

      j'ai configuré le routeur de ma box mais cela n'a pas l'air de fonctionner. faut il la réinitialiser avec ces nouvelles règles?
      • Partager sur Facebook
      • Partager sur Twitter
      On sait jamais.
        17 mars 2015 à 6:05:24

        Hey, pour ceux que ca interesse voici une autre facon de faire le tp zcasino :

        from math import ceil
        from random import randrange
        
        print '=================='
        print '    Roulette v2   '
        print '=================='
        
        # init vars
        bet = 0
        pick = 0
        restart = 1
        paire = 0
        keep = True
        bille = randrange(50)
        
        # ask the player how much money he gets for this session
        wallet = raw_input('Whats in your wallet : ')
        
        try:
        	wallet = int(wallet) # set wallet as integer, also test if user wrote a number
        	
        	if wallet <= 0:
        		print '[!] It can not be under or 0 !'
        		print '[!] Default value set to 100'
        		wallet = 100
        
        except ValueError:
        	print '[!] It must be a number' # if not a number set a default value for wallet
        	print '[!] Default value set to 100'
        	wallet = 100 # 100 is our default value
        
        while keep and restart: # while keep is true and restart equal 1,then keep playing
        	
        	print 'Wallet : ',wallet,'$' # show how much money we got left
        	bet = raw_input('Place a bet : ') 
        
        	while type(bet) != int: # same as above, check if bet is an integer
        		
        		try:
        			bet = int(bet)
        
        			if bet > wallet: # if not enough money then cancel bet
        
        	                        print '[!] You do not have ',bet,'$ in your wallet !'
                	                print 'Your wallet : ',wallet
                        	        bet = raw_input('Place a bet : ')
        			
        			elif bet < 1:
        				
        				print '[!] You do have more than',bet,'$ in your wallet, just so you know !'
        				print 'Your wallet : ',wallet
        				bet = raw_input('Place a bet : ')
        
        		except ValueError:
        			print '[!] It must be a number !'
        			bet = raw_input('Place a bet : ') # if not, ask again
        
        	pick = raw_input('Pick a number between 1-50 : ')
        	
        	while type(pick) != int: # same as above
        		
        		try:
        			pick = int(pick)
        			
        			if pick > 50:
        
        				print '[!] It must be a number between 1 and 50'
        				pick = raw_input('Pick a number between 1-50 : ')
        
        			elif pick < 1:
        
        				print '[!] It must be a number between 1 and 50'
        				pick = raw_input('Pick a number between 1-50 : ')
        
        		except ValueError:
        			print '[!] It must be a number'
        			pick = raw_input('Pick a number between 1-50 : ')
        
        	print '...'
        	print '....'
        	print '.....'
        	print '......!'
        	
        	if pick != bille: # if players number is different than random integer
        
        		if paire % 2 == bille % 2: # if its pair then add bet + bet / 2 to his wallet
        			print 'Your number is pair !'
        			bet = bet + bet / 2
        			ceil(bet * 0.5) # we dont want a float number
        			wallet = wallet + bet
        			print 'You won : ',bet
        
        		else: # else if number is odd, player loose his money
        			print 'You lost : ',bet,'$'
        			wallet = wallet - bet
        
        	elif pick == bille: # if players number equal to random integer
        		print 'J A C K P O T !!!'
        		bet = bet * 3
        		wallet = wallet + bet # then bet * 3 and add to players wallet
        		print 'You won : ',bet
        	
        	if wallet <= 0: # if players wallet empty then end of the game
        		print '[!] You have no money left !'
        		print '[!] You are out of the game !'
        		keep = False # loop stop if keep isnt true
        		restart = 0
        
        	elif wallet > 0: # if player still wants to play (while wallet is not empty)
        		restartp = raw_input('Keep playing [y/n] ? ')
        
        		while restartp not in ('y','n'):
        			print '[!] Wrong answer !'
        			restartp = raw_input('Keep playing [y/n] ? ')
        
        		if restartp == 'y':
        			restart = 1
        
        		elif restartp == 'n':		
        			restart = 0
        			keep = False
        			
        		
        
        
        
        print '[!] Bye...' # just a test
        

        ps: j'utilise la version 2.7

        ps2: oui je commente en anglais, j'habite en NZ pour ceux qui ce pose la question :p

        -
        Edité par xeimosel 17 mars 2015 à 6:37:07

        • Partager sur Facebook
        • Partager sur Twitter
          18 mars 2015 à 15:08:52

          Salut

          wallet = raw_input('Whats in your wallet : ')
           
          try:
              wallet = int(wallet) # set wallet as integer, also test if user wrote a number

          Inutile.

          try:
              wallet = input()
          
          except ValueError:
              print 'Bidule'

          J'ai pas lu plus loin. Mais sinon ton code est bien aéré, ça change de ce qu'on voit d'habitude :)


          -
          Edité par InhumanRampage 18 mars 2015 à 15:12:06

          • Partager sur Facebook
          • Partager sur Twitter
            20 mars 2015 à 3:37:29

            edit: double post

            -
            Edité par xeimosel 20 mars 2015 à 3:38:45

            • Partager sur Facebook
            • Partager sur Twitter
              20 mars 2015 à 3:38:10

              hey,

              hmm peux tu preciser pourquoi c'est inutile ? Il me semble que raw_input et input ou alors seulement raw_input (faut je check la doc) classe automatiquement la variable comme string donc j'ai besoins de la convertir en int si je veux comparer des chiffres  ?

              merci en tout cas :)

              -
              Edité par xeimosel 20 mars 2015 à 3:41:33

              • Partager sur Facebook
              • Partager sur Twitter
                20 mars 2015 à 5:27:19

                Ben oui mais pourquoi convertir alors qu'en Python 2 input renvoie un int/float. Tu as fais une opération en trop, donc inutile ^^

                -
                Edité par InhumanRampage 20 mars 2015 à 5:27:55

                • Partager sur Facebook
                • Partager sur Twitter
                  20 mars 2015 à 8:33:22

                  ahhh ok merci, c'est bien ce que je croyais :p
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    20 mars 2015 à 8:41:53

                    Ben oui mais pourquoi convertir alors qu'en Python 2 input renvoie un int/float. Tu as fais une opération en trop, donc inutile

                    >>> value = input("entre n'importe quoi: ")
                    entre n'importe quoi: "hello world"
                    >>> type(value)
                    <type 'str'>
                    
                    >>> value = input("entre n'importe quoi: ")
                    entre n'importe quoi: ["hello", "world"]
                    >>> type(value)
                    <type 'list'>
                    

                    EDIT: Il faudra convertir et utiliser raw_input

                    -
                    Edité par Anonyme 20 mars 2015 à 8:43:10

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 mars 2015 à 9:47:45

                      Bonjour,

                      Je fais le dernier projet python3 et j'ai un problème concernant la partie 'test'.

                      Schématiquement, voici la structure de mon projet:

                      Projet/

                           fonction1

                           test/

                                 test_fonction1

                      Mon fichier test_fonction1 importe le module 'unittest' pour tester la fonction1.

                      J'ai aussi besoin d'importer le fichier 'fonction1'... et c'est là où je bloque: comment faire pour importer un fichier qui est dans un dossier parent ?

                      Il y a sûrement une solution simple et élégante.

                      Merci de votre aide :)

                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 mars 2015 à 22:34:30

                        oldProgrammer a écrit:

                        Ben oui mais pourquoi convertir alors qu'en Python 2 input renvoie un int/float. Tu as fais une opération en trop, donc inutile

                        >>> value = input("entre n'importe quoi: ")
                        entre n'importe quoi: "hello world"
                        >>> type(value)
                        <type 'str'>
                        
                        >>> value = input("entre n'importe quoi: ")
                        entre n'importe quoi: ["hello", "world"]
                        >>> type(value)
                        <type 'list'>
                        

                        EDIT: Il faudra convertir et utiliser raw_input

                        -
                        Edité par oldProgrammer il y a environ 13 heures


                        Je suis désolé mais en Python 2.7 tu fais ca, tu crash direct. (Même une simple entrée sans texte ça fait crasher avec input)

                        -
                        Edité par InhumanRampage 20 mars 2015 à 22:35:52

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          21 mars 2015 à 0:19:53

                          InhumanRampage a écrit:

                          oldProgrammer a écrit:

                          Ben oui mais pourquoi convertir alors qu'en Python 2 input renvoie un int/float. Tu as fais une opération en trop, donc inutile

                          >>> value = input("entre n'importe quoi: ")
                          entre n'importe quoi: "hello world"
                          >>> type(value)
                          <type>
                          </type>
                          >>> value = input("entre n'importe quoi: ")
                          entre n'importe quoi: ["hello", "world"]
                          >>> type(value)
                          <type>
                          </type>

                          EDIT: Il faudra convertir et utiliser raw_input

                          -
                          Edité par oldProgrammer il y a environ 13 heures


                          Je suis désolé mais en Python 2.7 tu fais ca, tu crash direct. (Même une simple entrée sans texte ça fait crasher avec input)

                          Non ! C'est justement parce que tu n'entres rien que ça lève une SyntaxError ! Le input de Python 2 sert à évaluer une saisie comme si c'était une expression Python et retourne le résultat. Donc tu ne peux pas entrer des mots que Python ne connait pas et tu dois respecter la syntaxe du langage.

                          C'est comme si tu ne mettais rien après un égale dans un script Python...

                          Pour demander une saisie à l'utilisateur il faut utiliser raw_input en Python 2, et après on la convertit en ce que l'on veut.

                          -
                          Edité par Anonyme 21 mars 2015 à 0:20:51

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            21 mars 2015 à 7:55:03

                            Je suis désolé mais en Python 2.7 tu fais ca, tu crash direct.

                            C'est fait en version 2.7...

                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 mars 2015 à 21:55:07

                              Très bien, désolé pour le malentendu alors :) 

                              Et merci pour les infos.

                              • Partager sur Facebook
                              • Partager sur Twitter
                                21 mars 2015 à 22:40:51

                                Bonsoir,

                                Je me mets au python depuis... cet après-midi et je viens de faire le TP ZCasino.

                                Il m'est venu deux questions sur le "corrigé" proposé par l'auteur du cours :

                                # On établit le gain du joueur
                                    if numero_gagnant == nombre_mise:
                                        print("Félicitations ! Vous obtenez", mise * 3, "$ !")
                                        argent += mise * 3
                                    elif numero_gagnant % 2 == nombre_mise % 2: # ils sont de la même couleur
                                        mise = ceil(mise * 0.5)
                                        print("Vous avez misé sur la bonne couleur. Vous obtenez", mise, "$")
                                        argent += mise
                                    else:
                                        print("Désolé l'ami, c'est pas pour cette fois. Vous perdez votre mise.")
                                        argent -= mise



                                1: Est-ce moi ou en dehors du cas pas bon chiffre + pas bonne couleur (pair ou impair), l'argent ne peut que monter ?

                                On a 1000$ / On mise 500$

                                - if : argent + mise * 3 donne 1000 + 1500 = 2500$ (et la mise, elle est offerte ???)

                                - elif : argent + ceil(mise * 0.5) donne 1000 + 250 (on est censé récupérer la moitié de la mise, mais on a gagné la moitié de la mise)

                                - else : argent - mise (enfin quelque chose d'intéressant, non ??)

                                2 : Ne serait-il pas mieux de penser à rajouter un petit quelque chose comme :

                                		argent -= mise	
                                		roulette = randrange (50)
                                		print ("La roulette tourne... ... et s'arrête sur le numéro", roulette, "! ")

                                Et finaliser le bloc de "gains/pertes" en supprimant argent -= mise de "else" ?

                                A moins que je ne sois bigleux, je crois qu'il y a un petit oubli par rapport à la consigne initiale. :)

                                En tout cas merci pour ce cours, j'adore ! Ca manque peut-être de "mini-TP" entre deux pour ne pas arriver sur "ZCasino" avec tout plein de trucs d'un coup.

                                En stage où je suis on me fait découvrir la programmation en JustBasic... Je préfère de loin le Python. :)

                                o/

                                -
                                Edité par JoKaelys 21 mars 2015 à 22:45:32

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  23 mars 2015 à 18:19:48 - Message modéré pour le motif suivant : Demande de création d'un nouveau sujet


                                    27 mars 2015 à 16:40:04

                                    celthon a écrit:

                                    Le protocole ne change rien du tout. C'est du routage !

                                    Ton application serveur tourne sur un ordinateur qui est dans un sous-réseau (ton réseau personnel), derrière un routeur ou une box (c'est la même chose). Pour qu'une application cliente de ton serveur puisse s'y connecter, il faut obligatoirement qu'un ou plusieurs ports du routeur soient ouverts et redirigés vers l'ordinateur local. Peu importe l'application serveur, aucune connexion extérieure au réseau local ne peut lui parvenir si le routeur n'est pas configuré pour !

                                    Petit exemple :

                                     ----- PC1 ----- ----- PC2 ----- | IP 10.0.0.2 | | IP 10.0.0.3 | --------------- --------------- \ / \ / ------------ BOX ------------- | IP INTERNE 10.0.0.1 | | IP EXTERNE xxx.xxx.xxx.xxx | ------------------------------ | | ------------ | INTERNET | ------------ | | --------- PC3 -------- | IP yyy.yyy.yyy.yyy | ---------------------- 

                                    En admettant que sur PC1 tu as un serveur HTTP qui attend des connexions sur son port 8080.
                                    Si tu veux que PC3 s'y connecte simplement en entrant l'adresse http://xxx.xxx.xxx.xxx/, tu dois configurer ta box pour qu'elle ouvre et redirige son port 80 (numéro standard pour le protocole HTTP) vers le port 8080 de PC1 (10.0.0.2:8080).

                                    PC2 est dans le même réseau local que PC1, il peut donc y accéder avec l'adresse http://10.0.0.2:8080, ou de la même manière que PC3.

                                    -
                                    Edité par celthon le 13 février 2015 à 17:07:13

                                    D'après ton silence, chez bouygues, y'a pas moyen de gérer ça.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    On sait jamais.
                                    Anonyme
                                      27 mars 2015 à 16:56:39

                                      Bien sûr que si ! Tu l'a simplement mal fait. Cherche un tutoriel sur le net « Redirection de port bbox », tu auras toutes les infos...

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        6 avril 2015 à 14:34:03

                                        Bonjour, 

                                        Je suis entrain de faire le premier exercice du labyrinth. Dans la classe précréer de Carte il  y a une ligne que je ne comprend pas à savoir : 

                                                    self.labyrinthe = creer_labyrinthe_depuis_chaine(chaine)

                                        Pouvez vous m'aider svp ??

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Clau
                                        Anonyme
                                          7 avril 2015 à 16:26:01

                                          Sans lire le sujet, je dirais que tu peux créer un labyrinthe de plusieurs façon dont celle-ci, par le biais d'une chaîne de caractères.

                                          L'autre solution pourrait être par le biais d'un fichier par exemple...

                                          Dans ton cas, mais je connais pas du tout le sujet, la chaîne pourrait être

                                          s = '''10111111
                                                 10001111
                                                 10101111'''



                                          -
                                          Edité par Anonyme 7 avril 2015 à 16:27:17

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            10 avril 2015 à 20:45:50

                                            Bonsoir,
                                            Excusez moi est ce que quelqu'un serait comment je pourrais afficher une table de multiplication de 20 s.v.p ? Avec des saut de lignes.
                                            Exemple :
                                            1 2 3 4 5
                                            2 4 6 8 10
                                            3 6 9 12 15
                                            4 8 12 16 20
                                            5 10 15 20 25
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Anonyme
                                              11 avril 2015 à 13:29:05

                                              Excusez moi est ce que quelqu'un serait comment je pourrais afficher une table de multiplication de 20 s.v.p ? Avec des saut de lignes.

                                              >>> res = []
                                              >>> for i in range(1, 21):
                                              ...     for j in range(1, 6):
                                              ...         res.append(str(i*j))
                                              ...     print(' '.join(res))
                                              ...     print('\n')
                                              ...     res = []
                                              ... 
                                              1 2 3 4 5
                                              
                                              
                                              2 4 6 8 10
                                              
                                              
                                              3 6 9 12 15
                                              
                                              
                                              4 8 12 16 20
                                              
                                              ...

                                              Autre solution

                                              >>> res = ''
                                              >>> for i in range(1, 21):
                                              ...     for j in range(1, 6):
                                              ...         res += str(i*j) + ' '
                                              ...     print(res)
                                              ...     print('\n')
                                              ...     res = ''
                                              ... 
                                              




                                              -
                                              Edité par Anonyme 11 avril 2015 à 13:31:38

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                12 avril 2015 à 23:48:14

                                                Je viens de trouver la solution en ligne:

                                                Il faut ajouter au moins un fichier __init__.py (qui peut être vide) à la racine du package dont les modules doivent être importés par les programmes de tests.

                                                J'ai vu en ligne qu'il faut aussi ajouter un __init__.py à la base du répertoire de test - Je l'ai fait, mais je n'ai pas testé si ça marche sans.

                                                Il semblerait que le __init__ permet à Python de retrouver les packages lors de la recherche des différents tests.


                                                VincentTheProgrammer a écrit:

                                                 Bonjour, j'ai le même problème.

                                                J'ai aussi installé le package Cherry comme indiqué dans le cours, et essayé d'exécuter python.exe -m unittest dans le repertoire cherrypy, mais je reçoit un paquet d'erreur d'import (pas de module "nose").

                                                Que faut-il faire pour faire exécuter les tests proprement?

                                                owler a écrit:

                                                Bonjour,

                                                Je fais le dernier projet python3 et j'ai un problème concernant la partie 'test'.

                                                Schématiquement, voici la structure de mon projet:

                                                Projet/

                                                     fonction1

                                                     test/

                                                           test_fonction1

                                                Mon fichier test_fonction1 importe le module 'unittest' pour tester la fonction1.

                                                J'ai aussi besoin d'importer le fichier 'fonction1'... et c'est là où je bloque: comment faire pour importer un fichier qui est dans un dossier parent ?

                                                Il y a sûrement une solution simple et élégante.

                                                Merci de votre aide :)



                                                -
                                                Edité par VincentTheProgrammer il y a moins de 5s



                                                -
                                                Edité par VincentTheProgrammer 13 avril 2015 à 0:22:37

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                VincentTheProgrammer
                                                  7 mai 2015 à 13:51:16

                                                  Bonjour s'il vous plait j'ai besoin d'aide a résoudre des exercices,

                                                  Ex 1 :

                                                  ecrire une fonction recursive qui regarde si un caractère appartient à une chaine

                                                  ex :

                                                     existance("abcd","c") => true

                                                    existance("abcd","m") => false

                                                  Ex 2:

                                                  ecrire une fonction récursive a qui on donne un nombre et elle retourne le produit de ses chiffres

                                                       ex: fonction(1212121312) => 448

                                                  ex 4 :

                                                  ecrire une procédure qui supprime le ième élément d'une file

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Anonyme
                                                    7 mai 2015 à 14:13:21

                                                    Exercice 1 : help("in") Exercice 2 : reduce(int.__add__, map(int, str(number))) bonne chance pour l'expliquer à ton prof... Exercice 4 (3?) : help("list.__delitem__")

                                                    Un forum, c'est pas pour faire tes exercices à ta place !

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      7 mai 2015 à 14:21:10

                                                      S'il vous plait j'ai un devoir surveillé cette après midi, je vous en prie ecrivez moi la réponse détaillé.
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Anonyme
                                                        14 mai 2015 à 13:26:57

                                                        lol en plus c'est pas ça. bouuuu

                                                        -
                                                        Edité par Rick_Wakeman 14 mai 2015 à 13:36:45

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        On sait jamais.
                                                          15 mai 2015 à 10:03:43

                                                          Bonjour AyoubOubliha ,

                                                          Comme Celthon le disait laconiquement, les règles du Forum sont claires. Les membres peuvent s'entraider, pas faire le travail à ta place. Si tu montres que tu as travaillé par toi même et que tu bloques sur un point précis, tu peux tout à fait demander de l'aide. Sinon il faut quand même pas espérer que le million de membres ici viennent s'assoir avec toi à la table de ton devoir surveillé, donc il faut que tu apprennes par toi même.

                                                          Merci de ne pas insister avant d'avoir fait plus de recherche.
                                                          Bonne journée

                                                          Anouck d'OpenClassrooms.

                                                          EDIT : Navrée, Rick_Wakem de l'erreur de pseudo, mon rafraîchissement de page m'a enduit d'erreur ;)

                                                          -
                                                          Edité par Anouck 15 mai 2015 à 10:25:06

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Ancienne CM d'OpenClassrooms - Plus d'infos ici ! 
                                                            18 mai 2015 à 18:17:09 - Message modéré pour le motif suivant : Message complètement hors sujet


                                                            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