在我定义的名为id_choice
的函数中调用变量movie_choice
后,我试图执行该变量。
函数的外观如下:
def movie_choice():
user_input = raw_input("Would you like to serch your movie by IMDB ID or by\ title? ").upper()
if user_input == "ID":
id_choice = raw_input("Enter imdb ID: ")
print("Serching . . .")
return id_choice
elif user_input == "TITLE":
title = raw_input("Enter movie title: ")
print("Serching . . .")
return title
elif user_input == "EXIT":
sys.exit
else:
print("Please enter a valid choice. ")
return movie_choice()
api_key = '1234'
url = "http://www.omdbapi.com/?%s&%s" % (id_choice, api_key)
print (url)
在定义了此功能之后,例如,如果我尝试使用print (id_choice)
,则会因为未定义id_choice
而收到错误消息。我该如何解决这个问题?
我是编码的新手,所以很抱歉,对于某些人来说,我的问题的答案是显而易见的。 感谢并感谢您的帮助!
答案 0 :(得分:0)
如果要在函数外部调用“ id_choice”,则
您需要在函数的外部上对其进行定义...
此概念称为范围。继续阅读。由于变量“ id_choice”是在“ movie_choice”函数中定义的,因此只能在该函数中访问它。在下面的代码中,我已经在“ movie_choice”函数之前定义了它。您的代码现在应该可以工作了。
还要确保您正确缩进。这些if语句应缩进函数的内部:
id_choice = ''
def movie_choice():
title = ''
user_input = raw_input("Would you like to serch your movie by IMDB ID or by\ title? ").upper()
if user_input == "ID":
id_choice = raw_input("Enter imdb ID: ")
print("Serching . . .")
return id_choice
elif user_input == "TITLE":
title = raw_input("Enter movie title: ")
print("Serching . . .")
return title
elif user_input == "EXIT":
sys.exit
else:
print("Please enter a valid choice. ")
return movie_choice()
api_key = '1234'
url = "http://www.omdbapi.com/?%s&%s" % (id_choice, api_key)
print (url)
另外,
您需要
如果有可能永远不会定义id_choice,那么您将无法尝试打印未定义的变量。但是,通过在条件(或函数)外部进行定义,可以确保这些变量始终具有默认值。
目前,您的网址有可能不正确,因为如果用户未输入“ ID”作为用户输入怎么办?考虑重组代码路径来满足这种情况。
最后,请阅读范围和标识。
答案 1 :(得分:0)
需要在访问变量的范围内分配变量是正确的,但这不是问题。如果我理解正确,我只是认为您的缩进不正确,以及您真正想要的是什么
def movie_choice():
user_input = raw_input("Would you like to serch your movie by IMDB ID or by\ title? ").upper()
if user_input == "ID":
id_choice = raw_input("Enter imdb ID: ")
print("Serching . . .")
return id_choice
elif user_input == "TITLE":
title = raw_input("Enter movie title: ")
print("Serching . . .")
return title
elif user_input == "EXIT":
sys.exit
else:
print("Please enter a valid choice. ")
return movie_choice()
movie_selection = movie_choice()
print(movie_selection)
注意:请记住,此方法仍然不是很好,因为像abarnert所说的那样,并非所有代码路径都导致正确的返回值(EXIT的{user_input
}只会导致退出程序。)
希望这会有所帮助。