迭代一行数字,在10以下的所有数字后面加一个空格

2024-04-29 02:57:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用for循环来迭代战舰的10x10板,我想在行之前列出从1到10的数字,这样更容易监督。 问题是10比其他数字占用更多的空间,因此将电路板缩进1

我尝试了几件事,比如让for循环迭代一个列表,取消数字,在expandtabs方法的帮助下对电路板进行tab,在迭代中使用enumerate生成一个异常,我不完全理解。这看起来很容易,但这让我沮丧了一段时间

这是我最初拥有的:

for rows in range(1, 11):
    print(rows, 10 * '* ' + "\n", end='')

这就是我得到的:

1 * * * * * * * * * *
2 * * * * * * * * * *
3 * * * * * * * * * *
4 * * * * * * * * * *
5 * * * * * * * * * *
6 * * * * * * * * * *
7 * * * * * * * * * *
8 * * * * * * * * * *
9 * * * * * * * * * *
10 * * * * * * * * * *

Tags: 方法in列表for空间range数字tab
3条回答

正确格式化:

for rows in range(1, 11):
    print('{:>2d}'.format(rows), 10 * '* ')

收益率:

 1 * * * * * * * * * * 
 2 * * * * * * * * * * 
 3 * * * * * * * * * * 
 4 * * * * * * * * * * 
 5 * * * * * * * * * * 
 6 * * * * * * * * * * 
 7 * * * * * * * * * * 
 8 * * * * * * * * * * 
 9 * * * * * * * * * * 
10 * * * * * * * * * * 

有关格式化的更多信息,请查看thisthis

也许您可以枚举右侧的行,这样数字10就不会缩进,您将收到类似的结果

* * * * * * * * * * 1
* * * * * * * * * * 2
* * * * * * * * * * 3
* * * * * * * * * * 4
* * * * * * * * * * 5
* * * * * * * * * * 6
* * * * * * * * * * 7
* * * * * * * * * * 8
* * * * * * * * * * 9
* * * * * * * * * * 10

或者你可以从cero开始

01 * * * * * * * * * *
02 * * * * * * * * * *
03 * * * * * * * * * *
04 * * * * * * * * * *
05 * * * * * * * * * *
06 * * * * * * * * * *
07 * * * * * * * * * *
08 * * * * * * * * * *
09 * * * * * * * * * *
10 * * * * * * * * * *

如果数字不是10,甚至可以使用条件添加额外的空格,例如:

if(number < 10) 
    print(rows, ' ' + 10 * '* ' + "\n", end='')
else
    print(rows, 10 * '* ' + "\n", end='')

所以你应该得到这样的结果:

1  * * * * * * * * * *
2  * * * * * * * * * *
3  * * * * * * * * * *
4  * * * * * * * * * *
5  * * * * * * * * * *
6  * * * * * * * * * *
7  * * * * * * * * * *
8  * * * * * * * * * *
9  * * * * * * * * * *
10 * * * * * * * * * *

最简单的解决方法是从0开始计算行数,这样就不必使用数字10:

0  * * * * * * * * * *
1  * * * * * * * * * *
2  * * * * * * * * * *
3  * * * * * * * * * *
4  * * * * * * * * * *
5  * * * * * * * * * *
6  * * * * * * * * * *
7  * * * * * * * * * *
8  * * * * * * * * * *
9  * * * * * * * * * *

以下是任意行数的解决方案:

def PrintTable(numOfRows):
    row = numOfRows * ' *'
    formatString = '{}{}{}'.format('{:', len(str(numOfRows)), 'd}{}')
    print('\n'.join([formatString.format(i, row) for i in range(1, numOfRows + 1)]))

相关问题 更多 >