2017-09-11 59 views
0

我正在嘗試做一個簡單的平均計算,但嘗試盡我所能在CMD上運行。 到目前爲止,這是我已經出來了使用參數運行python腳本的平均計算器

import sys 

myList = [a,b,c] 

myList[0] = int(sys.argv[1]) 

myList[1] = int (sys.argv[2]) 

myList[2] = int(sys.argv[3]) 

print 'Average:' + sum(myList)/len(myList) 

我的問題是;如何在列表中設置一個變量以賦予它們一個值?

編輯:

import sys 

    myList = [a,b,c] 

    a = int(sys.argv[1]) 

    b = int (sys.argv[2]) 

    c = int(sys.argv[3]) 

    print 'Average:' + sum(myList)/len(myList) 

什麼是錯用此代碼?

編輯:

我想允許用戶通過將三個值的程序有三個輸入參數運行這個程序:A,B和C。

編輯:

這是我最後的編輯,任何人都可以幫我這個

import sys 

a = float(sys.argv[1]) 
b = float(sys.argv[2]) 
c = float(sys.argv[3]) 
if a == str or b == str or c == str: 
    print 'Your input is invalid' 
else: 
    print 'Average: %.2f ' % ((a + b + c)/3) 
+0

我不知道爲什麼你有'myList = [a,b,c]'這一行,而且你不想使用整數除法,但其餘部分看起來很好。你在問什麼? – Carcigenicate

+0

'myList = [int(i)for i in sys.argv [1:4]]' – CoryKramer

+0

@Carcigenicate我編輯了我的代碼,我希望你明白我在問什麼。 – greatestever

回答

0

你在尋找的東西,如:

import sys 
my_list = [float(arg) for arg in sys.argv[1:]] 
print('Average: {}'.format(sum(my_list)/len(my_list)) 

[float(arg) for arg in sys.argv[1:]]是一個列表理解(單行for,返回一個列表)。它將參數解析爲floatfloat(arg)),並從sys.argv的第二個元素開始循環(首先是您的腳本文件的名稱)。

如果分子和分母都是分子和分子都是int,則會強制使用浮點類型,因爲Python中繼的分割結果。

順便說一句,需要PEP8 snake_case(my_list,不myList)和字符串連接不應該與+來完成,但與formatjoin()

+0

我編輯了我的密碼,看一看。 – greatestever

1

您可以創建一個空列表並使用方法append

3/2等於1在Python 2中,所以你想使用浮動。

您不能連接浮動和字符串,因此您想要使用%format

這裏是更正後的代碼:

my_list = [] 
my_list.append(float(sys.argv[1])) 
my_list.append(float(sys.argv[2])) 
my_list.append(float(sys.argv[3])) 
print 'Average: %s' % (sum(my_list)/len(my_list)) 

或者shorlty:

my_list = map(float, sys.argv[1:]) 
print 'Average: %s' % (sum(my_list)/len(my_list)) 

或者,如果你想解開的參數在不同的變量:

a, b, c = map(float, sys.argv[1:]) 
print 'Average: %s' % ((a + b + c)/3) 
+0

以及我給出的任務需要將a,b,c作爲變量。不要介意,如果你編輯這個代碼的基礎上。 – greatestever

+0

@greatestever我已經添加了一個解包示例 –

+0

我可以從剛剛添加的代碼中瞭解如何添加輸入數字無效並顯示錯誤消息。再次感謝 – greatestever