【问题标题】:Is this a good way to get the average of the input numbers? [closed]这是获得输入数字平均值的好方法吗? [关闭]
【发布时间】:2018-10-01 16:56:13
【问题描述】:

我正在编写一个函数来返回用户逗号分隔输入的平均值。

def get_average () :
    grades = input()
    grades = grades.split(",")
    grades = [int(x) for x in grades]
    average = (sum(grades))/(len(grades))
    return round(average, 2)

这是一个好方法吗?我重新定义了两次grades 变量的事实如何?有没有更实用的方法呢?

【问题讨论】:

  • 这段代码没问题

标签: python python-3.x function variables


【解决方案1】:

重用grades 只会使程序更难阅读,因为grades 现在意味着三种不同的、语义上不兼容的东西。尝试使用更具描述性的名称,然后结合中间步骤。例如:

input_line = input("Please enter the grades, separated by commas")
grades = [int(x) for x in input_line.split(',')]

除了平均计算中多余的外括号,到目前为止你做得很好。

【讨论】:

    【解决方案2】:

    你可以写得更优雅一点,但是在这三个连续的行中重新定义grades 并没有错。它很有效,而且因为它靠得很近,所以不会造成混乱。

    这将是我使用标准库中 python 的统计模块的更优雅的解决方案:

    import statistics
    
    def get_average():
        user_input = input('Please enter integer numbers separated by commas: ')
        average = statistics.mean(map(int, user_input.split(',')))
        return round(average, 2)
    

    【讨论】:

    • 谢谢,学习完全不同的方法肯定会有所帮助。
    【解决方案3】:

    这很好,更 Pythonic 你可以像这样链接调用:

    grades = [int(x) for x in grades.split(',')]
    

    无需使用.split()的临时分配

    您可以通过round() 调用来做同样的事情:

    return round(sum(grades) / len(grades), 2)
    

    【讨论】:

    • 谢谢,这将大大简化我的功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 2010-11-01
    相关资源
    最近更新 更多