logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 20-05-2018 09:48:40

cemoi
Membre
Distrib. : Debian 10 Buster et une SID
Noyau : Linux 4.19.0-9-amd64
(G)UI : XFCE
Inscription : 21-10-2008

jeux du pendu en python

Hello,
j'ai cherché (un peu) un jeux du pendu dans les depots et je n'ai pas trouvé... étant joueur je me susi lancé à en faire un truc simple en python:

import random

wordList=['LOGIS','PIZZA','RONDE','ROUGE','TARTE']
word=random.choice(wordList)
guess='*****'

import turtle
turtle.pensize(5)
errors=0

def showStickman():
  if(errors==1):
    turtle.bk(100)
    turtle.fd(200)
  if(errors==2):
    turtle.bk(100)
    turtle.lt(90)
    turtle.fd(300)
  if(errors==3):
    turtle.rt(90)
    turtle.fd(150)
  if(errors==4):
    turtle.rt(90)
    tutle.fd(50)
  if(errors==5):
    turtle.dot(50)
  if(errors==6):
    turtle.fd(100)
    turtle.bk(75)
  if(errors==7):
    turtle.rt(45)
    turtle.fd(50)
    turtle.bk(50)
  if(errors==8):
    turtle.lt(90)
    turtle.fd(50)
    turtle.bk(50)
  if(errors==9):
    turtle.rt(45)
    turtle.fd(75)
    turtle.rt(45)
    turtle.fd(50)
    turtle.bk(50)
  if(errors==10):
    turtle.lt(90)
    turtle.fd(50)
   
while((guess!=word)and(errors<10)):
  print('Voici le mot à deviner ',guess)
  letter=input('Devine une lettre')
  hasLetter=False
  newguess=[]
 
  for n in range(5):
    if(letter==word[n]):
      newguess.append(letter)
      hasLetter=True
    else:
      newguess.append(guess[n])
   
  guess=".join(newguess)
 
  if(hasLetter==True):
    print('Essaie encore')
    errors=errors+1
    showStickman()
   
print('La réponse était ',word)



dans l'idle ça me dit: EOL while scaning string literal  et me ça me surligne en rouge la dernière parenthése de     guess=".join(newguess) qui se trouve tout en bas juste avant le if


Je ne comprend pas le sens du message...

Merci pour votre aide smile


Linux debDesk Linux 4.19.0-9-amd64

Hors ligne

#2 20-05-2018 13:47:51

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian
Noyau : Dur
(G)UI : gui gui, je zuis un doiseau
Inscription : 07-07-2008
Site Web

Re : jeux du pendu en python

Blblbl

#!/bin/sh

mot=$(sort -R /usr/share/dict/french | head -n 1 | iconv -f UTF-8 -t ASCII//TRANSLIT)
coups_restants=5

tentatives="-_"
while [ "$(echo "$mot" | sed "s/[^$tentatives]/_/g")" != "$mot" ]
do
  clear
  if [ "$coups_restants" -lt 5 ]
  then
    printf ",=======Y==\n";
    printf "|| / "; [ $coups_restants -lt 4 ] && printf '   |'; printf "\n";
    printf "||/  "; [ $coups_restants -lt 3 ] && printf '   O'; printf "\n";
    printf "||   "; [ $coups_restants -lt 2 ] && printf '  /|\'; printf "\n";
    printf "||   "; [ $coups_restants -lt 1 ] && printf '  /|'; printf "\n";
    printf "||\n||\n||\n====\n"
  fi
  echo "Lettres essayées : ${tentatives#??}"
  echo "$mot" | sed "s/[^$tentatives]/_/g"
  if [ "$coups_restants" -gt 0 ]
  then
    read l
    l=$(echo ${l%${l#?}} | iconv -f UTF-8 -t ASCII//TRANSLIT | sed 's/[^a-z]/_/g')
    tentatives="$tentatives$l"
    echo $mot | grep -c "$l">/dev/null
    if [ $? -gt 0 ]
    then
      coups_restants=$(($coups_restants - 1))
    fi
  else
    break
  fi
done
if [ $mot = $(echo $mot | sed "s/[^$tentatives]/_/g") ]
then
  echo Gagné
else
  echo Perdu
fi
echo $mot



Et pour ton code, comme le montre la coloration syntaxique, après « guess= » tu as ouvert des doubles guillemets sans les fermer. Tu voulais peut-être dire '' au lieu de " ?

guess=''.join(newguess)


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#3 20-05-2018 14:40:38

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : jeux du pendu en python

mot=$(sort -R /usr/share/dict/french | head -n 1 | iconv -f UTF-8 -t ASCII//TRANSLIT)


Mer il et fou !

Equivalent :

mot=$(shuf /usr/share/dict/french -n 1)



Comparaison :

$ time sort -R /usr/share/dict/french | head -n 1
real    0m5.111s
user    0m10.148s
sys    0m0.008s

$ time shuf /usr/share/dict/french -n 1
real    0m0.030s
user    0m0.024s
sys    0m0.004s



Aherm. Gros détail.
J'ai tendance à imaginer l'ordi du futur à 10Mhz quand j'écris un programme, et j'imagine ton jeu du pendu prendre un jour à s'initialiser big_smile

Dernière modification par otyugh (20-05-2018 14:43:38)


virtue_signaling.pngpalestine.png
~1821942.svg

Hors ligne

#4 20-05-2018 18:17:13

cemoi
Membre
Distrib. : Debian 10 Buster et une SID
Noyau : Linux 4.19.0-9-amd64
(G)UI : XFCE
Inscription : 21-10-2008

Re : jeux du pendu en python

hello,

le code commenté:

import random #importe le module random

wordList=['LOGIS','PIZZA','RONDE','ROUGE','TARTE'] #liste de mots possible
word=random.choice(wordList) #crée une variable baptisée guess pour stoker le mot le temps de la partie
guess='*****'
## partie dédièe au dessin du pendu
import turtle #importe le module turtle
turtle.pensize(5)# definit la taille des traits
errors=0

def showStickman():
  if(errors==1):
    turtle.bk(100)
    turtle.fd(200)
  if(errors==2):
    turtle.bk(100)
    turtle.lt(90)
    turtle.fd(300)
  if(errors==3):
    turtle.rt(90)
    turtle.fd(150)
  if(errors==4):
    turtle.rt(90)
    tutle.fd(50)
  if(errors==5):
    turtle.dot(50)
  if(errors==6):
    turtle.fd(100)
    turtle.bk(75)
  if(errors==7):
    turtle.rt(45)
    turtle.fd(50)
    turtle.bk(50)
  if(errors==8):
    turtle.lt(90)
    turtle.fd(50)
    turtle.bk(50)
  if(errors==9):
    turtle.rt(45)
    turtle.fd(75)
    turtle.rt(45)
    turtle.fd(50)
    turtle.bk(50)
  if(errors==10):
    turtle.lt(90)
    turtle.fd(50)
   
while((guess!=word)and(errors<10)): #continue jusqu'à ce que toutes les lettres soient trouvées.
  print('Voici le mot à deviner ',guess) #Affiche les lettres trouvées au fur et à mesure.
  letter=input('Devine une lettre') #demande au joueur de proposer une lettre
  hasLetter=False #part du principe qu'elle n'est pas dans le mot
  newguess=[] #établit une liste pour afficher les lettres devinées
 
  for n in range(5): #recommence une boucle pour chaque nouvelle lettre
    if(letter==word[n]): #si la lettre proposée est bien dans le mot:
      newguess.append(letter) #l'ajoute à la liste des lettres devinées
      hasLetter=True #indique que la réponse est bonne
    else: #si elle n'est pas dans le mot:
      newguess.append(guess[n]) #ajoute un astérisque(*)
   
  guess=".join(newguess)" #assemble la liste de lettres comme une chaîne et les stocke dans la variable guess
 
  if(hasLetter==True): #si la lettre proposée est dans le mot:
                print('C est exact')# affiche C est exact
        else: #si elle n'est pas dans le mot:
                print('Essaie encore') #affiche essaie encore
    errors=errors+1
    showStickman()
   
print('La réponse était ',word) #si le mot a bien été deviné, interrompt la boucle et affiche la réponse était blabla
 



ça me retourne qu'il y a un probléme d'indentation... (espaces vs tabulations j'imagine) mais je n'ai mis que des tabulations pour faire l'indentation... je capte pas -_-"


Linux debDesk Linux 4.19.0-9-amd64

Hors ligne

#5 20-05-2018 18:40:57

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian
Noyau : Dur
(G)UI : gui gui, je zuis un doiseau
Inscription : 07-07-2008
Site Web

Re : jeux du pendu en python

@otyugh: ah oui, je ne pense jamais à shuf ! Je l'utilise trop rarement smile

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#6 20-05-2018 19:08:35

Philou92
Adhérent(e)
Lieu : Hauts de Seine
Distrib. : Debian bookworm
Noyau : Linux 6.1.0-21-amd64
(G)UI : LightDM et Xfce4.18
Inscription : 29-04-2015

Re : jeux du pendu en python

@cemoi, en python une tabulation c'est un gros mot. Il est recommandé d'utiliser des espaces à la place.
De même il est d'usage d'utiliser 4 espaces par indentation.
Cela assure que ton script sera lu de la même façon par n'importe quel éditeur et n'importe quel scriptomaniaque. smile

Tousse antique Ovide !

Hors ligne

Pied de page des forums