如何自动创建变量?

2024-04-26 04:50:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始与Python和我目前正在制作一个蛇和梯子游戏。 这是我的代码:

    nameList = []
    def players_name():
        x = 0
        input ("""-Press enter to start inputting players' name.
-Press enter after each name inputed to confirm the name to players list.
-After last name inputed, press enter again without any input to finish.""")
        name = input ("Input players' name:")
        while name != "" or len (nameList) <= 1:
            x = x + 1
            if name in nameList:
                print (name,"is already in list, please input a different name.")
                name = input ("")
            elif name =="" and len (nameList) <= 1:
                print ("A minimum of 2 players are require to start the game.")
                name = input ("")
            else:
                nameList.append(name)
                exec("{} = {}".format(name, "1"))
                numList.append("{0}".format (x))
                name = input ("")
        nameList.sort()
        numList.sort()
        print ("There are",len (nameList),"players inputed in your players list!")
        print ("Your players list:",nameList,"\n")

我得到的是:

^{pr2}$

我想弄清楚为什么它没有把“Alvin”声明为一个变量,或者为什么我不能把它打印出来。 我不确定我是否犯了一个愚蠢的错误。在


Tags: thetonameininputlenstartare
3条回答

Keep your data out of your variable names;不要在这里使用exec,而是将你的播放器存储在字典中!在

players = {}

name = input ("Input players' name:")
while name len(players) < 2:
    x = x + 1

    if name in players:
        print (name,"is already in list, please input a different name.")
        name = input ("")
    elif not name and len(players) < 2:
        print ("A minimum of 2 players are require to start the game.")
        name = input ("")
    else:
        players[name] = 1
        numList.append(str(x))
        name = input ("")

nameList = sorted(players.keys())
print ("There are {} players inputed in your players list!".format(len(nameList)))
print ("Your players list:", nameList)

您的代码只将1分配给每个名字;我在这里复制了这一点,在字典中为每个玩家的名字指定了1。你也可以为每个玩家的名字存储其他东西,包括你自己的自定义类的实例。在

这是错误的,你不应该那样做。但如果你有你的理由。。。在

修改exec而不是exec(vor局部作用域变量)或{}(对于全局作用域变量)。在

例如:

locals()["a"] = 5
globals()[<value from user>] = 1

Alvin是列表中的一个元素,如下所示:

 nameList = [`Alvin`, `George` ...]

您应该像这样访问列表中的元素:

^{pr2}$

相关问题 更多 >