Python 中的默认函数使用 min

Default function in Python using min

对于我的问题,我必须编写一个 min 函数,它最多可以接受 4 个数字参数,但必须至少有 2 个。第三和第四个参数必须设置为 None 如果它们不是传递了一个值。该函数应该 return 传递的最小值,并且必须使用 2、3 或 4 个值。 这是我的:

def min(num1, num2, num3=None, num4=None):
   if num1<num2:
     result=num1
   elif num2<num1:
     result=num2
   elif num3>None:
     if num3<num1 and num3<num2:
       result=num3
   else:
     min_num=num4
   return result

当我在 python 中 运行 并输入 4 个值时,它不是 return 最小值。它只是 return 是我输入的四个参数中的一个随机数。谁能帮我吗?

您的逻辑在几个方面存在缺陷。绘制你想要的逻辑树, 用数字列表来做的方式,并实现 that,而不是你发布的这里。

   if num1<num2:
      result=num1
   elif num2<num1:
      result=num2
   elif ...

看看这里的逻辑:你得到最后两个参数的唯一方法是 num1 == num2。如果你输入你的函数 (5, 7, 1, 0),它将 return 5.

   elif num3>None:

你想在这里做什么? None 不是有效的数值;这是非法比较。尝试

    if num3 is not None and ...

建议的逻辑:在单独的变量中跟踪迄今为止最小的数字;将每个值与 that.

进行比较

这可能是避免 ifs 并使用内置函数的解决方案。

def my_min(num1, num2, num3=None, num4=None):
  my_numbers = [num1, num2, num3, num4]
  return min(my_numbers)


print(my_min(4, 3, 2, 1))

您正在使用 elif,它仅在 if 条件为假时执行。因此,您可以使用所有 if 条件来修复。此外,您的默认值为 None,您可以使用 != None 进行比较。您可以尝试类似的操作:

def minimum(num1, num2, num3=None, num4=None):
    # this first  if else will check with num1 and num2 only  
    if num1 < num2:
        result = num1
    else:
        result = num2

    # after checking between num1 and num2
    # the result will be checked with num3
    # if num3 is provided
    if num3 is not None and num3 < result:
        result = num3

    # if num4 also provided then the result will be compared with it
    if num4 is not None and num4 < result:
        result = num4
    return result

首先,你不应该使用min()作为你的函数名,因为它是python的关键字。

其次,"if-else"条件的数量应该是最少的,太多了,你可能需要考虑其他选择。

def custom_min(num1, num2, num3=None, num4=None):
    min_value = num1
    for num in [num2, num3, num4]:
        if !(num is None) and min_value>num:
            min_value = num
    return min_value

print(custom_min(1, 2))
print(custom_min(2, 1, 4))
print(custom_min(2, 1, 4, 0))

输出为:

1
1
0