【问题标题】:5.3.2: Function call in expression Python5.3.2:表达式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)。

标签: python function expression


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2013-05-15
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 2018-01-07
      • 1970-01-01
      相关资源
      最近更新 更多