簡體   English   中英

python打印列表項在線增加

[英]python printing list items incremented on lines

我正在嘗試接受用戶輸入,並以框格式將數字列表打印到python中的不同行上。

現在我有:

horizontalsize =  int (input ('please enter horizontal size '))

verticalsize = int (input ('please enter vertical size '))

numbers = horizontalsize * verticalsize

mylist = []

mylist.append(range(1,numbers))

for i in range(1,numbers,horizontalsize):

    print (i)

用戶將輸入高度和寬度,如果高度輸入為5而寬度輸入為3,則應打印:

1 2 3

4 5 6

7 8 9

10 11 12

13 14 15

目前我正在得到:

1

4

7

10

13

我如何才能填寫其余數字? 任何幫助是極大的贊賞!

這應該工作:

for i in range(1, numbers, horizontalsize):
    lst = range(i, i+horizontalsize)
    print lst  # format is [1,2,3]
    print ' '.join(map(str,lst))  # format is "1 2 3"

您還可以通過列表理解來聲明2D列表,例如:

>>> horizontalsize = 3
>>> numbers = 15
>>> ll = [[x for x in range(y,y+horizontalsize)] 
for y in range(1,numbers,horizontalsize)]
>>> ll
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15]]
>>> for line in ll:
...    print ' '.join(map(str,line))
... 
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15

您正在使用的range()將從1開始,增加到numbers ,然后每次增加一次horizontalsize 您將直接從該范圍提取i的值,因此這些將是您獲得的唯一值。 一種簡單的解決方案是添加第二個嵌套循環以生成缺失值(在ii+horizontalsize )。

for i in range(1,numbers,horizontalsize):
    for j in range(i, i+horizontalsize):
        print (j, end=" ")
    print() #for the newline after every row

您的循環步驟將跳過1到1 +水平尺寸之間的所有數字,而您只需打印出該數字即可(不必擔心將內容放在換行符上)。 您要么需要插入一個嵌套的for循環,要么修改范圍以遍歷每個數字,然后僅將換行符放在特定的數字之后。

第二種解決方案,使用模運算符:

for i in range(1,(numbers+1)):
    print(i,end=" ")
    if i % horizontalsize == 0:
        print()

這給了我:
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM