Wie zurückspringen auf Programmanfang ?

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
darkdragon
User
Beiträge: 2
Registriert: Sonntag 22. Juli 2018, 15:04

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
		
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@darkdragon: ``while True:`` kennst Du ja bereits. Jetzt musst Du nur noch verstehen was da wiederholt wird und das entsprechend anpassen. :-)
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

@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()
Zuletzt geändert von sls am Sonntag 22. Juli 2018, 17:42, insgesamt 1-mal geändert.
When we say computer, we mean the electronic computer.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@sls: Dein Programm tut jetzt aber etwas ganz anderes. Trotzdem ist eine while-True-Schleife auch hier die bessere Wahl.
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

@Sirius3: meintest du etwas anderes oder die von mir falsch abgetippte arithmetische Operation zahl + 1 * 3?
When we say computer, we mean the electronic computer.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

@darkdragon: kleiner Tipp, setze die Zeile while True: ganz an den Anfang und rücke den Code darunter korrekt ein....
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

@__blackjack__: danke, dass er das damit lösen will habe ich nicht erkannt, dann kann man die Wertzuweisung der Variablen natürlich nicht weglassen.
When we say computer, we mean the electronic computer.
darkdragon
User
Beiträge: 2
Registriert: Sonntag 22. Juli 2018, 15:04

@ThomasL: danke für den Tipp. Ich werd´s mal so versuchen.
Antworten