Seite 1 von 1

Wie zurückspringen auf Programmanfang ?

Verfasst: Sonntag 22. Juli 2018, 16:34
von darkdragon
Bin noch Anfänger. Dies ist mein erstes Script in Python. Die Ausführung funktioniert auch wie geplant. Nachdem eine Zahl > 1 eingegeben wird, werden die Zahlen so berechnet und ausgegeben, wie ich mir das vorstelle und nach der Ausgabe wird die Frage "Neustart J\N ?" gestellt.

Bei der Eingabe "N" wird das Script wie geplant beendet. Bei "J" soll der Programmanfang mit der Eingabe "Geben Sie eine Zahl größer oder gleich 1 ein:" erneut erscheinen. Und da liegt das Problem. Ich weiß nicht wie ich das programmieren soll. Mit def main() am Anfang und am Ende mit main() versucht, klappt aber nicht. Ich weiß dass Python keinen generellen goto Befehl vorsieht und die Sache vielleicht nicht so einfach zu lösen ist, wäre aber super wenn mir hier jemand helfen könnte. :P

Mein Code:

Code: Alles auswählen


zahl = int(input("Geben Sie eine Zahl größer oder gleich 1 ein : "))
while zahl <= 1: 
	print("Die Zahl ist kleiner oder gleich 1")
	zahl = int(input("Geben Sie eine Zahl ein: "))
while zahl > 1:
	if zahl %2 == 0:
		zahl = zahl / 2 
		print(zahl)
					
	else:
		zahl = (3 * zahl + 1)
		print(zahl)
	
while True:
	eingabe = str(input("Neustart J/N ? "))
	if eingabe == "J":
		print ("Das Programm wird neu gestartet !")
	else:
		print ("Das Programm wurde beendet !")
		break
		

Re: Wie zurückspringen auf Programmanfang ?

Verfasst: Sonntag 22. Juli 2018, 17:22
von __blackjack__
@darkdragon: ``while True:`` kennst Du ja bereits. Jetzt musst Du nur noch verstehen was da wiederholt wird und das entsprechend anpassen. :-)

Re: Wie zurückspringen auf Programmanfang ?

Verfasst: Sonntag 22. Juli 2018, 17:35
von sls
@darkdragon: um nicht gleich alles an Programmierarbeit vorwegzunehmen, aber das was du machen möchtest, kann man stark entschlacken.

Zum einen benötigst du für dein Vorhaben exakt eine Schleife in der du alle Abfragen und Auswertungen treffen kannst. Als schnelles Beispiel:

Code: Alles auswählen

auswahl = 'n'

while auswahl != 'j':
    zahl = int(input("Geben Sie eine Zahl größer oder gleich 1 ein: "))

    if zahl <= 1:
        print("Ungültiger Wert, die Zahl ist kleiner oder gleich 1.")
    elif zahl > 1 and zahl % 2 == 0:
        print(zahl / 2)
    else:
        print(3 * zahl + 1)

    auswahl = input("Möchten Sie das Programm beenden? J/N\n").lower()

Re: Wie zurückspringen auf Programmanfang ?

Verfasst: Sonntag 22. Juli 2018, 17:40
von Sirius3
@sls: Dein Programm tut jetzt aber etwas ganz anderes. Trotzdem ist eine while-True-Schleife auch hier die bessere Wahl.

Re: Wie zurückspringen auf Programmanfang ?

Verfasst: Sonntag 22. Juli 2018, 17:44
von sls
@Sirius3: meintest du etwas anderes oder die von mir falsch abgetippte arithmetische Operation zahl + 1 * 3?

Re: Wie zurückspringen auf Programmanfang ?

Verfasst: Sonntag 22. Juli 2018, 17:54
von Sirius3
@sls: ich meinte, dass Dein Programm etwas anderes macht, als darkdragons Programm und das hat nichts mit einer falsch abgetippten arithmetischen Operation zu tun, sondern generell ein anderer Algorithmus.

Re: Wie zurückspringen auf Programmanfang ?

Verfasst: Sonntag 22. Juli 2018, 18:00
von ThomasL
@darkdragon: kleiner Tipp, setze die Zeile while True: ganz an den Anfang und rücke den Code darunter korrekt ein....

Re: Wie zurückspringen auf Programmanfang ?

Verfasst: Sonntag 22. Juli 2018, 18:06
von __blackjack__

Re: Wie zurückspringen auf Programmanfang ?

Verfasst: Sonntag 22. Juli 2018, 18:17
von sls
@__blackjack__: danke, dass er das damit lösen will habe ich nicht erkannt, dann kann man die Wertzuweisung der Variablen natürlich nicht weglassen.

Re: Wie zurückspringen auf Programmanfang ?

Verfasst: Sonntag 22. Juli 2018, 18:20
von darkdragon
@ThomasL: danke für den Tipp. Ich werd´s mal so versuchen.