2016-12-03 2 views
0

Я делаю программу python, которая является приключенческой игрой через дом с привидениями. Одна из больших вещей в этом списке - owned_items. Это получает предметы, которые представляются строками типа «ящик совпадений» или «факел», прилагаемый к нему, когда они находят их в доме или даются им в начале random.choice. Иногда, когда им предоставляется ситуация, какой выбор они дают, зависит от того, есть ли у них определенный предмет или нет.Python: печать в том случае, если операторы не работают

Мой код:

#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') 

Даже когда я знаю, что у меня есть 3 из пунктов в них, если заявления, ни один из отпечатков не показывается. Я использую ifs, а не elifs и else, потому что я хочу, чтобы он показывал печать для всего, что у них есть, а не только для одного. Например, если у них есть стеклянная бутылка и кухонный нож, я хочу, чтобы он дал им распечатки для бутылки и ножа.

+0

Если это ваш полный код и игнорирование ошибки отступа в 'def skeleton_choice()', вы не вызываете функцию, чтобы она не запускалась. – roganjosh

+1

выглядят так, как будто ваша функция имеет неправильное намерение и нет ввода для нее, как 'def skeleton_choice (input)' – Bryan

+0

Я не знаю, связано ли это с вопросом или с моей неудачной копией и вставкой, но ifs в соответствии с sk скелета, а не в def. Нет ничего плохого в отступе, которое я вижу. –

ответ

1

Вы не вызывали функцию нигде, поэтому она не работает. Просто добавьте:

skeleton_choice() 

линии в конце. Также в строке

ronald_items.remove(owned_items[0] 

у вас отсутствуют круглые скобки.

+0

недостающая скобка касается только вопроса, а не фактической программы (я не доверял копированию + вставке после проблемы с отступом), и оказывается, что я самый глупый человек. Я изменил, как это сделал скелет. Когда я решил определить для нее функцию, я забыл, что функция запускается. Теперь он отлично работает. –

0

Ваш код работает для меня. Это, после того, как я добавил вызов skeleton_choice(). Может быть, вы просто не называете это?

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