Python funktion 中不相关的变量变化

问题描述

我目前正在用 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,[2,4]]

我做错了什么? 感谢安万斯!

(我没有把整个代码在这个问题中,因为它很长而且stackoverflow并没有真正接受它)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)