python - Python:列表索引行为异常,返回新生成的字符串而不是项目
问题描述
我一直在开发一个 python 游戏,其目标是将x//2
Ts 从左移到右,将x//2
Fs 从右移到左。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!")
解决方案
推荐阅读
- node.js - 在 Alexa 输出之前从 DynamoDB 返回 Promise
- javascript - get refs antd组件如何选择antd的值?
- sqoop - 使用 sqoop 只更新 mysql 表中的一列
- javascript - 如何使用 Javascript 和 Node js 从表单传递数组
- javascript - JS 和 HTML5 入门
- sql-server - MARS TDS 标头包含错误 - ASP.NET Core + EF Core 2.1.4 + Azure SQL Server
- android - 如何在 Fragment 中覆盖 OnItemSelected 方法
- java - 本地开发最佳实践:Java、Docker、Kubernetes
- sitemap.xml - 错误:自定义站点地图结构中的名称空间不正确
- ruby - 尝试在厨师食谱中包含模块时,Ruby 返回未初始化的常量错误