2015-05-01 2 views
0

Я сделать игру на основе текста и Im пытается напечатать случайный враг и он печатает и того же врага каждый раз, когда в выходной переменнойпечать случайный элемент списка строк всегда дает ту же строку

import random 

monsters = [("Goblin", 1), ("Troll", 3), ("Bear", 2), ("Giant Spider", 1), ("Bandit", 1), ("Wolf", 1), ("Homeless Man", 1), ("Goblin Chief", 3)] 

def spawnMonster(): 
    enemy, DMG = random.choice(monsters) 
    print(enemy) 
    output = "A " + enemy + " comes out of the bushes." 

spawnMonster() 
print(output) 
+1

Возможно, «случайный» любит этого врага. На серьезной ноте это случайное значение, и такое же значение может повторяться снова и снова –

+0

@BhargavRao: http://dilbert.com/strip/2001-10-25 –

+0

@MarkRansom https://xkcd.com/221/ –

ответ

1

Похоже, проблема с вашей программой не имеет никакого отношения к случайности. Это значит, что вы не возвращаете значение output из функции на верхний уровень, так что все, что у вас было, лежало в output раньше (вероятно, из предыдущего запуска вашей старой программы, которую вы делаете в том же интерактивном сеансе) никогда меняются.

Ваша старая версия используется global output. Это работает, хотя это немного неуклюже.

Лучшим решением будет return значение. Например:

def spawnMonster(): 
    enemy, DMG = random.choice(monsters) 
    print(enemy) 
    output = "A " + enemy + " comes out of the bushes." 
    return output 

print(spawnMonster()) 

Но если вы хотите, чтобы это было глобальным по какой-то причине, вы можете вернуться к этому.

Смежные вопросы