входная переменная внутри функции, выход за пределы функции - PullRequest
0 голосов
/ 15 декабря 2018

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

   
player_name = ("")

def path_2():
    print("I found you lying in the hallway.")
    print("Maybe I should have left you there...")
    player_name = input("What is your name? : ")
    return player_name

def path_1():
    print("It's a pleasure to meet you.")
    print ("My name is Azazel. I am the warden of this place.")
    print ("I found you lying in the hallway,")
    print ("bleeding profusely from you head there.")
    print ("")
    player_name = input("What is your name? : ")
    return player_name

def quest():
    print(("This is a long story ")+str(player_name)+(" you'll have to be patient."))
    enter()

Ответы [ 3 ]

0 голосов
/ 15 декабря 2018

используйте глобальное ключевое слово перед использованием той же переменной в функции

0 голосов
/ 15 декабря 2018

У вас здесь есть пара понятий, которые вам нужно уточнить, чтобы сделать эту работу.Первый - это scope переменной.Второе - это параметры и возвращаемые значения функций.Вкратце (вы должны исследовать это подробнее), переменные, которые вы создаете в функции, не видны вне этой функции.Если вы return значение, то вы можете поймать его из местоположения вызова.Использование глобальных переменных возможно, но обычно это не лучший подход.Рассмотрим:

def introduce():
  player_name = input("tell me your name: ")
  print("welcome, {}".format(player_name))
  return player_name
def creepy_dialogue(p_name, item):
  print("What are you doing with that {}, {}?".format(item, p_name))

# start the story and get name
name = introduce()

weapon = "knife"
creepy_dialogue(name, weapon)
0 голосов
/ 15 декабря 2018

Когда вы делаете player_name = input ("Как вас зовут?:"), Вы переопределяете player_name в области действия вашей функции, поэтому она больше не указывает на глобальную переменную, что вы можете сделатьis:

def path_2():
  print("I found you lying in the hallway.")
  print("Maybe I should have left you there...")
  global player_name 
  player_name = input("What is your name? : ")

Обратите внимание, что вам не нужно возвращать имя игрока, потому что вы изменяете глобальную переменную.

...