2016-05-05 2 views
0

alors j'ai travaillé sur un jeu de donjon basé sur les entrées en python qui est assez rudimentaire. Je voulais mettre un jet de dé dans le jeu et décider si un joueur va mourir ou vivre sur un chemin. Cependant, mon instruction if ne répondra pas correctement au rouleau du générateur de nombres que j'ai dans le programme, il imprimera le numéro et continuera si la condition a été remplie ou non. Comment puis-je résoudre ce problème et pourquoi cela se produit-il?python: si l'instruction ne répond pas correctement à la valeur du lancer de dés

if direction == 1: 
    import random 
    from random import * 
num = 6 

def d6(num): 
rolls = [] 
for x in range(num): 
    rolls.append(randint(1,6)) 
return rolls 

rolls = d6(1) 
print rolls 

if rolls is 3: 
    print "you fall in a hole!\n" 
    print ' OH DEAR YOU ARE DEAD!' 
    raise SystemExit 
elif rolls is not 3: 
    print "you are back at the start which way will you go?\n" 

path3 =float(input("forward, or right?")) 
+0

Vous avez imprimé des 'rouleaux', donc je suis sûr que vous avez vu de quoi il s'agit. Pourquoi penses-tu que non seulement ça va être égal à '3', mais que j'ai la même identité que' 3'? – TigerhawkT3

+0

Quelques articles liés: http://stackoverflow.com/questions/36898917/in-python-when-are-two-objects-the-same/36899294, http://stackoverflow.com/questions/14247373/python- aucune-comparaison-devrait-je-utilise-est-ou/14247383 # 14247383, http://stackoverflow.com/questions/14247373/python-none-comparison-should-i-use-is-or/14247383#14247383 – mgilson

+0

Pourquoi importez-vous conditionnellement 'random'? 'rolls' ressemble à une liste, que voulez-vous sortir de' if a_list is 3'? Enfin, il serait probablement utile si vous avez nettoyé l'indentation. Il semble surtout OK sauf pour les choses dans 'd6'. Est-ce exact? – mgilson

Répondre

-1

is et is not sont réservés pour des comparaisons spéciales en python. Vous avez besoin de == et !=. Aussi vous pouvez le changer en un simple if/else au lieu de if/elif sans autre chose. En outre, il semble que votre fonction d6 renvoie une liste au lieu d'un seul numéro. Essayez d'ajuster cela pour renvoyer un seul nombre à la place:

from random import randint 

def d6(): 
    return randint(1,6) 

rolls = d6() 
if rolls == 3: 
    print "you fall in a hole!\n" 
    print ' OH DEAR YOU ARE DEAD!' 
    raise SystemExit 
else: 
    print "you are back at the start which way will you go?\n"