Задача «Шеренга», тема «Списки» из https://pythontutor.ru/

oland1979

Новичок
Пользователь
Июл 26, 2021
5
0
1

Условие​

Петя перешёл в другую школу. На уроке физкультуры ему понадобилось определить своё место в строю. Помогите ему это сделать.
Программа получает на вход невозрастающую последовательность натуральных чисел, означающих рост каждого человека в строю. После этого вводится число X – рост Пети. Все числа во входных данных натуральные и не превышают 200.

Выведите номер, под которым Петя должен встать в строй. Если в строю есть люди с одинаковым ростом, таким же, как у Пети, то он должен встать после них.

Одно из решений:

Python:
a=[int(s) for s in input().split()]
x=int(input())
index=len(a)+1
for i in range(len(a)):
    if x>a[i]:
        index=i+1
        break
print(index)

Не понимаю что происходит в цикле. Объясните пожалуйста.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
Python:
a=[int(s) for s in input().split()] # Вводим последовательность чисел, делим ее по пробелам и записываем в список
x=int(input())                      # Вводим число х
index=len(a)+1                      # Присваиваем переменой index длину списка а + 1
for i in range(len(a)):             # range делает список чисел до значения указанного в аргументе, не включая его
                                    # циклом проходим по этому списку
    if x>a[i]:                      # если х больше элемента в списке а с индексом i
        index=i+1                   # то присваиваем переменной index индекс элемента в списке а + 1 (значение переменой i + 1)
        break                       # прерываем цикл for
print(index)                        # печатаем переменую index
 

oland1979

Новичок
Пользователь
Июл 26, 2021
5
0
1
Спасибо, вот это я и не понимаю
1. почему присваиваем переменой index длину списка а + 1, почему не просто а например?
2. если х больше элемента в списке а с индексом i то присваиваем переменной index индекс элемента в списке а + 1. Тоесть если рост Пети больше роста человека в ширенге с индексом i, мы ставим Петю в шеренгу после этого человека? Должны бы поставить перед ним...
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
Спасибо, вот это я и не понимаю
1. почему присваиваем переменой index длину списка а + 1, почему не просто а например?
2. если х больше элемента в списке а с индексом i то присваиваем переменной index индекс элемента в списке а + 1. Тоесть если рост Пети больше роста человека в ширенге с индексом i, мы ставим Петю в шеренгу после этого человека? Должны бы поставить перед ним...
1. возможно, что бы петя был в шеренге последним, если присвоим len(a) то он встанет на место последнего человека, а не за ним...
2. я объяснял ваш код, а не решал задачу, вы написали - что это решение, я вам поверил и объяснил...
 
  • Мне нравится
Реакции: oland1979

oland1979

Новичок
Пользователь
Июл 26, 2021
5
0
1
1. возможно, что бы петя был в шеренге последним, если присвоим len(a) то он встанет на место последнего человека, а не за ним...
2. я объяснял ваш код, а не решал задачу, вы написали - что это решение, я вам поверил и объяснил...
Спасибо большое за объяснение.
 

Форум IT Специалистов