Python:名称错误:未定义全局名称“lol”

2024-06-30 08:14:13 发布

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

我知道有很多这样的东西,但我已经找了一个小时了,什么也没用。在

          ship2X=eg.passwordbox("Player " + str(playerNumber) + " input the x co-ordinate for your SECOND ship ")
          ship2Y=eg.passwordbox("Player " + str(playerNumber) + " input the y co-ordinate for your SECOND ship ")

          return[ship2X, ship2Y]

上面的代码在函数中。在

^{pr2}$

。。。。此处检查错误。。。。在

if int(shotX) == int(ship[0]) and int(shotY) == int(ship[1]):
        board[5 - int(shotY)][int(shotX) - 1] = "X"
        eg.msgbox("Nice shot! You hit ship 1")
        hit = True

    elif int(shotX) == int(ship2[0]) and int(shotY) == int(ship2[1]):
        board[5 - int(shotY)][int(shotX) - 1] = "X"
        eg.msgbox("Nice shot! You hit ship 2")
        hit = True


    elif board[5 - int(shotY)][int(shotX) - 1] == "o":
        eg.msgbox("You already tried that shot! D'oh!")

    else:
        board[5 - int(shotY)][int(shotX) - 1] = "o"
        eg.msgbox("Unlucky - you missed!")

是的,在那之前我有个假设。在

最后我要说的是:

hit = False
winner = "0"
p1 = 0
p2 = 0

while hit == False:
    hit = haveShot("1", player2Ship, player2Ship, player1Board)

    if hit:
        p1 = p1+1

    hit = haveShot("2", player1Ship, player1Ship, player2Board)

    if hit:
        p2 = p2+2

我是从第一次进入飞船的时候复制的所以我很困惑为什么会这样。。。在

有什么想法吗?在

如果你想看到完整的代码,你可以在:http://pastebin.com/TAyHtnTs

我的错误是,如果我输入了第二艘船的正确坐标,它会说我漏掉了,但是如果我为第一艘船输入了正确的坐标,它就会说我撞到它了。在

感谢您的帮助:)


Tags: boardyouifintegp2shotp1
2条回答

我没有足够的声誉来评论,或者我会的,但是。。。在

你没有定义“lol”,你定义了“lolX”和“lolY”,它们是独立的变量。在

如果你想定义一个列表或字典里面有值,你不能只写lolX或lolY,你必须这样做(我在这里使用字典,因为它似乎是你想要的):

lol={}

哈哈[X]=例如密码箱(“Player”+str(playerNumber)+“输入第二艘船的x坐标”)

然后可以通过lol[X]访问lol中的值。在

您定义了单独的变量,而不是定义该变量的特定值。在

有几件事:

81号线

不能有两个后续的return语句。第一个将退出函数。如果要返回两组坐标,则返回嵌套列表:

return [[x1, y1], [x2, y2]]

161号线

然后使用解包来获得:

^{pr2}$

171/176号线

确保你要经过的两艘船是不同的(目前它们是相同的):

hit = haveShot("1", player2Ship, player2Ship, player1Board)

hit = haveShot("1", p2ship1, p2ship2, player1Board)

170号线

while hit == False条件意味着游戏将在玩家1的飞船被击中后立即退出。使用另一个变量检查游戏是否结束,例如:

while player1ShipCount > 0 and player2ShipCount > 0:
    #play game

并跟踪每个玩家的可用飞船。在

相关问题 更多 >