verschachtelte Schleifen in Python

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.
Antworten
fenestro
User
Beiträge: 13
Registriert: Sonntag 20. Oktober 2013, 00:33

Schöne Gute Nacht :)
Ich bin neu in Python und arbeite normalerweise mit PHP und C/C++.

Ich möchte ein kleines Menü auf meinem LCD Display umsetzen,
jedoch haben mich die fehlenden klammern in Python von Anfang an Irritiert.
Jedenfalls bekomme ich folgenden Error
File "hausfunk.py", line 32
if menu == 1:
^
IndentationError: unexpected indent
bei folgendem Code

Code: Alles auswählen

menu=1
while True:
    
        if lcd.buttonPressed(lcd.DOWN):
			menu = menu + 1
			lcd.clear()
			
				if menu == 1:   #zeile32
					lcd.message("Profil wechseln\nChronik ansehen")
					lcd.backlight(lcd.ON)
				elif menu == 2:
					lcd.message("Chronik ansehen")
				
		
				
		elif lcd.buttonPressed(lcd.UP):
			menu = menu - 1
			lcd.clear()
				if menu == 1:
					lcd.message("Profil wechseln\nChronik ansehen")
					lcd.backlight(lcd.ON)
				elif menu == 0:
					lcd.message("Nachricht senden \nProfil wechseln")		

	
Hoffe jemand kann mir weiterhelfen :)

Mfg
fenestro
Axel-Erfurt
User
Beiträge: 20
Registriert: Mittwoch 2. Oktober 2013, 22:15

in "hausfunk.py", line 32

ein Leerzeichen oder ein TAB zuviel?
Benutzeravatar
Manchotix
User
Beiträge: 54
Registriert: Samstag 14. Januar 2012, 19:54

Hey fenestro und willkommen im Forum,

Du solltest dir noch mal anschauen wie Python Code geschrieben wird mit der Einrückung :/
Also lesen verstehen und nochmal versuchen.
Style Guide:
http://www.python.org/dev/peps/pep-0008/
Python Tutorial:
http://tutorial.pocoo.org/
BlackJack

@fenestro: Was hat der Betreff eigentlich mit der Frage zu tun? Verschachtelte Schleifen sehe ich da nirgends‽

Und wieso wiederholt sich der Quelltext für ``menu == 1`` zweimal? Da ist der Code offensichtlich schlecht organisiert. Das verändern von `menu` sollte unabhängig vom Auswerten dieses Wertes sein, damit man nicht das „Don't Repeat Yourself”-Prinzip (DRY-Prinzip) verletzen muss.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@fenestro: ob man jetzt zusammengehörige Blöcke dadurch kennzeichnet, daß man sie einklammert, oder einrückt, ist nur eine Frage des Geschmacks der jeweiligen Syntax. Wild irgendwie einzurücken ist ungefähr genauso sinnvoll, wie wild irgendwelche Klammern zu setzen. Grundlegende Konzepte wie DRY Trennung von Anzeige- und Verarbeitungslogik sind aber unabhängig von Sprache und Syntax:

Code: Alles auswählen

MENU = ["Nachricht senden",  "Profil wechseln", "Chronik ansehen"]

def update_menu(menu):
    lcd.clear()
    lcd.message('\n'.join(MENU[menu:menu+2]))
    if menu == 1:
        lcd.backlight(lcd.ON)

menu=1
while True:
    if lcd.buttonPressed(lcd.DOWN):
        menu = menu + 1
        update_menu(menu)
    elif lcd.buttonPressed(lcd.UP):
        menu = menu - 1
        update_menu(menu)
Antworten