簡體   English   中英

如何從用戶那里獲得多個輸入?

[英]How can I take multiple inputs from the user?

我正在嘗試創建一個程序,其中python將使用多個輸入來計算輸入的平均值,但是盡管我進行了大量搜索,但是它無法正常工作,但是由於使用類,我的問題與其余問題有所不同。 我的代碼是:

 class my_class(object):
        def __init__(self, number1, number2, number3):
            self.number1 = number1
            self.number2 = number2
            self.number3 = number3

        def defAvrg(self):  # get the defAvrg of three numbers
            return  (self.number1 + self.number2 + self.number3)/3
            #resulin = resulted / 3
            #return resulted
   my_class2 = my_class([float(input("Enter number %s: "%i)) for i in range(3)])
   print(my_class2.defAvrg())

目標:我想輸入三個數據來找到平均值。

您的類的__init__()方法需要3個位置參數(除了self ),但是您的代碼僅傳遞一個-用戶輸入的數字列表。 您需要將每個數字作為單獨的參數傳遞。 您可以使用*運算符解壓縮列表中的項目並將它們作為單獨的參數傳遞:

my_class2 = my_class(*[float(input("Enter number %s: "%i)) for i in range(3)])

這將解決緊迫的問題,但是,如果您的類接受數字列表並將其綁定到對象的屬性,它將更加靈活。 然后,您的average方法將使用列表來計算平均值,或者可以簡單地使用statistics.mean()

from statistics import mean

class my_class(object):
    def __init__(self, numbers):
        self.numbers = numbers

    def defAvrg(self):
        return mean(self.numbers)

這種方法的優點是您可以從用戶那里收集任意數量的值。

您可以使用以下腳本調用腳本:腳本名scriptname n*<param^n>因此,對您而言,它將是python script.py number1 number2 number3

您可以使用sys.argv[1-3]在Python中訪問它們, sys.argv[0]始終是腳本名稱

您將列表作為單個參數傳遞,您需要擴展列表,以解壓縮列表,您可以使用*

myClass(*list())

這樣的解決方案對我有用。

numbers = list()
for i in range(0, 3):
    inputNr = int(input("Enter a number: "))
    if(inputNr == -99):
        break

    numbers.append(inputNr)

#Then we take all of the numbers and calculate the sum and avg on them
sum = 0
for j, val in enumerate(numbers):
    sum += val

print("The total sum is: " + str(sum))
print("The avg is: " + str(sum / len(numbers)))

暫無
暫無

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

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