Пусть булево значение var будет указано в другом файле - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть два файла в моей текстовой игре. Назначаемая переменная будет keep_note.

Если вы введете «Take», логическое значение True будет присвоено have_note-001 но в следующем файле, если если есть have_note_001 == True, я получаю сообщение об ошибке have_note-001 не определено

If keep_note is == "Take":
    have_note_001 = True

Затем в следующем файле я хочу, чтобы это значение True переместилось в следующий файл.

If have_note_001 == True: print("This Value Is True")            
keep_paper = input("Do you want to Leave the piece of paper or Take it? > ")
if keep_paper == "Take":
     have_note_01 = True
if have_note_01 == True:
     print("You have chosen to keep the piece of paper")
     print("You leave the house with the note(" + note_001 + ")")

Это мой следующий файл

from intros.intro_001 import have_note_001
if have_note_01 == True:
    print("True")
elif have_note_01 == False:
    print("False")

В файле импорт работает. Я импортирую have_note_001. Это просто не передает значение True более. Кажется, он не запоминает, когда вы указываете это значение в первом файле, во втором

Как присвоить переменной значение, перенесенное в другой файл при импорте?

1 Ответ

0 голосов
/ 03 сентября 2018

Я не уверен, что то, что вы просите, в ваших интересах. Значения, хранящиеся в переменных, уже переносятся по умолчанию при импорте файла, из которого они получены. Тем не менее, этот тип спорадической архитектуры не считается хорошей практикой. Позвольте мне дать вам несколько отзывов о вашей программе. Сначала давайте дадим некоторую проверку ввода:

# start off setting keep_paper to nothing
keep_paper = ''

# As long as the player does not enter 'take' or 'leave' we are going to
# keep asking them to enter a proper response. 
while keep_paper not in ['take', 'leave']:
    # here we are going to "try" and ask the player for his choice
    try:
         # here we are getting input from the user with input(...)
         # then converting it into a string with str(...)
         # then converting it to lowercase with .lower()
         # all together str(input(...)).lower()
         keep_paper = str(input("Do you want to Leave the piece of paper or Take it? > ")).lower()
    # if the player entered an invalid response such as "53" we will go back 
    # to the beginning and ask for another response. 
    except ValueError:
        print("Sorry, I didn't understand that.")
        # ask the user to provide valid input
        continue

 if have_note_01 == True:
        print("True")
    elif have_note_01 == False:
        print("False")

Теперь давайте рассмотрим основную тему вашего вопроса. Имея значение, присвоенное переменной, переносится на импорт. Как я уже упоминал, это, как правило, не то, что вам нужно, поэтому большинство программ на Python имеют код, включающий:

if __name__ == "__main__":
    # do xyz....

Это гарантирует, что xyz будет запускаться только при запуске файла и не будет выполняться при импорте файла.

Для правильной оценки я рекомендую вам оформить заказ: https://github.com/phillipjohnson/text-adventure-tut/tree/master/adventuretutorial, чтение кода в этом проекте даст вам лучшее представление о том, как вы можете заняться собственным проектом. (Основы функций, классов и наследования)

...