2016-12-03 3 views
0

Ich mache ein Python-Programm, das eine Abenteuerspiel-Sache durch ein Spukhaus ist. Eines der großen Dinge darin ist eine Liste mit dem Namen owned_items. Dadurch werden Elemente, die durch Strings wie "Schachtel mit Streichhölzern" oder "Fackel" dargestellt werden, daran angehängt, wenn sie diese im Haus finden oder ihnen beim Start von random.choice gegeben werden. Manchmal, wenn sie mit einer Situation konfrontiert werden, hängt ihre Auswahl davon ab, ob sie einen bestimmten Gegenstand haben oder nicht.Python: Drucken in If-Anweisungen nicht ausgeführt

Mein Code:

#bullets is the variable for pistol ammo. During my testing of this function, it is at 5 when it should start 
bullets=5 

owned_items=[] 
ronald_items=["a glass bottle", "a pistol", "a torch", "a small glass of  oil", "a box of matches", "a can of spray paint", "a small knife", "a pair of  surgical gloves", "a blessed amulet"] 
owned_items.append(random.choice(ronald_items)) 
ronald_items.remove(owned_items[0] 
owned_items.append(random.choice(ronald_items)) 
ronald_items.remove(owned_items[1]) 


#This part is in the actual definition where the problem appears when it should run 
def skeleton_choice(): 
    if "a glass bottle" in owned_items: 
     print('type "glass bottle" to attack the skeletons with that bottle') 
    if "a pistol" in owned_items and bullets>1: 
     print('type "shoot" to try firing your pistol at the skeletons') 
    if "a small knife" in owned_items: 
     print('type "small knife" to use your small knife against the skeletons') 
    if "a kitchen knife" in owned_items: 
     print('Type "kitchen knife" to use your kitchen knife against the skeletons') 
    if "a blessed amulet" in owned_items: 
     print('Type "amulet" to use the blessed amulet to make this a fairer fight') 
    print('Type "hands" to just fight the skeletons with your body') 
    print('Type "run" to try and get away from the skeletons') 

Auch wenn ich weiß, dass ich 3 der Elemente in diese haben, wenn Aussagen, keine der Ausdrucke bis zeigen. Ich benutze ifs anstatt elifs und sonst noch, weil ich will, dass es den Druck für alles zeigt, was sie haben, nicht nur für eins. Zum Beispiel, wenn sie eine Glasflasche und ein Küchenmesser haben, möchte ich ihnen die Druckanweisungen für die Flasche und das Messer geben.

+0

Wenn dies Ihr vollständiger Code ist und der Einrückungsfehler unter 'def skeleton_choice()' ignoriert wird, rufen Sie die Funktion nicht auf, so dass sie nicht ausgeführt wird. – roganjosh

+1

aussehen wie Ihre Funktion hat eine falsche Absicht und es gibt keine Eingabe dafür wie 'def skeleton_choice (Eingabe)' – Bryan

+0

Ich weiß nicht, ob es etwas mit der Frage zu tun hat oder meine fehlgeschlagenen Kopieren und Einfügen, aber die ifs sind im Einklang mit der sk des Skeletts, nicht bei def. Es ist nichts falsch mit dem Eindruck, den ich sehe. –

Antwort

1

Sie haben die Funktion nicht irgendwo aufgerufen, deshalb funktioniert es nicht. Fügen Sie einfach:

skeleton_choice() 

Linie am Ende. Auch in der Zeile

ronald_items.remove(owned_items[0] 

fehlt Ihnen eine Klammer.

+0

die fehlende Klammer ist nur in der Frage, nicht das eigentliche Programm (ich war nicht vertrauen Kopie + einfügen nach dem Einzug Problem) und es stellt sich heraus, dass ich der dümmste Mensch aller Zeiten bin. Ich habe geändert, wie es das Skelett-Ding gemacht hat. Als ich mich entschieden habe, eine Funktion dafür zu definieren, habe ich vergessen, die Funktion tatsächlich auszuführen. Es funktioniert jetzt perfekt. –

0

Ihr Code funktioniert für mich. Das, nachdem ich den Aufruf zu skeleton_choice() hinzugefügt habe. Könnten Sie es einfach nicht nennen?