2016-10-21 3 views
-1

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

Функциональный код у меня до сих пор:

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

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

+1

Возвращаемый кортеж (отсортированный ([x, y, z], reverse = (не возрастающий))) 'Вы просто переписываете функцию' sorted', хотя ... – brianpck

+1

Фактически он возвращает 'lst', что не определен. –

+0

@JohnGordon хороший catch. –

ответ

3

Это должно сделать трюк:

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

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

0

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

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

Не достаточно ли этого?

Смежные вопросы