如果達到第 n 個字符,我需要在新列中列印但我沒有得到輸出
輸入:
5
['c', 'o', 'd', 'e', 'f', 'f', 'i', 'l', 'r', 'o', 'e'
需要的輸出:
c f e
o i
d l
e r
f o
我的代碼:
n=5
l= ['c', 'o', 'd', 'e', 'f', 'f', 'i', 'l', 'r', 'o', 'e']
for i in range(0,len(l)):
print(l[i])
if i%n==0 and i!=0:
print('\r')
輸出得到:
c
o
d
e
f
f
i
l
r
o
e
我犯了什么錯誤??
uj5u.com熱心網友回復:
您不能回傳并列印到已列印的行。但是您可以附加到您已經創建的串列中。這意味著您需要先將資料保存到結構中,然后再列印。
因此,您需要找到一種方法來遍歷資料一次并將行收集到組中,以便最后您可以遍歷它們并列印。有很多方法可以做到這一點。這是使用您已有的一些想法的一個:
n = 5
l = ['c', 'o', 'd', 'e', 'f', 'f', 'i', 'l', 'r', 'o', 'e']
rows = []
for i, c in enumerate(l):
if i % n >= len(rows): # if row doesn't exist
rows.append([]) # make a new one
rows[i%n].append(c) # then append
# now that it's restructured into rows, print
for row in rows:
print(" ".join(row))
這應該列印:
c f e
o i
d l
e r
f o
uj5u.com熱心網友回復:
你想要的函式形式:
def custom_print(column_length, array_to_print):
chunked_array = [list(array_to_print[i:i column_length]) for i in range(len(array_to_print))[::column_length]]
for i in range(column_length):
to_print = []
for chunk in chunked_array:
try:
to_print.append(chunk[i])
except:
to_print.append('')
print(' '.join(to_print))
輸出:
custom_print(5, ['c', 'o', 'd', 'e', 'f', 'f', 'i', 'l', 'r', 'o', 'e'])
c f e
o i
d l
e r
f o
uj5u.com熱心網友回復:
您可以通過使用串列并在其中存盤行來做到這一點,如下所示
grid=[]
n=5
l= ['c', 'o', 'd', 'e', 'f', 'f', 'i', 'l', 'r', 'o', 'e']
for i in range(0,len(l)):
if i//n==0:
grid.append(l[i])
else:
grid[i%n]=grid[i%n] l[i]
for row in grid:
print(row)
uj5u.com熱心網友回復:
基于串列理解和切片的單行解決方案。它n從字串中獲取初始偏移量為 0,1,...,n-1 的第 th 個字符。
print("\n".join([" ".join(l[i::n]) for i in range(n)]))
#c f e
#o i
#d l
#e r
#f o
uj5u.com熱心網友回復:
每次呼叫 print() 都必須輸出所有要在行上顯示的字母。列印不能向后移動:
n = 5
a = ['c', 'o', 'd', 'e', 'f', 'f', 'i', 'l', 'r', 'o', 'e']
for i in range(n):
print(*a[i::n])
c f e
o i
d l
e r
f o
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/429196.html
標籤:Python python-3.x
