Я пытаюсь найти способ доступа к функции confirmpath()
в функции pathcond()
. Пожалуйста помоги.Как получить доступ к вложенной функции глобально в Python 2.7
PS. Я только начал изучать Python около недели назад, поэтому любая помощь в отношении моей краткости кода и улучшения моих общих навыков будет действительно оценена.
Ниже приводится код мне нужна помощь с:
def name():
global call
call = raw_input("What is your name?\n")
print("Hello " + call)
def game():
global charchoose
charchoose = raw_input("What will be your character " + call + ": Mage, Wizard or Knight?\n")
print("You chose " + charchoose)
def path():
pathchoose = raw_input("You are a " + charchoose + " who was walking down Tranversia and came across a three-way road. Which on will you choose? Land, Sea or Clouds\n").lower()
def confirmpath():
global confirmpath
confirmpath = raw_input("You chose " + pathchoose + ". Are you sure you want to continue? Yes or No?\n").lower()
pathcond()
confirmpath()
def pathcond():
while confirmpath == "no":
path()
if confirmpath == "yes":
print("Good choice, you win!")
else:
print("Sorry, we didn't get that. Can you answer again, please?")
confirmpath()
def ask():
askplay = raw_input("Would you like to play a game? Yes or No?\n").lower()
if askplay == "yes":
game()
path()
elif askplay == "no":
print("That's alright. Thanks for hanging out, though. Bye!")
else:
print("Sorry, I didn't get that. Please try again.")
ask()
name()
ask()
UPDATE: я работал дальше по программе на некоторое время и в конечном итоге с версией, которая теперь без проблем. Я разместил его ниже, пожалуйста, помогите мне улучшить его, предложив, что я могу изменить/улучшить/удалить. Код выглядит следующим образом:
def Initiate():
global call
call = raw_input("What is your name?\n")
print("Hello " + call)
begin()
def game():
global charchoose
charchoose = raw_input("What will be your character " + call + ": Mage, Wizard or Knight?\n")
print("You chose " + charchoose)
path()
def path():
global pathchoose
pathchoose = raw_input("You are a " + charchoose + " who was walking down Tranversia and came across a three-way road. Which on will you choose? Land, Sea or Clouds\n").lower()
confirmpath()
def confirmpath():
global confirmpaths
confirmpaths = raw_input("You chose " + pathchoose + ". Are you sure you want to continue? Yes or No?\n").lower()
pathcond()
def pathcond():
while confirmpaths == "no":
path()
if confirmpaths == "yes":
print("Good choice, you win!")
else:
print("Sorry, we didn't get that. Can you answer again, please?")
confirmpath()
def begin():
askplay = raw_input("Would you like to play a game? Yes or No?\n").lower()
if askplay == "yes":
game()
elif askplay == "no":
print("That's alright. Thanks for hanging out, though. Bye!")
else:
print("Sorry, I didn't get that. Please try again.")
ask()
Initiate()
UPDATE 2: Функции код правильно, но все заканчивается печать следующую строку несколько раз
if confirmpaths == "yes":
print("Good choice, you win!")
Я заметил, что она выводит строку столько раз, сколько Я отвечаю на функцию confirmpath()
, независимо от моего ответа.
Почему вы определяете 'confirmpath()' inside 'path()' для начала? Просто определите его в глобальном масштабе. – chepner
Да, сделайте это вне функции path() – jonhid
Re Update 2: 'while confirmpaths' следует изменить на' if confirmpaths' –