python - Python 函数中不相关的变量更改
问题描述
我目前正在用python开发一个游戏,并做了一个功能来检查是否可以进行移动,但是每次我运行功能时,源变量“Xlist”都会改变。
功能:
def testIfPossible(key, Xlist):
print(Xlist, '\n')
print(move(key, Xlist), '\n')
print(Xlist, '\n')
if Xlist==move(key, Xlist):
return False
return True
我在这段代码中使用的另一个函数:
def move(key, lst):
if key=='down arrow':
for _ in range(lenY*lenX):
for y in range(lenY):
for x in range(lenX): # Basically just moves evrery element to the bottom
with suppress(IndexError):
if lst[y+1][x]==lst[y][x] and lst[y][x]!=0:
lst[y+1][x]=lst[y][x]*2; lst[y][x]=0
elif lst[y][x] != 0 and lst[y+1][x]==0:
lst[y+1][x]=lst[y][x]; lst[y][x]=0
del x, y
return lst
elif key=='up arrow':
for _ in range(lenY*lenX):
for y in range(lenY):
for x in range(lenX):
with suppress(IndexError):
if y!=0:
if lst[y-1][x]==lst[y][x] and lst[y][x]!=0:
lst[y-1][x]=lst[y][x]*2; lst[y][x]=0
elif lst[y][x] != 0 and lst[y-1][x]==0:
lst[y-1][x]=lst[y][x]; lst[y][x]=0
del x, y
return lst
elif key=='right arrow':
for _ in range(lenY*lenX):
for y in range(lenY):
for x in range(lenX):
with suppress(IndexError):
if lst[y][x+1]==lst[y][x] and lst[y][x]!=0:
lst[y][x+1]=lst[y][x]*2; lst[y][x]=0
elif lst[y][x] != 0 and lst[y][x+1]==0:
lst[y][x+1]=lst[y][x]; lst[y][x]=0
del x, y
return lst
elif key=='left arrow':
for _ in range(lenY*lenX):
for y in range(lenY):
for x in range(lenX):
with suppress(IndexError):
if x!=0:
if lst[y][x-1]==lst[y][x] and lst[y][x]!=0:
lst[y][x-1]=lst[y][x]*2; lst[y][x]=0
elif lst[y][x] != 0 and lst[y][x-1]==0:
lst[y][x-1]=lst[y][x]; lst[y][x]=0
del x, y
return lst
else:
print('No match for: ',key)
return lst
Xlist 的列表语法:
例如
[[0, 8, 0], [4, 0, 0], [2, 0, 4]]
我做错了什么?感谢安万斯!
(我没有把整个代码放在这个问题中,因为它很长而且stackoverflow并没有真正接受它)
解决方案
推荐阅读
- javascript - 在适合时间的时间线图上放置不同的事件
- reactjs - 反应引导卡不会显示
- xss - elm中的XSS攻击块有多严重?
- apache-kafka - kafka java客户端是否提供进程级(系统变量)属性支持?
- roblox - 将 gui 元素放在 roblox 中的拇指杆下方
- javascript - 在 TypeScript 中使用 NextJS 设置 Jest + React 测试库 -- 设置 upp jest.config.js 时出错
- azure - 应用迁移脚本不起作用,没有要部署的文件
- database - 如何授予postgres中所有数据库的所有权限
- spring - Spring 4.3.25.RELEASE OAuth2 配置问题
- entity-framework - 实体框架 Linq2Db 翻译