2016-09-27 10 views
-4

Контекст Попытка построить что-то очень маленькое, чтобы развить мое ОЧЕНЬ ограниченное знание Питона.Python 3.x - быстрое решение для функции?

Что такое код? Представьте, что вы в игре и подходите, чтобы поговорить с персонажем NPC, чтобы что-то купить. Это взаимодействие, используя словари как «инвентарь».

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

UserMoney = 500 

NPC = { 
    "Cotton": 20, 
    "Wool": 20, 
    "Silk": 20, 
} 

Price_List = { 
    "Cotton": 5, 
    "Wool": 10, 
    "Silk": 20, 
} 

User = { 
    "Wool": 0, 
    "Crystal": 0, 
    "Gemstone": 0, 
} 
def hi_npc(): 
    print 'Hi, my name is NPC' 
    print 'I see you have ' + str(UserMoney) + ' coins' 
    print 'What would like to buy?' 
    print NPC 
    product = raw_input() 

    if product in NPC: 
     print 'How many would you like?' 
     quantity = input() 
     NPC[product] = NPC[product]-quantity 
     User[product] = User[product]+quantity 
     UserMoney = UserMoney - (Price_List[product]*quantity) 
     print 
     print 'NPC:' + str(NPC) 
     print 'User:' + str(User) 
     print 
     print 'You have %s coins left to spend' % UserMoney 
    else: 
     print "Sorry I don't have that item" 
     hi_npc() 
+2

Возможный дубликат [Как написать функцию в Python] (HTTP: // StackOverflow .com/questions/37727913/how-do-i-write-a-function-in-python) – JETM

+1

Отложите все немного, поместите 'def my_function_name():' сверху. Что вы пробовали, что не сработало? – deceze

+0

Я читал это и пытался работать с ним, но все же возникают ошибки или проблемы. Просто добавил, как я думаю, что он должен работать с кодом, но, по-видимому, это не так. –

ответ

1

Несомненно. Вы определяете функцию в python с ключевым словом def с аргументами в скобках. У нашей первой функции ее не будет.

def hi_npc(): 
    print('Hi, my name is NPC') 

Если вы хотите, чтобы оживить вещи немного, мы можем передать нашу функцию имя:

def hi_npc(name): 
    print('Hi, my name is {}'.format(name)) 
+0

Добавлен новый код, следующий за вашим более простым решением, но при этом появляется пустой экран терминала, никаких сообщений об ошибках. Это неправильно? –

+0

@LawrenceBall, нет, он должен писать эти сообщения на стандартный вывод. Не могли бы вы отправить код того, как вы вызываете функцию? –

+0

Я просто использовал hi_npc() для вызова функции. Я думаю, что это моя проблема –