2016-10-07 27 views
0

數組我很新的蟒蛇,因此,如果這個問題很簡單提前道歉。閱讀順序的用戶輸入在Python

我用Python寫一個腳本,需要問的順序輸入用戶(輸入都將彩車),然後它需要的是輸入寫一個清單。其餘的代碼將完成列表中的任務。

這是我第一次嘗試:

num_array = list() 

a1 = raw_input('Enter percentage of A (in decimal form): ') 
a2 = raw_input('Enter percentage of B (in decimal form): ') 
a3 = raw_input('Enter percentage of C (in decimal form): ') 


li = ['a1', 'a2', 'a3'] 
for s in li: 
num_array.append(float(s)) 

的所有作品,除了當我們靜下心來,讀值到數組。然後,我得到的錯誤:

num_array.append(float(s)) 
ValueError: invalid literal for float(): a1 

我懷疑,對於一個普通的Python編碼器的錯誤是顯而易見的,但是這是字面上我第一次使用它:-)這真棒,順便說一句!

任何幫助將不勝感激。只要它的運行,我會添加一些東西來處理非標準輸入等

+2

'LI = [A1,A2,A3]'解決它(假設你的循環實際上是適當的縮進) –

+0

這樣做:-)非常感謝! –

回答

0

它應該是:

li = [a1, a2, a3] 
for s in li: 
    num_array.append(float(s)) 

你想指a1變量,而不是"a1"字符串

注意你可一切都合併到您的循環:

num_list = [] 
for c in ("A","B","C"): 
    num_list.append(float(raw_input('Enter percentage of {} (in decimal form): '.format(c)))) 

這將引發ValueError如果raw_input雖然不是有效的float

+0

非常感謝@ Chris_Rands!真是一個偉大的進步:-D –

+0

@MoinuddinQuadri'range'工作得很好,當然,但我用這個語法允許字母表的字母串容易代入循環 –

+0

哦,是的,我錯過了你正在使用的那部分' .format()'。那很好。對於範圍(3):我(65 + i)'我有更多的通用行爲嗎? –

0

而是在li列表使用str類型,使用的變量爲:

li = [a1, a2, a3] 

不過你的循環可能會引起ValueError如果傳遞與raw_input()的價值不能轉化爲float。最好每個項目list轉換爲float方法是:

通過

列表綜合爲:

num_list = [float(item) for item in [a1, a2, a3]] 

OR,經由map()爲:

num_list = map(float, [a1, a2, a3]) 
-1
a = input ("enter the value of a") 

b = input ("enter the value of b") 

c = input {"enter the value of c") 

l = [a,b,c] 

num_array = [] 

for i in l: 

    if type(i)==int 
     i=float(i) 
     num_array.append(i) 
print l,num_array