首页 > 解决方案 > Python:列表索引行为异常,返回新生成的字符串而不是项目

问题描述

我一直在开发一个 python 游戏,其目标是将x//2Ts 从左移到右,将x//2Fs 从右移到左。x是用户输入的奇数。

-两组之间有一个破折号。用户应该输入一个数字,n 程序应该将 F 或 T 移动n到空白处,即带有破折号的地方。Ts 只能向右移动 1 或 2 个空格,Fs 只能向左移动 1 或 2 个空格。

如果 F 或 T 可以移动到的 2 个空间都被占用,程序将打印“Invalid entry!” 并将n再次要求。现在问题所在的地方是撤消选项。

游戏应该能够撤消到开始。我创建了列表record。现在,当我添加获取项目的部分时,它创建了一个新字符串(或其他东西)。我将程序更改为打印record,但它没有任何问题。有人知道发生了什么吗?我的代码在下面。

boardsize = int(input())
board = "T"*(boardsize//2)+"-"+"F"*(boardsize//2)
finish = "F"*(boardsize//2)+"-"+"T"*(boardsize//2)
record = [board]
moves = 0
shouldpass = False

print("\n"+board, end = "")

while board != finish:
    move = int(input())-1
    if move == -1 and moves>0:
        board = record[moves-1]
        moves -= 2
        shouldpass = True
    while (move<0 or move>=boardsize) or (board[move]=="T" and move+1!=board.find("-") and move+2!=board.find("-")) or (board[move]=="F" and move-1!=board.find("-") and move-2!=board.find("-")) or (board[move]=="-"):
        if shouldpass:
            break
        move = int(input("\nInvalid entry!\n"))-1

    moves+=1
    board = list(board)
    board[board.index("-")] = board[move]
    board[move] = "-"
    board = "".join(board)
    print("\n")
    print(board)
    print("Number of moves:\n"+str(moves))
    record.append(board)

print("\nYou win!")

标签: pythonpython-3.9

解决方案


推荐阅读