Возврат значений в кортеж?

#python #python-3.x #sorting

#python #python-3.x #сортировка

Вопрос:

Изо всех сил пытаюсь создать функцию определения того, как возвращать три принятых целых числа и в кортеж в отсортированном формате от наименьшего к наибольшему, в зависимости от того, верно ли значение по возрастанию. Как бы я это сформулировал? Стал бы я использовать цикл for с операторами if, независимо от того, является ли он возрастающим? У меня есть общая идея для сортировки с использованием «отсортированных (список)» и «отсортированных (список, обратный = True)».

Код функции, который у меня пока есть:

 def sort3(x,y,z, ascending=True):
    list(x,y,z)
    return lst
  

Тест должен быть таким sort3(5,3,4) возвращает (3,4,5)

Комментарии:

1. return tuple(sorted([x,y,z], reverse=(not ascending))) Однако вы просто переписываете sorted функцию…

2. На самом деле он возвращает lst , который не определен.

3. @JohnGordon хороший улов.

4. @JohnGordon отметил.

Ответ №1:

Это должно сработать:

 def sort3(x, y, z, ascending=True):
    return tuple(sorted([x, y, z], reverse=not ascending))
  

Комментарии:

1. Спасибо, очень упрощено. Думаю, я слишком много думал об этом.

Ответ №2:

Теоретически вы могли бы сделать это с помощью серии if инструкций, однако в Python есть встроенные функции, которые могут выполнить эту задачу для вас намного проще.
Попробуйте использовать sorted() функцию (которая возвращает объект типа списка) в сочетании с tuple() функцией, чтобы преобразовать этот список в кортеж.

Ответ №3:

 def sort3(x, y, z):
    d = [x, y ,z]
    return tuple(sorted(d))
  

Разве этого недостаточно?