我正在编写一个函数来返回用户逗号分隔输入的平均值。
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
变量的事实怎么样?有更实际的方法吗?
答案 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)