【问题标题】: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)