首页 > 解决方案 > 变量已定义但未定义

问题描述

我正在完成一项作业,但问题是它说“重新启动”是未定义的,即使它在整个作业中都已定义。

我在本地的位置上有错误,所以我把它设为全局但现在它说“重新启动”是未定义的

def main():   

        global restart

        def changeMyList(myList):
            for i in range(len(myList)):
                myList[i] = myList[i].title()
            myList.sort()

        soccer_teams = ["Arsenal", "Chelsea", "Liverpool", "Barcelona", "Juventus", "Manchester City", "Atletico Madrid", "Borussia Dortmund"]

        team_length = len(soccer_teams)

        changeMyList(soccer_teams)

        print("|||||" + str(team_length) + " TEAMS" + "|||||")

        import random

        for team in soccer_teams:
            print(team)

        shuffle_user = input("Reshuffle? Y/N: ")
        if shuffle_user == 'y':
            random.shuffle(soccer_teams)
            print("List after first shuffle: ", soccer_teams)

            random.shuffle(soccer_teams)
            print("List after second shuffle: ", soccer_teams)
            restart = input("Run Again? Y/N: ").lower()

        if restart == 'y':
                        main()

        elif restart == 'n':
                        exit



main()

当我要求重新洗牌时按'n'时,它会说“名称'restart'未定义”第32行;第 40 行

标签: pythonpython-3.x

解决方案


这段代码中唯一restart定义的地方是:

restart = input("Run Again? Y/N: ").lower()

if shuffle_user == 'y':块中。因此,如果您对重新洗牌提示回答“否”,则不会为该restart变量分配任何值,并且读取它的尝试会产生一个NameError.


推荐阅读