Seite 1 von 1

while-Schleifenproblem

Verfasst: Dienstag 24. April 2012, 20:04
von henry681997
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)")

Re: while-Schleifenproblem

Verfasst: Dienstag 24. April 2012, 20:21
von /me
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.

Re: while-Schleifenproblem

Verfasst: Dienstag 24. April 2012, 20:26
von henry681997
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! :)

Re: while-Schleifenproblem

Verfasst: Dienstag 24. April 2012, 21:29
von /me
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