Как вывести имена, чтобы они шли по порядку с зависимостью от данных введенных в переменных?
Формат ввода
В первой строке записана средняя скорость Пети.
Во второй — Васи.
В третьей — Толи.Формат вывода
Имена победителей в порядке занятых мест.
Код корректно выводит сортированные цифры, но я не понимаю как привязать к вводимым и сортируемым цифрам скорости имена, чтобы они на выходе тоже сортировались.
В коде ниже закомментированные попытки присвоить имена значениям. На выходе нет сортировки.
a = int(input())
b = int(input())
c = int(input())
a,b,c = sorted([a, b, c], reverse = True)
# a = 'Петя'
# b = 'Вася'
# c = 'Толя'
print('1. ' + a)
print('2. ' + b)
print('3. ' + c)
Судя по всему, когда я после сортировки пытаюсь определить новое строчное значение переменным сортировка выше просто убивается.
Ответы (3 шт):
С использованием кортежей (tuple):
a = (int(input()), "Петя")
b = (int(input()), "Вася")
c = (int(input()), "Толя")
l = sorted([a, b, c], reverse = True)
for x in l:
print(x[1], x[0])
С номерами:
for i, x in enumerate(l):
print(i+1, '. ', x[1], sep='')
В Python есть такая структура данных, как словарь: dictionary, она содержит элементы вида ключ-значение.
Для того, чтобы получить то, что вы хотите она подходит наилучшим образом, поскольку вы можете указать соответствие между именем и скоростью.
Советую ознакомиться с документацией по этой структуре данных.
Вот как можно записать код, используя словарь:
speeds = {} # dict
speeds['Петя'] = int(input())
speeds['Вася'] = int(input())
speeds['Толя'] = int(input())
sorted_speeds = sorted(speeds.items(), key=lambda x: x[1], reverse=True)
for name, speed in sorted_speeds:
print(name, speed)
Вывод:
3
17
8
Вася 17
Толя 8
Петя 3
Спустя день раздумья, я нашел правильный код, соответсвующий теме
a = int(input())
b = int(input())
c = int(input())
if a > b and a > c:
print("1. Петя")
elif b > a and b > c:
print("1. Вася")
elif c > a and c > b:
print("1. Толя")
if a > b > c or c > b > a:
print("2. Вася")
elif b > a > c or c > a > b:
print("2. Петя")
elif a > c > b or b > c > a:
print("2. Толя")
if a < b < c or a < c < b:
print("3. Петя")
elif b < a < c or b < c < a:
print("3. Вася")
elif c < a < b or c < b < a:
print("3. Толя")