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)
这段代码很好谢谢,学习一种完全不同的方法肯定会有帮助。谢谢,这将大大简化我的函数。