这是获得输入数字平均值的好方法吗?

时间:2018-04-20 22:57:41

标签: python python-3.x function variables

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

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变量的事实怎么样?有更实际的方法吗?

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

你可以把它写得更优雅,但在这三个连续的行中重新定义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)

答案 2 :(得分:0)

这很好,更加pythonic你可以链接如下的电话:

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

无需使用.split()

的临时分配

您可以对round()电话执行相同的操作:

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