Чего мне не хватает в этой python? Это простая программа, чтобы заказать 3 условия, а последняя часть заказа не работает - PullRequest
0 голосов
/ 04 февраля 2020

Я уже пытался ввести функцию SWAP () напрямую, и она работает, но с функцией внутри нее не меняются переменные.

def SWAP(x,y):
    w = x
    x = y
    y = w
    del w

def ORDER(x,y,z):
    if x > z:
        SWAP(x,z)
    if x > y:
        SWAP(x,y)
    if y > z:
        SWAP(y,z)
    print(f'{x}<{y}<{z}')

1 Ответ

0 голосов
/ 04 февраля 2020

Когда вы вызываете функцию SWAP, она не возвращает значения. И аргументы функций не отправляются как call-by-reference.

Так что любые изменения, которые вы делаете в функции SWAP, не отражаются в вызывающей функции.

Попробуйте это:

def SWAP(x,y):
    w = x
    x = y
    y = w
    return x,y

def ORDER(x,y,z):
    if x > z:
        x,z=SWAP(x,z)
    if x > y:
        x,y=SWAP(x,y)
    if y > z:
        y,z=SWAP(y,z)
    print(f'{x}<{y}<{z}')

Объяснение:

Функция SWAP принимает 2 аргумента x,y и возвращает замененное значение. Произведенная вами перестановка была правильной.

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

Например. -

a = 5
b = 8

a,b = SWAP(a,b)

Here I am calling SWAP with `a,b` who have values `5,8` currently, 
Now SWAP returns `8,5`as response. I am storing `8,5` into `a,b`. 

So Now a becomes 8 and b becomes 5. 

All the other logic is same as you wrote for comparing.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...