Kann mir jemand helfen, irgendwie funktioniert dieser Code nicht richtig

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
reza331
User
Beiträge: 25
Registriert: Sonntag 9. Juni 2019, 21:39

Ich möchte gerne wissen wie oft geraten wurde, aber leider funktioniert es nicht mit der "anzahl" . Wäre nett wenn ihr mir hilft.

anzahl = 0

def ergebnisPruefen():
while True:
import random
eingabe = int(input('Raten Sie eine Zahl: '))
zufallsz = random.randint(1, 10)

if zufallsz == eingabe:
print('Sie haben richtig geraten.')
print('Sie haben ' + str(anzahl) + ' Versuche gebraucht.')
break
else:
print('Nicht richtig. Versuchen Sie es nochmal')

anzahl = anzahl + 1

print(ergebnisPruefen())
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

importe gehören an den Anfang der Quelltextdate - nicht irgendwo in Funktionen.

Einrückungen sind in Python wichtig.
Bitte benutzte die Code-Tags, indem du in dem "Vollständigen Editor" den Button mit </> darauf verwendest.
Ohne Einrückungen kann man nicht sehen, in welcher Hierachieebene welche Zeile steht.
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

@reza331: eigentlich wäre es nett, wenn Du verraten würdest, was nicht funktioniert, also die Fehlermeldung, die ganz klar sagt, dass Du eine lokale Variable ›anzahl‹ hast, die Du verwendest, ohne ihr einen Wert zuzuweisen.
Also, warum steht das ›anzahl = 0‹ nicht in der Funktion?

›ergebnisPruefen‹ hat keinen expliziten Rückgabewert, die ›print‹-Ausgabe am Schluß ist daher nicht sinnvoll.
Variablen- und Funktionsnamen sind wichtig für das Verständnis. ›ergebnisPruefen‹ prüft ja gar kein Ergebnis, ist also falsch. ›zufallsz‹ ist eine Abkürzung, die jeden rätseln läßt, was denn das z bedeuten soll, also keine Abkürzungen benutzen.
Variablen- und Funktionsnamen werden per Konvention klein_mit_unterstrich geschrieben: ergebnis_pruefen.
Strings stückelt man nicht mit + zusammen, sondern benutzt Stringformatierung:

Code: Alles auswählen

import random

def zufallszahl_raten():
    anzahl = 0
    while True:
        eingabe = int(input('Raten Sie eine Zahl: '))
        zufallszahl = random.randint(1, 10)
        if  zufallszahl == eingabe:
            print('Sie haben richtig geraten.')
            print(f'Sie haben {anzahl} Versuche gebraucht.')
            break
        else:
            print('Nicht richtig. Versuchen Sie es nochmal')
        anzahl += 1
    
zufallszahl_raten()
reza331
User
Beiträge: 25
Registriert: Sonntag 9. Juni 2019, 21:39

Vielen Dank euch.
Antworten