while-Schleifenproblem

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
henry681997
User
Beiträge: 16
Registriert: Montag 9. April 2012, 17:05

Hey Leute, ich habe ein Programm geschrieben bei den man sich mit hilfe von rechnen muenzen erarbeitet, und wenn man genug muenzen hat, darf man zahlenraten spielen, (konsolenprogramm)
wenn ich nun zahlenraten gespielt habe dund den befehl gegeben habe wieder zu rechen zurückzugelangen, so tut er das nicht, sondern macht stattdessen garnichts -.-
wo ist der fehler? was soll ich tun damits läuft?

(bitte antwortet schnell, da ich gleich ins bett soll :) )

Code: Alles auswählen

# -*- coding: cp1252 -*-
import random

zahlenraten = "zahlenraten"
ja = "ja"
eingabe = raw_input ("Neues Spiel? (ja oder nein)")
gold = 0

while eingabe == ja:
    aufgaben = int (raw_input ("Wie viele Aufgaben willst du?") )
    for aufgaben_ in range (aufgaben):
        a = random.randint (1, 60)
        b = random.randint (1, 60)
        print a, "+", b, "=",
        c = int (raw_input () )
        if c == a + b:
            gold = gold + random.randint (500, 600)
        else:
            gold = gold
    print "Du hast jetzt", gold, "Goldmuenzen."
    eingabe = raw_input ("Weiterrechnen? (ja oder zahlenraten eingeben)")

while eingabe == zahlenraten and gold >= 500:
    gold = gold - 500
    print "(-500 Gold)"
    print "Du musst eine Zahl zwischen 1 und 99 erraten."
    print "Du hast 8 Versuche"
    geheimnis = random.randint (1, 99)
    versuche = 0
    tipp = 0
    while tipp != geheimnis and versuche < 8:
        tipp = input ("Was rätst du?")
        if tipp < geheimnis:
            print "Zu niedrig!"
        elif tipp > geheimnis:
            print "Zu hoch!"
        versuche = versuche + 1
    if geheimnis == tipp:
        print "Du hast die gesuche Zahl erraten!"
        print "Du hast 1000 Goldmuenzen dazugekriegt!"
        gold = gold + 1000
    else:
        print "Du hast die Zahl nicht erraten koennen."
    eingabe = raw_input ("Weiterrechnen? (ja oder zahlenraten eingeben)")
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Du kannst mit deinem Code durch Eingabe von "ja" nicht wieder an den Anfang zurückgelangen.

Du befindest dich in der unteren Schleife. Wie soll das Programm jetzt wissen, dass es zum Beginn der ersten Schleife springen soll?

Offensichtlich musst du noch eine weitere Schleife um alles herum bauen und die Verarbeitungslogik entsprechend ändern. Das wäre dann auch eine gute Gelegenheit, den Code in einzelne Funktionen aufzuteilen.
henry681997
User
Beiträge: 16
Registriert: Montag 9. April 2012, 17:05

danke! du warst mir eine große hilfe!!
ich hab einfach alles 4mal nach rechts gerückt und zum anfang eingetragen in den code: while 2 == 2:

jetzt kann ich auch endlich ein belohnungssystem einbauen! danke!!!
funktionen habe ich leider noch nicht gelernt in meinem schlauen lehrbuch, das kommt erst im nächsten kapitel, werde baer nächstes we damit anfangen
auf jedenfall, danke! :)
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

henry681997 hat geschrieben:ich hab einfach alles 4mal nach rechts gerückt und zum anfang eingetragen in den code: while 2 == 2:
Das geht kürzer und lesbarer.

Code: Alles auswählen

>>> 2 == 2
True
Damit kannst du auch einfach schreiben:

Code: Alles auswählen

while True:
Damit hast du theoretisch erst einmal eine Endlosschleife. Du musst jetzt sehen, dass du die Schleife irgendwo mit break verlässt. Ein Beispiel:

Code: Alles auswählen

i = 1
while True:
    print i
    i += 1
    if i > 5:
        break
Antworten