2014-09-11 4 views
0

Я использую PyCharm, и когда я получаю сообщение об ошибке, он отпечатывает эту аккуратную маленькую вещь Traceback.Traceback функции Python: это просто показ пути, который я взял, или моя программа продолжает запускать «старые» функции?

В этом случае:

Traceback (most recent call last): 
    File "C:/Users/Chris/PycharmProjects/Learning Project/tgrooms.py", line 127, in <module> 
    blueRoom() 
    File "C:/Users/Chris/PycharmProjects/Learning Project/tgrooms.py", line 70, in blueRoom 
    blueRoom() 
    File "C:/Users/Chris/PycharmProjects/Learning Project/tgrooms.py", line 67, in blueRoom 
    redRoom() 
    File "C:/Users/Chris/PycharmProjects/Learning Project/tgrooms.py", line 38, in redRoom 
    choice = int(raw_input("> ")) 
ValueError: invalid literal for int() with base 10: 'yes' 

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

Вот код:

def blueRoom(): 
    print "This is a very, very blue room. There is a door on the other side." 
    print "Do you walk through?" 

    while True: 
     print "inwhile" 
     choice = raw_input("> ") 
     if choice == "yes": 
      blueRoomComplete = True 
      print "You walk safely through the door into the next room." 
      room = random.choice(rooms) 
      print "%r" % room 
      if room == "gold_room": 
       print "goldroom" 
       gold_room() 
      elif room == "redRoom": 
       print "redroom" 
       redRoom() 
      else: 
       print "blueroom" 
       blueRoom() 
       break 
     else: 
      exit(0) 

Так вот мой вопрос: Когда программа переходит в другую функцию (т.е. RedRoom()), является то, что в то время как цикл продолжается и занимая ресурсы?

Я попытался выполнить поиск по аналогичному вопросу, но не смог найти ничего подходящего. Спасибо всем! Llurendt

+1

Не совсем уверен, что вы просите. Когда вы вызываете 'redRoom()', управление переходит к 'redRoom' и не возвращается к вашему циклу while до тех пор, пока не будет выполнено' redRoom'. Это не похоже на одновременное выполнение нескольких действий. – BrenBarn

+0

Благодарим за редактирование! Это то, о чем я прошу. Я просто хотел убедиться, что цикл while остановлен, когда вызывается redRoom(). Теперь я буду размещать заявления о прерывании, когда вы указали, что он будет делать резервную копию после redRoom(), хотя, ха-ха. Спасибо! – Llurendt

+0

Так еще есть проблема? –

ответ

0

Не совсем уверен, что вы просите. Когда вы вызываете redRoom(), управление переходит к redRoom и не возвращается в цикл while до тех пор, пока не будет выполнена redRoom. Это не похоже на одновременное выполнение нескольких действий. - BrenBarn Sep 11 '14 at 3:04

Как указано в комментариях, когда вызывается redRoom(), в настоящее время ничего не запускается из программы, и ресурсы, используемые циклом while, освобождаются.