Как вывести числа в столбик?
С клавиатуры подается 5 чисел, разделенных концом строки.
Нужно вывести их на экран от большего к меньшему, также разделяя их концом строки.
Формат ввода:
12
1
45
9
10
Формат вывода:
45
12
10
9
1
Как добиться столбика на выводе?
s1 = input()
s2 = input()
s3 = input()
s4 = input()
s5 = input()
my_set = {s1, s2, s3, s4, s5}
my_set_sorted = sorted(my_set, reverse=True)
print(my_set_sorted)
Ответы (4 шт):
Можно получить элемент по индексу, используя "имя_структуры[индекс_элемента]". Индексация начинается с нуля, последний элемент можно получить по индексу -1. Пример:
my_set_sorted[0] # первый элемент
my_set_sorted[1] # второй элемент
my_set_sorted[2] # последний элемент
Вариант простой, но не самый разумный - повторить пять раз конструкцию:
print(my_set_sorted[индекс_элемента])
Вариант более изящный - использовать цикл for, итерируя вашу структуру.
Пример:
for each in my_set_sorted:
print(each)
В данном случае - each это итератор (локальная переменная для цикла for, которая меняется после каждого выполнения тела цикла). На первой итерации each равен первому элементу из my_list_sorted, на второй итерации второму и т.д.
Также обратите внимание на то, что вы используете коллекцию 'set' тут:
my_set = {s1, s2, s3, s4, s5}
Отличие коллекции от простого list(списка) в том, что коллекция содержит уникальные элементы.
Таким образом, если на входе подаются числа 1,2,2,2,5 - set будет содержать только три числа(без повторений).
Думаю, стоит заменить сет на лист.
my_set = [s1, s2, s3, s4, s5] # просто замените скобки с фигурных на квадратные
При использовании sorted ваш сет все равно преобразуется в список.
Также эту часть кода можно заменить:
s1 = input()
s2 = input()
s3 = input()
s4 = input()
s5 = input()
my_set = {s1, s2, s3, s4, s5}
На вот такую:
my_list = []
for each in range(5):
my_list.append(int(input()))
Вариант с циклом и индексами уже продемонстрировали, но еще пару вариантов добавлю от себя:
s1 = input()
s2 = input()
s3 = input()
s4 = input()
s5 = input()
my_set = {s1, s2, s3, s4, s5}
my_set_sorted = sorted(my_set, reverse=True)
print('\n'.join(my_set_sorted)) # Через метод join склеиваем элементы set в одну строку с \n
print('---')
print(*my_set_sorted, sep='\n') # Распаковываем коллекцию указав * , а в самом принте указываем разделитель между элементами \n - перенос строки
Если нужно только вывести в консоль числа в нужном порядке, то промежуточные структуры данных - множества или списки - не нужны.
В генераторе получаем введенные данные и преобразуем в числа, которые из генератора сразу отдаем в sorted. sorted возвращает список, который распаковываем и передаем в print(), где и печатаем через разделитель - перевод строки.
print(*sorted((int(input()) for _ in range(5)), reverse=True), sep='\n')
45
12
10
9
1
arr = []
for i in range(5):
a = int(input())
arr.append(a)
arr = sorted(arr)
arr = arr[::-1]
for i in arr:
print(i, end = '\n')