Форум сайта python.su
Последовательность состоит из натуральных чисел и завершается числом 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?
самое главное программа работает но я не понимаю как.
Объясните пожалуйста
Офлайн
Блин кажется дошло
Если
if next != 0 and prev < next: 1 и 7 это ансвер +1
7 и 9 ещё +1
Поэтому 2
Верно?
Офлайн
# -*- 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()
Отредактировано AD0DE412 (Окт. 8, 2020 18:15:40)
Офлайн
AD0DE412Что это?
Офлайн
решение. что то не правильно?
Отредактировано AD0DE412 (Окт. 8, 2020 18:13:44)
Офлайн
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)
Офлайн
FishHookну тут не поспоришь
не совсем разумным
Отредактировано AD0DE412 (Окт. 9, 2020 15:51:05)
Офлайн
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 >>>
>>> 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 >>>
Отредактировано py.user.next (Окт. 9, 2020 02:19:03)
Офлайн