Найти - Пользователи
Полная версия: Поиск - задача
Начало » Центр помощи » Поиск - задача
1
sfunlimit
Последовательность состоит из натуральных чисел и завершается числом 0. Определите, сколько элементов этой последовательности больше предыдущего элемента.

Формат ввода
Вводится последовательность целых чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит как признак ее окончания).

Формат вывода
Выведите ответ на задачу.
Sample Input:

1
7
9
0
Sample Output:

2

Сам я так и не смог осилить. Нагуглил ответ на Питошке.
Но так и не понял как программа рабоатет.

prev = int(input()) - ввод первой последовательности
answer = 0 - переменная равная 0
while prev != 0: - работать до тех пор пока не введут 0
next = int(input()) ввод данных второй последовательности
if next != 0 and prev < next: - если некст не равно нолю и второе меньше первого
answer += 1 переменная = переменная + 1
prev = next вторая = первая
print(answer)

Не пойму каким образом программа понимает что до него вводили 2 раза и почему не 3?
Почему выводить надо answer?

самое главное программа работает но я не понимаю как.

Объясните пожалуйста
sfunlimit
Блин кажется дошло
Если
if next != 0 and prev < next: 1 и 7 это ансвер +1
7 и 9 ещё +1
Поэтому 2

Верно?
AD0DE412
 # -*- coding: utf-8 -*-
def main():
    num = []
    result = 0
    
    while True:
        tmp = [int(input(">> "))]
        
        if not tmp[0]:
            break
        
        if not len(num):
            num += tmp
        else:
            if num[-1] < tmp[0]:
                result += 1
            num += tmp
    
    print(f'итог {result} элементов больше предстоящих')
            
if __name__ == '__main__':
    main()

FishHook
AD0DE412
Что это?
AD0DE412
решение. что то не правильно?
FishHook
AD0DE412
Правильность понятие относительное. Мне оно кажется, как бы так сказать толерантно… не совсем разумным

    
l = [1, 2, 4, 1, 2, 34, 0, 0, 3, 1]
result = 0
for i in range(len(l)-1, 0, -1):
    if l[i] > l[i-1]:
        result += 1
print(result)
AD0DE412
FishHook
не совсем разумным
ну тут не поспоришь
у меня последнее время в основном Си сложно переключаться (хотя это не опровдание конечно)
py.user.next
sfunlimit
Последовательность состоит из натуральных чисел и завершается числом 0.
  
>>> def f(lst):
...     assert lst, 'Should be non-empty'
...     assert lst[-1] == 0, 'Should end by zero'
...     out = 0
...     i = 0
...     while True:
...         if lst[i] == 0:
...             break
...         assert lst[i] > 0, 'Should be natural: ' + str(lst[i])
...         if i == 0:
...             pass
...         else:
...             out += lst[i] > lst[i - 1]
...         i += 1
...     return out
... 
>>> f([1, 2, 4, 1, 2, 34, 1, 1, 3, 1, 0])
5
>>> f([0])
0
>>> f([1, 0])
0
>>> f([1, 1, 0])
0
>>> f([2, 1, 0])
0
>>> f([1, 2, 0])
1
>>> 
>>> f([])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in f
AssertionError: Should be non-empty
>>> 
>>> f([1])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in f
AssertionError: Should end by zero
>>> 
>>> f([-1, 0])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 9, in f
AssertionError: Should be natural: -1
>>>
Утверждения (assert) ставятся, чтобы помнить про условия, для которых потом нужно будет допольнительно дописать проверки. Утверждения - это отладочный уровень, то есть они фигурируют только в debug-версии программы, так как их можно отключать.

Для любой последовательности
  
>>> def f(seq):
...     it = iter(seq)
...     out = 0
...     elem = next(it, None)
...     prev = elem
...     while elem is not None:
...         out += elem > prev
...         prev = elem
...         elem = next(it, None)
...     return out
... 
>>> 
>>> f([1, 2, 4, 1, 2, 34, 0, 0, 3, 1])
5
>>> f([])
0
>>> f([1])
0
>>> f([1, 1])
0
>>> f([2, 1])
0
>>> f([1, 2])
1
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB