PYTHON.2 INFO FEUILLE n°17 D'EXERCICES

                        INFO Python2    FEUILLE D'EXERCICE n° 17     MAI 2012

---------------------------------------------------------------------------------------------------------------

      COURS:

   Thème

                • list(.. mot...  )

                 Pour transformer un mot en une liste de caractères:

                   Par exemple:      list("Bonjour")  

                                 donne        [ 'B','o','n','j','o','u',r ]

                •  Utilisation de:      phrase.split()   

                       ( Cela transforme  une phrase en une liste de chaines qui sont

                              les mots de la phrase . Les espaces deviennent des virgules.

                                Le tout est entre crochets.)

                            Par exemple:    phrase=" Bonjour tous le monde"

                                                      PHRASE= phrase.split()

                                                      print   PHRASE

                               affiche         [ ' Bonjour' , 'tous' , 'le' , 'monde' ]   

                                    Cela donne une liste dont les termes sont les mots de phrase

                            Par contre:    

                                                      phrase=" Bonjour tous le monde" 

                                                      print phrase.split(",")

                             affiche             [ ' Bonjour tous le monde' ]      

                                            Cela donne une liste dont le seul terme est  la chaîne phrase

                 •    strListe=' '.join(Liste)  

                                    Liste devient une chaîne où les termes de Liste sont juxetaposés.

                                 Par exemple :                                                                 

                                                           L=[ 'b' , 'e' , 'a' , 'u' ]
                                                           strL=' '.join(L)
                                                           print strL

                                    affiche       beau

                             L'espace entre les lettres est déterminé par '   ' 

               •  Trouver la plus grande valeur d'une liste de valeurs.

               •  Utliser une variable Bonne avec les "valeurs"  False ou True.

               •   Utilisation de L[ :i] et L[i:]

                        avec     0 ≤ i< len(L)  

                                     Par exemple: 

                                      L= [ 7 ,, 6 , 8 , 1 ,9, 4 ]

                        print   L[ :3 ]        affiche     [ 7 , 2 , 6 ]

                                   c-à-d      Cela affiche la liste des trois premiers termes de L 

                                    c-à-d   Cela afiche   [ L[0] , L[ 1 ] , L[ 2] ]

                                     c-à-d    Cela affiche la liste des termes de L d'indice strictement inférieur à 3

                       print   L[ 3: ]        affiche     [ , 1 , 9 , 4 ] 

                                  c-à-d      Cela affiche la liste      [ L3] , L[ 4 ] , L[ 5], L[6] ]

                                  c-à-d      Cela affiche la liste des termes de L qui ne sont pas dans L[:3]

                                   c-à-d    Cela affiche la liste des termes de L d'indice supérieur ou égal à 3

                           Par exemple avec une chaîne: 

                                     Soit    mot = "abcdefgh"

                                      print      mot[:3 ]+ "A"  + mot[3+1 :]

                         Cela  affiche    abcAefgh

                                                           d=mot[3]     a été remplacé par A

----------------------------------------------------------------------------------

  EXERCICE  1 bis

         Ecrire un script qui transforme une chaîne de 5 tirets   - - - - -

         en une liste de chaînes  [ '-' , ' - ' , ' - , ' - ' , ' - ' ]

         puis transforme cette liste en la chaîne    - - - - -  

----------------------------------------------------------------------------------

   REPONSE:

from random import*
def transfor():

       mot="-"*5

       print mot                                  # mot est une chaîne constitué de 5 tirets - - - - -
       L1=[]

       for i in range(0,5):
             L1.append(mot[i])

       print L1                                      # L1 est une liste de chaînes [ '-' ,' -' ,' -' ,' -' ,' -' ]

       strL1=' '.join(L1)

       print strL1                                   # On a la chaîne mot de 5 tirets du départ

                    On obtient:

>>> transfor()
- - - - -
['-', '-', '-', '-', '-']
- - - - -
>>>

                    On a fait un aller et un retour

         On peut aussi considérer:

from random import*
def transfor(): 

       mot="-"*5

       print mot                     # mot est une chaîne constitué de 5 tirets - - - - -
       L1=list(mot)

       print L1                      # L1 est une liste de chaînes [' -' ,' -' ,' -' ,' -' ,' -' ]  On évite une boucle

       strL1=' '.join(L1)            

       print strL1                             # On a la chaîne mot de 5 tirets du départ

               On obtient la même chose

 

>>> transfor()
-----
['-', '-', '-', '-', '-']
- - - - -
>>>

 

-----------------------------------------------------------------------------------

      EXERCICE 1 TER

          Refaire avec le mot  bonjour l'exercice précédent.

--------------------------------------------------------------------------------------------

    REPONSE:

              On considère:

from random import*
def transfor():
       mot="Bonjour"
       print mot
       L1=[]                                         #    On peut utiliser  L1=list(mot)
       for i in range(0,7):                   #   On économise la boucle
             L1.append(mot[i])
       print L1
       strL1=' '.join(L1)
       print strL1

                        On obtient

>>> transfor()
Bonjour
['B', 'o', 'n', 'j', 'o', 'u', 'r']
Bonjour
>>>

----------------------------------------------------------------------------------------------------

     EXERCICE Quatro

       Reprendre l'exercice précédent 

        mais en faisant apparaitre à la fin Bonsoir au lieu de Bonjour.

-----------------------------------------------------------------------------------------------

  REPONSE:    Considérons:

from random import*
def transfor():
       mot="Bonjour"
       print mot 
       L1=[]
       for i in range(0,7):
             L1.append(mot[i])
       print L1 

       L1[3]='s'                # une chaîne est remplacée par une chaîne

       L1[5]='i'                 
       strL1=' '.join(L1)
       print strL1   

    On obient :

 >>> transfor()
Bonjour
['B', 'o', 'n', 'j', 'o', 'u', 'r']
Bonsoir
>>>  

   On peut ainsi modifier tout caractère d'une chaîne.    

-----------------------------------------------------------------------------------------------

      EXERCICE 1    Quinto

           Faire un script qui fait apparaître les termes d'une liste à partir

          d'un certain indice puis les termes jusqu'à un certain indice.

--------------------------------------------------------------------------------------------------

       REPONSE:

def partiel():

       L=[11,54,7,5,18]

       print L[1:]     # cela affiche les termes à partir de l'indice 1 compris

       print L[:3]     # Cela affiche tous les termes jusqu'à l'indice 3 non compris

                    On obtient:

>>> partiel()
[54, 7, 5, 18]
[11, 54, 7]
>>>

 -----------------------------------------------------------------------------------------------

       EXERCICE 1

      Ecrire un programme qui donne le mot le plus long d'une phrase

      entrée par l'utilisateur.

-------------------------------------------------------------------------------------

Réponse possible: 

def phrase():
       ph=raw_input("Donner une phrase sans aiguillement:  ")
      Traduc=ph.split()
       L=[len(element) for element in Traduc]
       s=L[0]
       for i in range(0,len(L)):
             if s<L[i]:
                s=L[i]
       print  "La longueur maximale des mots de la phrase est:  ",s
       for j in range(0,len(Traduc)):
             if s==L[j]:
                 print "C'est: ",Traduc[j]

              Par exemple :

>>> phrase()
Donner une phrase sans aiguillement:  le plus beau jour de décembre
La longueur maximale des mots de la phrase est:   8
C'est:  décembre

>>> 

-----------------------------------------------------------------------------

     EXERCICE 2

             Trouver un programme qui permet à un joueur 

             de deviner lettre après lettre un mot caché de moins de 10 lettres. 

             Le joueur a droit a 10 essais. 

             Les lettres devinées sont retournées donc affichées  et laissées

            à leur place dans le mot à deviner. 

---------------------------------------------------------------------------------------

    Réponse                On peut considérer:

from random import*

def jeu(m):    

       tirets ='-' * len(m)    # Le mot caché m est sous la forme de petits tirets                         

                                         # Chaque tiret remplace une lettre du mot caché

                                          # n est le nombre d'essais du joueur. n est limité à 10

       n=0 

       while n<10  and  tirets!=m:

               n = n+ 1

               lettre=raw_input(" Entrer votre lettre entre aiguillemets:  " )                                                       

               i = 0                                            # Initialisation de i                                             

               while i<len(m):

                      if  lettre==m[i] and tirets[i]=='-':

                           tirets = tirets[:i] + lettre + tirets[i+1:]      #  lettre étant m[i] on remplace le tiret qui représente m[i] par lettre

                           print tirets                                                                    

                      i=i+1

       if tirets ==m:

           print " Vous avez gagné avec ", n, " essais"

       else:

             print  "C'est perdu"

# PROGRAMME PRINCIPAL#

  ######################

print (" Quelqu'un, autre que le joueur, doit entrez le mot à deviner par le joueur. ")

m=raw_input(" Si vous ne jouez pas, entrez entre aiguillements un mot:  ")

print " Le joueur peut commencer.", jeu(m)

print   "Appuyez sur Entrer pour arrêter"

            Par exemple:

>>>
Quelqu'un, autre que le joueur, doit entrez le mot à deviner par le joueur.
Si vous ne jouez pas, entrez entre aiguillements un mot: "table"
Le joueur peut commencer. Entrer votre lettre: "e"
----e
Entrer votre lettre: "t"
t---e
Entrer votre lettre: "r"
Entrer votre lettre: "a"
ta--e
Entrer votre lettre: "b"
tab-e
Entrer votre lettre: "f"
Entrer votre lettre: "l"
table
Vous avez gagné avec 7 essais
None
Appuyez sur Entrer pour arrêter

                              Autre exemple:

 

>>>
Quelqu'un, autre que le joueur, doit entrez le mot à deviner par le joueur.
Si vous ne jouez pas, entrez entre aiguillements un mot: "table"
Le joueur peut commencer. Entrer votre lettre: "h"
Entrer votre lettre: "r"
Entrer votre lettre: "a"
-a---
Entrer votre lettre: "l"
-a-l-
Entrer votre lettre: "w"
Entrer votre lettre: "d"
Entrer votre lettre: "t"
ta-l-
Entrer votre lettre: "f"
Entrer votre lettre: "k"
Entrer votre lettre: "e"
ta-le
C'est perdu
None
Appuyez sur Entrer pour arrêter
>>>

----------------------------------------------------------------------------------

    EXERCICE 3

         Même question que dans l'exercice précédent mais 

          en utilisant des listes.

         Le mot à chercher sera converti en liste de caractères.

         Une liste de tirets remplacera au début le mot.

-----------------------------------------------------------------------------------               

 REPONSE

                     On peut considérer le script suivant : 

   Son intérêt est qu'il est plus facile de comparer deux listes .

from random import*

def jeu(m):
       M=list(m)                               # M est la liste des caractères du mot m
       tirets ="-" * len(m)                 # tirets est une chaîne de len(m) tirets
       T=list(tirets)                             # T est une liste de len(m) tirets
       n=0
       while n<10 and T!=M:
              n = n+ 1
              lettre=input(" Entrer votre lettre: " )
              i=0
              while (i<len(m)):
                     if (T[i]=='-' and lettre==M[i]):
                          T[i]=lettre
                           strT=''.join(T)      #    '  '.joint(T) tranforme la liste T en une chaîne. L'espace entre les caractère est entre '  '
                           tirets=strT
                           print tirets
                      i=i+1
       if(tirets ==m):
           print " Vous avez gagné avec ", n, " essais"
       else:
              print( "C'est perdu")
# PROGRAMME PRINCIPAL#

######################

print (" Quelqu'un, autre que le joueur, doit entrez le mot à deviner par le joueur. ")

m=input(" Si vous ne jouez pas, entrez entre aiguillements un mot: ")

print " Le joueur peut commencer.", jeu(m)

print ( "Appuyez sur Entrer pour arrêter")

                       Par exemple:

>>>
Quelqu'un, autre que le joueur, doit entrez le mot à deviner par le joueur.
Si vous ne jouez pas, entrez entre aiguillements un mot: "table"
Le joueur peut commencer. Entrer votre lettre: "a"
-a---
Entrer votre lettre: "e"
-a--e
Entrer votre lettre: "b"
-ab-e
Entrer votre lettre: "t"
tab-e
Entrer votre lettre: "l"
table
Vous avez gagné avec 5 essais
None
Appuyez sur Entrer pour arrêter
>>>

  -----------------------------------------------

            EXERCICE 4

         Ecrire un algorithme qui propose un tirage parmi les secteurs 0;1;2;3;4 d'une roue.

         Puis qui indique le gain en euros.

         En cas d'absence de gain il demande de passer à un autre joueur.

        Si le gain est 100 € ou 50 €  il  propose alors

         de faire deviner lettre par lettre un mot choisi aléatoirement dans une

        liste de cinq noms indiquée au joueur pour l'aider.

--------------------------------------------------------------------

         REPONSE:   On peut proposer:

from random import*
def jeu():
       L=[]
       for i in range (5):
             d=randint(1,10)
             L.append(d)
      a=input("Choisissez un secteur parmi les secteurs 0,1,2,3,4 de la roue ")
      if a in L[3:]:
          y=100
          print  " Vous gagnez ",100,"euros"
          return  message()
      elif a in L[:3]:
             y=50
             print  " Vous gagnez ",50,"€"
             return  message()
      else:
            print "Passez votre tour"
            return jeu()   
def message():
       F=["maison","table","miroir","chaise","feuille"]
       print "Le mot pour vous aider est dans la liste ", F
       mot=choice(F)
       tirets ='-'*len(mot)
       print tirets
       n=0
       while n<10 and tirets!=mot:
                n=n+1
                lettre=raw_input(" Entrer votre lettre sans guillemet:  ")
                i = 0
                while i<len(mot):
                         if lettre== mot[i] and tirets[i]=="-":
                              tirets =tirets[:i]+lettre+tirets[i+1:] 
                              print tirets
                         i=i+1
       if tirets==mot:
            print " Vous avez gagné avec ", n," essais"
       else:
              print "C'est perdu"

                          Par exemple:

>>> jeu()
Choisissez un secteur parmi les secteurs 0,1,2,3,4 de la roue 4
 Vous gagnez  50 €
Le mot pour vous aider est dans la liste  ['maison', 'table', 'miroir', 'chaise', 'feuille']
------
 Entrer votre lettre sans guillemet:  
a
 Entrer votre lettre sans guillemet:  t
 Entrer votre lettre sans guillemet:  m
m-----
 Entrer votre lettre sans guillemet:  
i
mi----
mi--i-
 Entrer votre lettre sans guillemet:  
r
mir-i-
mir-ir
 Entrer votre lettre sans guillemet:  
o
miroir
 Vous avez gagné avec  6  essais

>>> 
                         Par exemple 
>>> jeu()
Choisissez un secteur parmi les secteurs 0,1,2,3,4 de la roue 2
 Vous gagnez  100 euros
Le mot pour vous aider est dans la liste  ['maison', 'table', 'miroir', 'chaise', 'feuille']
------
 Entrer votre lettre sans guillemet:  
f
 Entrer votre lettre sans guillemet:  a
--a---
 Entrer votre lettre sans guillemet:  
b
 Entrer votre lettre sans guillemet:  m
 Entrer votre lettre sans guillemet:  i
--ai--
 Entrer votre lettre sans guillemet:  
c
c-ai--
 Entrer votre lettre sans guillemet:
 h
chai--
 Entrer votre lettre sans guillemet:
 s
chais-
 Entrer votre lettre sans guillemet:
 e
chaise
 Vous avez gagné avec  9  essais
>>> 

                             Par exemple

>>> jeu()
Choisissez un secteur parmi les secteurs 0,1,2,3,4 de la roue 4
Passez votre tour
Choisissez un secteur parmi les secteurs 0,1,2,3,4 de la roue
3
Passez votre tour
Choisissez un secteur parmi les secteurs 0,1,2,3,4 de la roue
1
Passez votre tour
Choisissez un secteur parmi les secteurs 0,1,2,3,4 de la roue
2
 Vous gagnez  50 €
-----
 Entrer votre lettre sans guillemet:  
a
-a---
 Entrer votre lettre sans guillemet:  
m
 Entrer votre lettre sans guillemet:  i
 Entrer votre lettre sans guillemet:  s
 Entrer votre lettre sans guillemet:  n
 Entrer votre lettre sans guillemet:  f
 Entrer votre lettre sans guillemet:  o
 Entrer votre lettre sans guillemet:  t
ta---
 Entrer votre lettre sans guillemet:  
b
tab--
 Entrer votre lettre sans guillemet:  
l
tabl-
C'est perdu

>>> 

-------------------------------------------------------------------