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),我希望它有两个可能 移动的选择。如果用户说他想将其移动到(1,0)或(0,0),我想要 程序用新的位置打印出一个新的嵌套列表。 如果用户说(0,4)我希望程序打印“不是有效选项。请再试一次。”..然后再试一次..
实施例: 如果用户选择数字6并想将其移动到(1,0),我想要该程序 打印这个:
def main():
list1 =[1,2,3,4,5]
list2 =[6,0,0,0,0]
list3 =[0,7,8,9,10]
list=[list1,list2,list3]
for i in list:
print(i)
main()
我该怎么做?
编辑:
我不知道如何让不同的数字移动到不同的位置。数字7一次只能垂直移动一个坐标。数字6一次只能垂直移动一个或两个坐标。
答案 0 :(得分:0)
因此,您希望用户通过坐标从矩阵中选择一个元素,首先用户选择一个坐标,然后选择另一个仅在与第一个坐标相邻时才有效的坐标。这对我有用,虽然您应该事先检查您的坐标系统是否清晰(也许您可以查看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()