Seite 1 von 1
Was muss ich ändern am Python-Code?
Verfasst: Sonntag 23. April 2017, 21:05
von ma9rtin
Code: Alles auswählen
import Tkinter
Palindrom = True
def handleButton(event):
global Palindrom
i = 0
eingabe = input("Wort eingeben: ")
laenge = len(eingabe)
while i < laenge /2:
if eingabe[i] != eingabe[laenge -i -1]:
Palindrom = False
w['text'] = str(Palindrom)
top = Tkinter.Tk()
w = Tkinter.Label(top,text = '')
w.pack()
b = Tkinter.Button(top,text = "Hello World")
b.pack()
b.bind('<Button-1>',handleButton)
top.mainloop()
Re: Was muss ich ändern am Python-Code?
Verfasst: Sonntag 23. April 2017, 21:17
von ma9rtin
Ich hab vergessen die Variable i hochzuzählen! Daran liegt es aber trotzdem nicht...
Re: Was muss ich ändern am Python-Code?
Verfasst: Sonntag 23. April 2017, 21:30
von Alfons Mittelmeyer
Also, keine Ahnung, was Du mit diesem Programm bezwecken willst, aber benütze raw_input statt input, sonst kracht das script ab. Und i solltest Du auch hochzählen, dennn sonst bist Du in einer Endlosschleife:
Code: Alles auswählen
import Tkinter
Palindrom = True
def handleButton(event):
global Palindrom
i = 0
eingabe = raw_input("Wort eingeben: ")
laenge = len(eingabe)
while i < laenge /2:
if eingabe[i] != eingabe[laenge -i -1]:
Palindrom = False
i += 1
w['text'] = str(Palindrom)
top = Tkinter.Tk()
w = Tkinter.Label(top,text = '')
w.pack()
b = Tkinter.Button(top,text = "Hello World")
b.pack()
b.bind('<Button-1>',handleButton)
top.mainloop()
Re: Was muss ich ändern am Python-Code?
Verfasst: Sonntag 23. April 2017, 21:39
von Sirius3
@ma9rtin: global hat in einem normaler Programm nichts verloren. Was willst Du damit überhaupt bezwecken, außer falsche Ergebnisse zu produzieren? Ein GUI-Programm erwartet normalerweise keine Eingaben von der Kommandozeile. input ist bei einem Python2-Programm auch falsch, Du wolltest wahrscheinlich raw_input benutzen. Statt bind benutzt man bei Knöpfen eigentlich den command-Parameter.
Re: Was muss ich ändern am Python-Code?
Verfasst: Sonntag 23. April 2017, 21:58
von Alfons Mittelmeyer
Sirius3 hat geschrieben:@ma9rtin: global hat in einem normaler Programm nichts verloren.
Außerdem is global Palindrom Unsinn, denn ist eine Eingabe falsch, bleibt alles falsch, auch wenn richtige Eingaben folgen
Re: Was muss ich ändern am Python-Code?
Verfasst: Sonntag 23. April 2017, 22:08
von bwbg
Der Test auf ein Palindrom lässt sich bequem ohne (eigene) Schleife ausdrücken:
Geschickterweise packt man dieses in eine sinnvoll benannte Funktion.
Wie die Vorrredner schon anmerkten:
global existiert
nicht!
Re: Was muss ich ändern am Python-Code?
Verfasst: Montag 24. April 2017, 18:29
von ma9rtin
Das mit der Shell-Eingabe war unsinn,ok.. Viele Wege führen nach Rom! Dann guckt mal bei Diddy Development vorbei! (YouTube)
Re: Was muss ich ändern am Python-Code?
Verfasst: Montag 24. April 2017, 18:30
von ma9rtin
bwbg hat geschrieben:Der Test auf ein Palindrom lässt sich bequem ohne (eigene) Schleife ausdrücken:
Geschickterweise packt man dieses in eine sinnvoll benannte Funktion.
Wie die Vorrredner schon anmerkten:
global existiert
nicht!
Das mit der Shell-Eingabe war unsinn,ok.. Viele Wege führen nach Rom! Dann guckt mal bei Diddy Development vorbei! (YouTube)
Re: Was muss ich ändern am Python-Code?
Verfasst: Montag 24. April 2017, 18:31
von ma9rtin
Alfons Mittelmeyer hat geschrieben:Sirius3 hat geschrieben:@ma9rtin: global hat in einem normaler Programm nichts verloren.
Außerdem is global Palindrom Unsinn, denn ist eine Eingabe falsch, bleibt alles falsch, auch wenn richtige Eingaben folgen
Das mit der Shell-Eingabe war unsinn,ok.. Viele Wege führen nach Rom! Dann guckt mal bei Diddy Development vorbei! (YouTube)
Re: Was muss ich ändern am Python-Code?
Verfasst: Montag 24. April 2017, 19:19
von Alfons Mittelmeyer
@ma9rtin: was Du ändern mußt:
statt:
Code: Alles auswählen
Palindrom = True
def handleButton(event):
global Palindrom
i = 0
eingabe = input("Wort eingeben: ")
laenge = len(eingabe)
while i < laenge /2:
if eingabe[i] != eingabe[laenge -i -1]:
Palindrom = False
i += 1
w['text'] = str(Palindrom)
muss es heißen:
Code: Alles auswählen
def handleButton(event):
eingabe = input("Wort eingeben: ")
laenge = len(eingabe)
Palindrom = True
i = 0
while i < laenge /2:
if eingabe[i] != eingabe[laenge -i -1]:
Palindrom = False
i += 1
w['text'] = str(Palindrom)
Also vor jeder Auswertung wieder auf True zurücksetzen, sonst bekommst Du nach einmal False immer False. global ist also sowieso hier Unsinn. Außerdem könnte man nach False, die Scheife auch mit
break abbrechen, anstatt noch weiter zu machen.
Re: Was muss ich ändern am Python-Code?
Verfasst: Montag 24. April 2017, 19:29
von kbr
@ma9rtin: noch besser ist:
Re: Was muss ich ändern am Python-Code?
Verfasst: Montag 24. April 2017, 19:56
von BlackJack
@kbr: Das ist eher schlechter, weil's nicht funktioniert.

Re: Was muss ich ändern am Python-Code?
Verfasst: Montag 24. April 2017, 21:09
von kbr
BlackJack hat geschrieben:@kbr: Das ist eher schlechter, weil's nicht funktioniert.

Oops — das kommt davon, wenn man auf die Schnelle was schreibt und nicht darauf achtet, dass ein Iterator zurückkommt ...
Da wäre dann noch ein Typecast von nöten
Schaut jetzt leider nicht mehr ganz so elegant aus.
Egal!
