如何以浓缩形式平均Python中的多个输入?

时间:2016-02-17 21:49:19

标签: python python-3.x

我要编写很多很多数字,写出来却根本没有效率......

a = float(input("Enter the first number: "))
b = float(input("Enter the second number: "))
c = float(input("Enter the third number: "))

......当你拥有一千个号码时。那么如何使用范围特征从单个输入行获取许多数字,然后计算所有输入的平均值或平均值?

2 个答案:

答案 0 :(得分:4)

一种方法是使用 for循环重复查询数字。如果只需要平均值,只需增加一个变量并除以最后的查询总数即可:

n = 10
temp = 0
for i in range(n):
    temp += float(input("Enter a number"))

print("The average is {}".format(temp / n))

通过使用内置的sum()函数和生成器理解,可以缩短代码:

n = 10
average = sum(float(input("Enter a number")) for i in range(n)) / n
print("The average is {}".format(average))

答案 1 :(得分:3)

简洁的方法是列表理解。

<button onclick="myFunction()">Try it</button>

<script>
    function myFunction() {
    var btn = document.createElement("BUTTON");
    var t = document.createTextNode("CLICK ME");
    // some other optional attributes //
    btn.appendChild(t);
    document.body.appendChild(btn);
}
</script>

将100替换为您喜欢的任何范围。这将创建一个输入数字列表。您可以使用nums = [float(input('enter number {}: '.format(i+1))) for i in range(100)] 访问第n个输入号码。

或者,您可以将单个输入字符串解析为浮点数列表:

nums[n-1]

我更喜欢这种提示。

最后,如果从命令行获取数字是一个选项,你可以这样做

>>> nums = [float(x) for x in input('enter numbers: ').split()]
enter numbers: 1.0 3.14 7.124 -5
>>> nums
[1.0, 3.14, 7.124, -5.0]

演示:

import sys

nums = [float(x) for x in sys.argv[1:]]
print(nums)

要获得均值,请发出$ python3 getinput.py 1.0 -5.37 8.2 [1.0, -5.37, 8.2] ,假设您的列表不为空。