2013-04-25 26 views
2

我是Python新手,我正在嘗試學習如何將列表與for和while循環結合起來用於即將在Uni舉辦的研討會。我跌跌撞撞的一兩件事,但:在「條形圖」中顯示列表的內容

基本上,我有存儲在列表中的數值,我想是這樣顯示的:

1 IIIII 
2 II 
3 
4 III 
5 II 

所以,我的代表數量,即3 = III

我想這個代碼(我曾在我的代碼已經建立數爲列表或更早):

listIndex = 1 
while listIndex < len(count): 
    print(listIndex, " ", end='') 
    for number in count[listIndex]: 
     print("I", end='') 
    print() 
    listIndex += 1 

,但我得到了以下錯誤:

1 Traceback (most recent call last): 
File "/Volumes/USB/workshop7.py", line 145, in <module> 
for number in count[index]: 
TypeError: 'int' object is not iterable. 

我沒有看到我做錯了什麼,我查了一下錯誤,我不明白爲什麼我不能遍歷循環?

for循環應使用listIndex變量轉到列表中相應的索引並檢索該值,並將其顯示爲一系列Is以便與存儲在那裏的數字相對應?任何幫助理解我出錯的地方都會非常感激。 這是評估(5%)所以如果你能幫助我的思考而不是給我答案,那將是非常感激。

+0

+1:對於提的是,你想在流動的幫助和思考,而不是答案! – 2013-04-25 07:25:46

回答

2

count[listIndex]是一個int值,而不是列表。您可以使用range()進行列表,或者甚至可以使用「字符串乘法」,即print('I' * count[listIndex])和忽略for循環。

+1

對於那些要求提示幫助他思考的人而言,這可能有點太幫助,而不是直截了當地給出答案。 – rmunn 2013-04-25 07:26:28

+1

我不認爲我給了太多的幫助:-)用'help(「range」)'她/他會看到有關製作整數列表的信息。作爲一名初學者,她/他顯然不知道Python字符串乘以「」I「* 5」。 – 2013-04-25 07:36:58

+0

感謝您的回覆。 我添加到代碼print(type(count)),它確實顯示它確實是一個列表。我還添加了一個print(count)行,它在列表中確實有我需要的所有值。 – Aaron 2013-04-25 08:33:40

1

因此,您有一個名爲「count」的列表,其中包含計數,並且您正在使用count [listIndex]提取其中的一個。結果是什麼?一個int,對嗎?

這意味着,您的for循環試圖做一些事情,如:

for number in 3: 
    print("I", end='') 

是「在3號」做循環Python中的有效方法是什麼?什麼是更好的方式來編寫循環?

0
  1. 在Python列表是0索引,所以你應該從0
  2. 知道計數開始list_index,你並不需要循環打印「我」。在Python中,你可以簡單地做:

    print 'I'*count[list_index]