我正在解决这个挑战,其中根据给定的数字,它将显示每个奇数的星号(*)增量。基本上结果应该是,如果我运行下面的函数并将 n_floor 设置为 5,它应该显示下面的结果。我的代码以某种方式迭代每个楼层数并增加每个奇数的 * 但结果失败,但这是因为这些引号之间的星号间距是错误的。有什么想法/提示如何解决这个问题吗?
A。正确结果
[' * ', ' *** ', ' ***** ', ' ******* ', '*********']
Run Code Online (Sandbox Code Playgroud)
b. 我的脚本的结果如下:
['*', '***', '*****', '*******', '*********']
Run Code Online (Sandbox Code Playgroud)
def tower_builder(n_floor):
a = '*'
b = 1
c= 0
result = []
num=range(1, n_floor+1)
# * to increment by odd number
for x in num:
c = a
result.append(c)
a += str('**')
return result
Run Code Online (Sandbox Code Playgroud)
这是计算所需宽度的更好方法:
def tower_builder(n_floor):
result = []
width = (n_floor * 2) - 1
for x in range(1, 2 * n_floor, 2):
stars = x * '*'
line = stars.center(width)
result.append(line)
return result
assert tower_builder(1) == ['*']
assert tower_builder(2) == [' * ', '***']
assert tower_builder(3) == [' * ', ' *** ', '*****']
assert tower_builder(4) == [' * ', ' *** ', ' ***** ', '*******']
assert tower_builder(5) == [' * ', ' *** ', ' ***** ', ' ******* ', '*********']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4218 次 |
| 最近记录: |