Наименьшее из трех чисел - PullRequest
0 голосов
/ 04 апреля 2020
# Using division operator to find 
# minimum of three numbers 
def smallest(x, y, z): 

    if (not (y / x)): # Same as "if (y < x)" 
        return y if (not (y / z)) else z 
    return x if (not (x / z)) else z 

# Driver Code 
if __name__== "__main__": 

    x = 78
    y = 88
    z = 68
    print("Minimum of 3 numbers is", 
                smallest(x, y, z)) 

# This code is contributed 
# by ChitraNayal 

Итак, я нашел приведенный выше код для самого короткого метода для нахождения наименьшего из трех чисел без использования функции min. Я не совсем понимаю значение not(y/z) и остальной код после этого. Означает ли это логическое значение

Ответы [ 4 ]

2 голосов
/ 04 апреля 2020

Предполагая, что это Python 2, для деления двух целых чисел используется целочисленное деление , которое возвращает только "целую" часть - то есть часть слева от десятичной запятой. Таким образом, если x меньше y, x / y вернет 0, что оценивается как False в логическом контексте, поэтому not(x/y) эквивалентно запросу, если x меньше y.

1 голос
/ 04 апреля 2020
def smallest(x, y, z): 

if (not (y // x)): # Same as "if (y < x)" 
    return y if (not (y // z)) else z 
return x if (not (x // z)) else z 
print(smallest(3,5,7))

Я думаю, что использование деления по полу (//) было предназначено вместо нормального деления (/). с этим мы можем иметь ноль в качестве возвращаемого значения деления, скажем, например, 3 // 5, и ноль считается ложным значением в python.

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

Если вы ищете самый короткий метод (без использования min), альтернативным способом является сортировка массива и получение первого элемента.

x = 78
y = 88
z = 68

numbers = [x, y, z]
numbers.sort()
print(numbers[0])
0 голосов
/ 04 апреля 2020

Пока вы в поиске истинности и целых чисел и хотите короткую неминутную реализацию, сработает следующее =)

def smallest(x, y, z):
    return ((x,z)[z<x],(y,z)[z<y])[y<x]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...