Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pourquoi ca ne marche pas

5 réponses
Avatar
vdperic
Bonjour,
Je commence à m'intéresser à Python. Je suis le livre Apprendre la programmation par le jeu. Pourquoi ceci fonctionne
from tkinter import *
import random

def melangemot(mot) :
melange = mot
for i in range(len(mot)) :
a = random.randint(0,len(mot)-1)
b = random.randint(0,len(mot)-1)
new = ""
for j in range(len(melange)) :
if j==a :
new = new + melange[b]
elif j==b :
new = new + melange[a]
else :
new = new + melange[j]
melange = new
return melange

def verif():
if E.get().upper() == m :
L.config(text="Gagné !")
else :
B.config(text="Non, réessayer ?")

fen = Tk()
fen.geometry("200x100")
fen.title("Mots mélangés")

m="Maison"


L=Label(fen,text=melangemot(m),width=20)
L.place(x=20,y=10)
E=Entry(fen,width=24)
E.place(x=20,y=30)
B=Button(fen,text="Valider",font='arial 9',width=20,command=verif)
B.place(x=20,y=60)
B.focus()
fen.mainloop()

mais quand je mets
m=input("Choisissez un mot:")
ça ne marche plus.

Pouvez-vous m'expliquer ? Je vous en remercice

5 réponses

Avatar
Benoit Izac
Bonjour,
Le 08/11/2020 Í  18:47, vdperic a écrit dans le message
 :
Je commence Í  m'intéresser Í  Python. Je suis le livre Apprendre la
programmation par le jeu. Pourquoi ceci fonctionne
from tkinter import *
import random
def melangemot(mot) :
melange = mot
for i in range(len(mot)) :
a = random.randint(0,len(mot)-1)
b = random.randint(0,len(mot)-1)
new = ""
for j in range(len(melange)) :
if j==a :
new = new + melange[b]
elif j==b :
new = new + melange[a]
else :
new = new + melange[j]
melange = new
return melange
def verif():
if E.get().upper() == m :
L.config(text="Gagné !")
else :
B.config(text="Non, réessayer ?")
fen = Tk()
fen.geometry("200x100")
fen.title("Mots mélangés")
m="Maison"
L=Label(fen,text=melangemot(m),width )
L.place(x ,y)
E=Entry(fen,width$)
E.place(x ,y0)
B=Button(fen,text="Valider",font='arial 9',width ,command=verif)
B.place(x ,y`)
B.focus()
fen.mainloop()

Pour moi, ça ne peut pas fonctionner : vu que tu compares une chaÍ®ne que
tu mets en majuscule Í  'Maison', personne ne gagnera jamais… Il faut un
upper() (ou lower()) de chaque cÍ´té pour que ça fonctionne.
mais quand je mets
m=input("Choisissez un mot:")
ça ne marche plus.

Boule de cristal HS. Tu mets ça o͹ ? Qu'est ce qui ne marche pas ?
Pouvez-vous m'expliquer ? Je vous en remercice

input() attend quelque chose sur l'entrée standard ; en général le
terminal. Donc si tu lances ça depuis autre chose qu'un terminal et que
rien n'arrive sur l'entrée standard, ton programme reste bloqué après la
création de la fenêtre. C'est peut-être ça «Â ne marche plus »Â ?
PS : il y a plus élégant pour mélanger ta chaÍ®ne de caractère :
def melanger(mot):
return ''.join(random.sample(mot, len(mot)))
--
Benoit Izac
Avatar
vdperic
Le dimanche 08 Novembre 2020 à 21:08 par Benoit Izac :
Bonjour,
Le 08/11/2020 Í  18:47, vdperic a écrit dans le message
Je commence Í  m'intéresser Í  Python. Je suis
le livre Apprendre la
programmation par le jeu. Pourquoi ceci fonctionne
from tkinter import *
import random
def melangemot(mot) :
melange = mot
for i in range(len(mot)) :
a = random.randint(0,len(mot)-1)
b = random.randint(0,len(mot)-1)
new = ""
for j in range(len(melange)) :
if j==a :
new = new + melange[b]
elif j==b :
new = new + melange[a]
else :
new = new + melange[j]
melange = new
return melange
def verif():
if E.get().upper() == m :
L.config(text="Gagné !")
else :
B.config(text="Non, réessayer ?")
fen = Tk()
fen.geometry("200x100")
fen.title("Mots mélangés")
m="Maison"
L=Label(fen,text=melangemot(m),width )
L.place(x ,y)
E=Entry(fen,width$)
E.place(x ,y0)
B=Button(fen,text="Valider",font='arial 9',width ,command=verif)
B.place(x ,y`)
B.focus()
fen.mainloop()
Pour moi, ça ne peut pas fonctionner : vu que tu compares
une chaͮne que
tu mets en majuscule Í  'Maison', personne ne gagnera
jamais… Il faut un
upper() (ou lower()) de chaque cÍ´té pour que ça
fonctionne.
mais quand je mets
m=input("Choisissez un mot:")
ça ne marche plus.
Boule de cristal HS. Tu mets ça o͹ ? Qu'est ce
qui ne marche pas ?
Pouvez-vous m'expliquer ? Je vous en remercice
input() attend quelque chose sur l'entrée standard ; en
général le
terminal. Donc si tu lances ça depuis autre chose qu'un terminal et que
rien n'arrive sur l'entrée standard, ton programme reste bloqué
après la
création de la fenêtre. C'est peut-être ça
«Â ne marche plus »Â ?
PS : il y a plus élégant pour mélanger ta
chaÍ®ne de caractère :
def melanger(mot):
return ''.join(random.sample(mot, len(mot)))
--
Benoit Izac
En fait je vais réexpliquer:
Quand j'entre moi-même dans le programme le mot "Maison" (m="MAISON), ça fonctionne bien !
Par contre quand je demande d'entrer un mot avec INPUT, ça ne marche plus. Le programme reste bloqué et la fenêtre ne se crée pas.
C'est bizarre parce que si je demande print (m), le programme met bien le mot choisi par l'utilisateur !
Merci déjà pour le mélange de caractères. C'est nettement plus court
Avatar
Benoit Izac
Bonjour,
Le 09/11/2020 Í  19:08, vdperic a écrit dans le message
 :
En fait je vais réexpliquer:
Quand j'entre moi-même dans le programme le mot "Maison" (m="MAISON),
ça fonctionne bien !
Par contre quand je demande d'entrer un mot avec INPUT, ça ne marche
plus. Le programme reste bloqué et la fenêtre ne se crée pas.
C'est bizarre parce que si je demande print (m), le programme met bien
le mot choisi par l'utilisateur !

Peux-tu poster ton programme complet avec input() qui ne fonctionne
pas (avec le print(m) aussi) ?
--
Benoit Izac
Avatar
vdperic
Le lundi 09 Novembre 2020 à 19:58 par Benoit Izac :
Bonjour,
Le 09/11/2020 Í  19:08, vdperic a écrit dans le message
En fait je vais réexpliquer:
Quand j'entre moi-même dans le programme le mot "Maison"
(m="MAISON),
ça fonctionne bien !
Par contre quand je demande d'entrer un mot avec INPUT, ça ne marche
plus. Le programme reste bloqué et la fenêtre ne se crée
pas.
C'est bizarre parce que si je demande print (m), le programme met bien
le mot choisi par l'utilisateur !
Peux-tu poster ton programme complet avec input() qui ne fonctionne
pas (avec le print(m) aussi) ?
--
Benoit Izac
Ceci fonctionne:
from tkinter import *
import random
def melangemot(mot):
return ''.join(random.sample(mot, len(mot)))
#def melangemot(mot) :
# melange = mot
# for i in range(len(mot)) :
# a = random.randint(0,len(mot)-1)
# b = random.randint(0,len(mot)-1)
# new = ""
# for j in range(len(melange)) :
# if j==a :
# new = new + melange[b]
# elif j==b :
# new = new + melange[a]
# else :
# new = new + melange[j]
# melange = new
# return melange
def verif():
if E.get().upper() == m :
L.config(text="Gagné !")
else :
B.config(text="Non, réessayer ?")
fen = Tk()
fen.geometry("200x100")
fen.title("Mots mélangés")
m="MAISON"
L=Label(fen,text=melangemot(m),width )
L.place(x ,y)
E=Entry(fen,width$)
E.place(x ,y0)
B=Button(fen,text="Valider",font='arial 9',width ,command=verif)
B.place(x ,y`)
B.focus()
fen.mainloop()
Ceci ne fonctionne pas alors que j'ai changé une ligne (ligne 34)
from tkinter import *
import random
def melangemot(mot):
return ''.join(random.sample(mot, len(mot)))
#def melangemot(mot) :
# melange = mot
# for i in range(len(mot)) :
# a = random.randint(0,len(mot)-1)
# b = random.randint(0,len(mot)-1)
# new = ""
# for j in range(len(melange)) :
# if j==a :
# new = new + melange[b]
# elif j==b :
# new = new + melange[a]
# else :
# new = new + melange[j]
# melange = new
# return melange
def verif():
if E.get().upper() == m :
L.config(text="Gagné !")
else :
B.config(text="Non, réessayer ?")
fen = Tk()
fen.geometry("200x100")
fen.title("Mots mélangés")
m=input("Propose un mot :")
L=Label(fen,text=melangemot(m),width )
L.place(x ,y)
E=Entry(fen,width$)
E.place(x ,y0)
B=Button(fen,text="Valider",font='arial 9',width ,command=verif)
B.place(x ,y`)
B.focus()
fen.mainloop()
Avatar
Benoit Izac
Bonjour,
Le 10/11/2020 Í  11:08, vdperic a écrit dans le message
 :
Ceci ne fonctionne pas alors que j'ai changé une ligne (ligne 34)
[...]
m=input("Propose un mot :")

Et comment saisis-tu ce mot ?
Tant que la saisie n'est pas faite, m n'est pas initialisé et le
programme reste en attente sur cette ligne.
--
Benoit Izac