最小的三个数字

问题描述 投票:-1回答:4
# 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)的含义以及其余代码。这是否意味着布尔值

python loops division minimum
4个回答
2
投票

[假设这是Python 2,将两个整数相除使用integer division,它仅返回“整个”部分-即小数点左边的部分。因此,如果x小于y,则x / y将返回0,在布尔上下文中其值为False,因此not(x/y)等同于询问x是否小于y。


0
投票

虽然您正在发现真实性和整数,并且需要一个简短的非最小实现,但下面的方法会起作用=)

def smallest(x, y, z):
    return ((x,z)[z<x],(y,z)[z<y])[y<x]

0
投票
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
投票

如果您正在寻找最短的方法(不使用min),另一种方法是对数组进行排序并获取第一个元素。

x = 78
y = 88
z = 68

numbers = [x, y, z]
numbers.sort()
print(numbers[0])
© www.soinside.com 2019 - 2024. All rights reserved.