2015-12-15 3 views
0

Я пытаюсь создать код для запуска Башни Ханоя. На данный момент я все еще пишу на бумаге и еще не написал много кода. Однако я застрял в том, что делать, пытаясь создать проверку, чтобы увидеть, перемещается ли элемент больше или меньше последнего элемента в стеке/массиве, к которому он перемещается. Любое предложение было бы очень полезно. Также я использую Python 3.5.0.Сравните последний элемент в массиве

Эта функция должна принимать ходы от пользователя и проверять, действительно ли действуют действия . Например, чтобы проверить длину угадывания, а также номер , а также проверить, чтобы элемент был меньше последнего элемента в стеке, к которому он перемещается. Если он пройдет все это, он должен вернуть массив и добавить его в стек.

if frompeg == 'c': 
    if c != []: 
     temp = c.pop() 
    else: 
     print('Error Popping c') 
     return() 

if topeg == 'c': 
    if c == []: 
     c.append(temp) 
    elif temp < c[-1]: 
     c.append(temp) 

    else: 
     print('Error') 

ответ

0
if frompeg == 'c': 
     if c != []: 
      temp = c.pop() 
     else: 
      print('Error Popping c') 
      return() 

    if topeg == 'c': 
     if c == []: 
      c.append(temp) 
     elif temp < c[-1]: 
      c.append(temp) 

     else: 
      print('Error') 


print(a,b,c) 
guess2('a','b') 
print(a,b,c) 
-1

А = пол (RAND (100, 100) * 1000); contains5 = any (A (:) == 5); попробовать что-то вроде этого

+0

Я не понимаю, что вы здесь делаете с этим. У меня три стека: a = [4,5] b = [2,3] c = [1], но я хочу сравнить верхний элемент из стека a (так 4) с последним элементом, который был введен в стек b, например – Brigzy97

1

Если вы используете list s¹ как стек и append() толкать значения в стек и pop() для извлечения значения из стека, то вы должны получить доступ к последнему элементу list, чтобы получить значение на верхней части стека. Это можно сделать с помощью отрицательных значений индекса:

stack = [3, 2, 1] 
print(stack[-1]) # Prints: 1 

Необходимо проверить, пустые ли списки перед доступом к значениям. Стек источник не должен быть пустым, если целевой стек пуст ход будет хорошо:

def check_tos_values(source, target): 
    if not source: 
     raise ValueError('source stack is empty') 
    return not target or source[-1] < target[-1] 

Инкапсуляция списки в Stack класса с методами, как is_empty() и top_of_stack() бы привести к более читаемый код.

def check_tos_values(source, target): 
    if source.is_empty(): 
     raise ValueError('source stack is empty') 
    return target.is_empty() or source.top_of_stack() < target.top_of_stack() 

¹ Пожалуйста, используйте правильный термин, поскольку есть также типы массивов в Python (array модуль в стандартной библиотеке и типы массива Numpy в), которые отличаются от типа list.

+0

Спасибо за это, однако я знал, как получить последний элемент, я просто не знаю, как проверить, чтобы элемент был меньше последнего элемента в стеке, который он перемещает до – Brigzy97

+0

Ну например, с любым другим значением, вы можете использовать операторы сравнения, такие как '<' or '>'. Я обновил ответ с помощью функции, которая выполняет эту проверку. – BlackJack