【发布时间】:2017-05-02 04:12:30
【问题描述】:
如何编写一个程序,提示用户输入 1 到 9 之间的数字,包括 1 到 9,然后在控制台上打印一个正方形的文本,如下所示:
1****
22***
333**
4444*
55555
这是我目前所拥有的:
import numpy as np
b_num = raw_input()
b_num = int(b_num)
mat = np.zeros((b_num, b_num)).tolist()
mat = np.char.mod('%.5g', mat)
mat[0:9] = '*'
for i in range(b_num):
for a in range(i):
mat[i, a] = i + 1
mat[0:0] = '1'
mat = '\n'.join(map(str, mat))
mat = mat.replace(']', '')
mat = mat.replace('[', '')
mat = mat.replace('\'', '')
mat = mat.replace(' ', '')
print mat
目前这会输出一个成功的数组如下:
1****
22***
333**
4444*
55555
我不禁想知道是否有更优雅的解决方案。
【问题讨论】:
-
优雅与否是见仁见智,至少你的代码能像你想要的那样工作,也是你所期望的!
标签: python arrays numpy formatting type-conversion