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
对于我的问题,我必须编写一个 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