5.3.2:表达式Python中的函数调用

Posted

技术标签:

【中文标题】5.3.2:表达式Python中的函数调用【英文标题】:5.3.2: Function call in expression Python 【发布时间】:2021-08-13 06:22:49 【问题描述】:

提示如下:

将 max_sum 赋值为 num_a 和 num_b 中的较大者,加上 num_y 和 num_z 中的较大者。只使用一个语句。提示:在一个表达式中调用 find_max() 两次。

这是我的代码:

    def find_max(num_1, num_2):
   max_val = 0.0

   if (num_1 > num_2):  # if num1 is greater than num2,
      max_val = num_1   # then num1 is the maxVal.
   else:                # Otherwise,
      max_val = num_2   # num2 is the maxVal
   return max_val

max_sum = 0.0

num_a = float(input())
num_b = float(input())
num_y = float(input())
num_z = float(input())

def find_max(num_a, num_b):
    max_val = 0.0
    
    if (num_a > num_b):
        max_val = num_a
    else: 
        max_val = num_b

def find_max(num_y, num_z):
    max_val = 0.0
        
    if (num_y > num_z):
        max_val = num_y
    else:
        max_val = num_z
            
        

print('max_sum is:', max_sum)

不知道我做错了什么。这个我也试过了


def find_max(num_a, num_b):
    max_1 = 0.0
    
    if (num_a > num_b):
        max_1 = num_a
    else: 
        max_1 = num_b

def find_max(num_y, num_z):
    max_2 = 0.0
        
    if (num_y > num_z):
        max_2 = num_y
    else:
        max_2 = num_z
            
max_sum = (max_1 + max_2)

这给了我一个错误消息“max_1 is not defined”,即使我已经定义了它。第一个代码只给了我 0.0 的输出。

有什么建议吗?谢谢!

【问题讨论】:

提示提示您调用 find_max 两次,而不是再定义两次。您可以使用内置的 max 函数来执行此操作,例如:max_sum = max(num_a, num_b) + max(num_y, num_z) 如果不清楚 - 删除两个额外的 def find_max 函数。 :) 函数的想法是它接受你给它的任何参数,并在函数中使用这些值。使用您的单个def find_max(num_1, num_2),尝试打印find_max(1, 2)find_max(20, 10) 的输出。该函数可以采用任何您给它的两个数字,包括变量数字(例如num_anum_b)。 【参考方案1】:

我不明白为什么你两次定义find_max函数,你甚至没有调用函数find_max(),最好使用python内置的max函数,你也可以使用f-strings

只需使用:

num_input = 4
num_a, num_b, num_y, num_z = [float(input()) for _ in range(num_input)]
max_sum = max(num_a, num_b) + max(num_y, num_z)
print(f"max_sum is: max_sum")

【讨论】:

【参考方案2】:
def find_max(num_1, num_2):

    max_val = 0.0
    if (num_1 > num_2):  # if num1 is greater than num2,
        max_val = num_1  # then num1 is the maxVal.
    else:  # Otherwise,
        max_val = num_2  # num2 is the maxVal
    return max_val

num_a = float(input())
num_b = float(input())
num_y = float(input())
num_z = float(input())

max1 = find_max(num_a, num_b)
max2 = find_max(num_y, num_z)

max_sum = max1 + max2

print('max_sum is:', max_sum)

删除多余的两个find_max()函数,然后为max1max2调用两次。

输出:

20
30
13
56
max_sum is: 86.0

【讨论】:

以上是关于5.3.2:表达式Python中的函数调用的主要内容,如果未能解决你的问题,请参考以下文章

python怎么调用自定义函数

python - 从自身内部调用函数

Python:any() / all() 中的惰性函数求值

c语言函数调用例子

Python函数

Python中的匿名函数——lambda函数