2013-11-18 3 views
0
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() 

У меня есть этот вложенный список. Я хочу, чтобы программа спросила у пользователя, какой номер он хочет переместить, и где.Python - Переместить элементы во вложенный список

Я хочу сделать определение каждого числа. Каждое число может перемещаться только на некоторые допустимые позиции. Как и 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() 

Как мне это сделать?

Edit:

Я не знаю, как сделать разные номера перейти на разные позиции. Число 7 может перемещать только одну вертикальную координату за раз. Число 6 может перемещать только одну или две координаты по вертикали за раз.

+1

Почему '(0,4)' недействительный вариант? –

+0

Он хочет, чтобы списки заказали. Следовательно, параметр * недействителен *. –

+0

Sudipta Chatterjee: Это был просто пример. Но, как я сказал, каждый номер может переместиться только на некоторые действительные позиции. Я хочу, чтобы 6 мог перемещаться в (1,0) и (0,0) и ничего больше. – user2996623

ответ

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() 
Смежные вопросы