在函数中执行python变量

时间:2018-07-24 21:48:50

标签: python

在我定义的名为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而收到错误消息。我该如何解决这个问题?

我是编码的新手,所以很抱歉,对于某些人来说,我的问题的答案是显而易见的。 感谢并感谢您的帮助!

2 个答案:

答案 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)

另外, 您需要 OUTSIDE 个if语句来定义其他变量。

如果有可能永远不会定义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}只会导致退出程序。)

希望这会有所帮助。