4 Stimmen

PYTHON: Einfache zufällige Generierung mit if/else steuern

Neu in der Programmierung, ich lerne und hier ist wahrscheinlich ein sehr einfaches Problem für euch.

import random

def run_stair_yes():
    print "\nDas Treppensteigen ist sehr gefährlich!"
    print "Die Statistik zeigt, dass du eine 70%ige Chance hast zu fallen."
    print "\nWirf den Würfel!"

    for i in xrange(1):
        print random.randint(1, 100)

    if i <= 70 :
        print "\nNa ja, die Schwerkraft ist eine Mistkerl. Du bist gefallen und gestorben."

    elif i >= 71 :
        athletisch()

    else: 
            print "Ich bin erledigt!"
            exit(0)

Mein Problem ist, dass egal welche Zahl generiert wird, es mir immer dasselbe "Die Schwerkraft ist eine Mistkerl. Du bist gefallen und gestorben" gibt.

Wo mache ich einen Fehler ?

6voto

jamylak Punkte 119693

Sie haben i tatsächlich nie auf random.randint() gesetzt

Sie sagen

for i in xrange(1):

Wo i den Wert 0 annimmt, während Sie durch das xrange(1) iterieren und dann drucken Sie einfach das Ergebnis von random.randint(1, 100) aus, ohne es an i zuzuweisen.

Versuchen Sie dies

i = random.randint(1, 100)

6voto

Li-aung Yip Punkte 12102

Zusätzlich zu jamylaks Rat gibt es einige allgemeine Hinweise, um Ihren Code zu verbessern:

  • Mehrzeilige Eingabeaufforderungen sollten besser mit der Syntax für mehrzeilige Zeichenfolgen anstelle von mehreren print-Anweisungen geschrieben werden. Auf diese Weise müssen Sie nur einmal print schreiben, und Sie benötigen nicht all diese zusätzlichen Zeilenumbruchszeichen (\n)

Beispiel:

print """
Das Laufen auf der Treppe ist gefährlich!

Sie haben eine 70%ige Chance zu fallen.

Trotzdem die Treppe hochrennen?
"""
  • Ihre Wahrscheinlichkeitsberechnung verwendet Zufallszahlen im Bereich [1-100], aber es ist wahrscheinlich natürlicher, eine Gleitkommazahl zu verwenden. (Beide Methoden funktionieren.)

  • Sie müssen nicht überprüfen, ob die Zahl <= 70 ist und dann überprüfen, ob sie >= 71 ist. Nach Definition (für Ganzzahlen!) wird nur eine dieser Bedingungen zutreffen, daher müssen Sie tatsächlich nicht beide überprüfen.

Beispiel:

random_value = random.random() # Zufallszahl im Bereich [0.0,1.0)
if random_value < 0.7:
    pass #etwas passiert 70% der Zeit
else:
    pass #etwas passiert die anderen 30% der Zeit

Oder kompakter:

if (random.random() < 0.7):
    pass #etwas passiert 70% der Zeit
else:
    pass #etwas passiert 30% der Zeit

0voto

Óscar López Punkte 224631

Vielleicht, wenn Sie tatsächlich etwas i zuweisen...

i = random.randint(1, 100)

Und noch etwas: Der else Teil wird niemals ausgeführt. Jede ganze Zahl ist entweder <= 70 oder >= 71, sodass das else nie erreicht wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X