Python移动嵌套lis中的元素

2024-04-26 14:02:26 发布

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

def main():
    list1 =[1,2,3,4,5]
    list2 =[0,0,0,0,0]
    list3 =[6,7,8,9,10]

    list=[list1,list2,list3]

    for i in list:
      print(i)

main()

我有一个嵌套列表。 我想让程序询问用户他/她想移动哪个号码, 去哪里。在

我想给每个数字下个定义。 每个数字只能移动到某些有效位置。 像6,它有坐标(2,0),我希望它有两个可能 搬家的选择。如果用户想移动它(0,1),或者说0,0 打印出具有新位置的新嵌套列表的程序。 如果用户说(0,4),我希望程序打印“不是一个有效的选项。请再试一次。”。。然后再试一次。。在

示例: 如果用户选择数字6并希望将其移动到(1,0),我需要程序 要打印此文件:

^{pr2}$

我该怎么做?在

编辑:

我不知道如何让不同的数字移动到不同的位置。数字7一次只能垂直移动一个坐标。数字6一次只能垂直移动一个或两个坐标。在


Tags: 用户in程序列表for定义maindef
1条回答
网友
1楼 · 发布于 2024-04-26 14:02:26

所以你希望用户通过坐标从矩阵中选择一个元素,首先用户选择一个坐标,然后选择另一个只有在它与第一个相邻时才有效的坐标。这对我很有用,不过你应该事先检查一下你的坐标系对用户来说是否清晰(也许你可以看看pprint或其他工具来打印列表,比如矩阵)。在

def main():
    list1 =[1,2,3,4,5]
    list2 =[0,0,0,0,0]
    list3 =[6,7,8,9,10]
    list2d = [list1, list2, list3]

    print(list2d)
    trade(list2d)

def trade(list2d):
    pos1 = raw_input('Enter the coordinates of the number you want to move.')
    pos1 = map(int,pos1)
    pos2 = raw_input('Enter the coordinates of the new position.')
    pos2 = map(int,pos2)
    if (abs(pos1[0]-pos2[0]) == 1 and abs(pos1[1]-pos2[2]) == 0) or (abs(pos1[0]-pos2[0]) == 0 and abs(pos1[1]-pos2[1]) == 1):
        firstval = list2d[pos1[0]][pos1[1]]
        secondval = list2d[pos2[0]][pos2[1]]
        list2d[pos1[0]][pos1[1]] = secondval
        list2d[pos2[0]][pos2[1]] = firstval
        print(list2d)
        trade(list2d)
    else:
        print("Not a valid option. Please try again.")
        trade(list2d)


main()

相关问题 更多 >