2015-10-22 29 views
0

我需要幫助分隔x行中的列表(由用戶輸入)。我似乎無法做到這一點。如何分隔x行中的列表

這是我到目前爲止有:

# List of random integers between 0-100 
def createGrades(amt): 
    import random 
    myGrades = random.sample(range(0,100), amt) 
    return myGrades 


# To list myGrades neatly in rows of 6 
myGrades = createGrades(10) 
def printRows(myGrades, amtPerRow): 
    n=0 
    for i in range(0+n, amtPerRow+n): 
    print(myGrades, end='\n') #Stuck at this part 

我怎樣才能使這項工作?我嘗試了一個範圍內的我,但它只是吐出myGrades列表的amtPerRow。

謝謝!

回答

1

這裏有很多問題。首先是print語句沒有縮進(因此不在for循環中)。其次,範圍沒有正確指定。如果amtPerRow爲6,則範圍將爲(0,6),正如您所提到的那樣,只會列出列表中的元素0-6。

如果我正確理解你的問題,你想打印出每個年級,但每6年級添加一個換行符。這是一個模操作。

下面是一個將行打印爲CSV(逗號分隔值)的示例,因爲我不知道您希望項目之間的分隔符是什麼 - 它沒有在您的問題中指定。

def printRows(myGrades, amtPerRow): 
    for i, grade in enumerate(myGrades): 
     print(grade, end="") 
     if (i + 1) % amtPerRow == 0: 
      print("\n", end="") 
     else: 
      print(",", end="") 

這對grades = [82, 34, 81, 79, 31, 18, 7, 67, 13, 25]給我:

>>> printRows(grades, 6) 
82,34,81,79,31,18 
7,67,13,25, 

我假設的Python 3,鑑於你的打印語句,但如果沒有,你可以使用:

from ___future__ import print_function 

在這裏獲得打印功能。或者,使用Python 2中的逗號語法(print grade,)在每個打印語句之後不要有換行符。

1
for i in range(1+len(myGrades)//6): 
    print myGrades[i*6:(i+1)*6] 
相關問題