簡體   English   中英

如何以濃縮形式平均Python中的多個輸入?

[英]How to average multiple inputs in Python in a condensed form?

我寫了很多很多的數字,寫出來的效率根本不高

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

......當你擁有一千個號碼時 那么如何使用范圍特征從單個輸入線獲取許多數字,然后計算所有輸入的平均值或平均值?

一種方法是使用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))

簡潔的方法是列表理解。

nums = [float(input('enter number {}: '.format(i+1))) for i in range(100)]

將100替換為您喜歡的任何范圍。 這將創建一個輸入數字列表。 您可以使用nums[n-1]訪問第n個輸入數字。

或者,您可以將單個輸入字符串解析為浮點列表:

>>> 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]

要獲得均值,請發出sum(nums)/len(nums) ,假設您的列表不為空。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM