【问题标题】:The values from the list doesn't work in the function列表中的值在函数中不起作用
【发布时间】:2021-08-10 19:20:52
【问题描述】:

我不明白为什么我不能从列表中计算平均值。

当我将此函数的值放入print 时,它就可以工作了。

当我将print 用于列表a 中的sumlen 时,它可以工作。

但是当我尝试将列表中的值替换到我的函数中时,它不起作用。

我不明白为什么。

a = [1000,2000]
def avrage_value_kcl_per_day(kcl,day):
    avkpd = kcl//day
    print(avkpd)

print('{}'.format(len(a)))

print('{}'.format(sum(a)))

print(avrage_value_kcl_per_day(3000,2))

print(avrage_value_kcl_per_day(('{}'.format(sum(a))),('{}'.format(len(a)))))

【问题讨论】:

  • 你的函数没有return 任何东西。我想它应该返回avkpd
  • format 是一个字符串,所以你不能把它当作数字使用,除非你把它转换回来
  • 您没有将值传递给函数,而是将值的字符串表示形式传递给函数。只是不要那样做。你根本不需要在这段代码中使用format,甚至print,因为它会自动将值转换为字符串。
  • 当您说it doesn't work 时,您应该使用完整的错误回溯更新您的问题。
  • avrage_value_kcl_per_day(sum(a), len(a))

标签: python list function


【解决方案1】:

您在函数体中打印内容,只需调用它即可。下一个问题是你在最后一条语句中将字符串值传递给函数,而它的工作涉及 // 两个数字。

a = [1000,2000]
def avrage_value_kcl_per_day(kcl,day):
    avkpd = kcl//day
    print(avkpd)

print('{}'.format(len(a))) 

print('{}'.format(sum(a)))

avrage_value_kcl_per_day(3000,2)

avrage_value_kcl_per_day(sum(a), len(a)))

如果你在 python 3 上,你可以简单地避免格式化函数并使用像 print(f'{len(a)}') 这样的 f 字符串。

【讨论】:

    【解决方案2】:

    我建议使用 statistics.mean 而不是实现自己的 average 函数:

    from statistics import mean
    
    a = [1000,2000]
    
    print(len(a))
    print(sum(a))
    print(mean(a))
    

    如果您确实需要定义自己的 average 函数,它应该将一个可迭代对象作为参数并返回平均值(而不是打印它):

    a = [1000,2000]
    
    def average(numbers):
        return sum(numbers) / len(numbers)
    
    
    print(len(a))
    print(sum(a))
    print(average(a))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      相关资源
      最近更新 更多