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

Python 这是获得输入数字平均值的好方法吗?,python,python-3.x,function,variables,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变量两次,这个事实怎么样?有没有更实用的方

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

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
变量两次,这个事实怎么样?有没有更实用的方法

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

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

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

这很好,更具python风格的是,您可以链接调用,如:

grades = [int(x) for x in grades.split(',')]
无需使用
.split()

您可以对
round()
调用执行相同的操作:

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

你可以写得更优雅一点,但在这三行中重新定义
等级也没什么错。它是有效的,因为它是如此接近,不会造成混乱

下面是我使用标准库中的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)

这段代码很好谢谢,学习一种完全不同的方法肯定会有帮助。谢谢,这将大大简化我的函数。