Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
ma9rtin
User
Beiträge: 5 Registriert: Sonntag 23. April 2017, 21:02
Sonntag 23. April 2017, 21:05
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()
Alfons Mittelmeyer
User
Beiträge: 1715 Registriert: Freitag 31. Juli 2015, 13:34
Sonntag 23. April 2017, 21:30
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()
Zuletzt geändert von
Alfons Mittelmeyer am Sonntag 23. April 2017, 21:48, insgesamt 2-mal geändert.
Sirius3
User
Beiträge: 17741 Registriert: Sonntag 21. Oktober 2012, 17:20
Sonntag 23. April 2017, 21:39
@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.
Alfons Mittelmeyer
User
Beiträge: 1715 Registriert: Freitag 31. Juli 2015, 13:34
Sonntag 23. April 2017, 21:58
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
bwbg
User
Beiträge: 407 Registriert: Mittwoch 23. Januar 2008, 13:35
Sonntag 23. April 2017, 22:08
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 !
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
ma9rtin
User
Beiträge: 5 Registriert: Sonntag 23. April 2017, 21:02
Montag 24. April 2017, 18:29
Das mit der Shell-Eingabe war unsinn,ok.. Viele Wege führen nach Rom! Dann guckt mal bei Diddy Development vorbei! (YouTube)
ma9rtin
User
Beiträge: 5 Registriert: Sonntag 23. April 2017, 21:02
Montag 24. April 2017, 18:30
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)
ma9rtin
User
Beiträge: 5 Registriert: Sonntag 23. April 2017, 21:02
Montag 24. April 2017, 18:31
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)
Alfons Mittelmeyer
User
Beiträge: 1715 Registriert: Freitag 31. Juli 2015, 13:34
Montag 24. April 2017, 19:19
@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.
kbr
User
Beiträge: 1487 Registriert: Mittwoch 15. Oktober 2008, 09:27
kbr
User
Beiträge: 1487 Registriert: Mittwoch 15. Oktober 2008, 09:27
Montag 24. April 2017, 21:09
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!