r43 = (
'****',
' ****',
' ****',
)
def rhom(width, height):
if not(isinstance(width, int) and width > 0 and
isinstance(height, int) and height > 0):
raise ValueError('width and height must be positive ints')
stars = width * '*'
for i in range(height):
yield i * ' ' + stars
out43 = tuple(rhom(4, 3))
print(r43 == out43)
for line in out43:
print(line)
def star(m):
def star_line(n):
print('{s:^{f:d}s}'.format(s='*'*n, f=m))
for i in range(1,m,2):
star_line(i)
for i in range(m,0,-2):
star_line(i)
star(5)
*
***
*****
***
*
for i in range(lines+1):
if i<=middle:
for j in range(0, (middle-i)):
print(end=' ')
for j in range(i):
print('*',end=' ')
else:
for j in range(i+middle, lines+1, -1):
print(end=' ')
for j in range(i, lines+1):
print('*', end=' ')
print()
5条答案
按热度按时间s8vozzvw1#
lozenge是等边的,rhomboid通常不是。为了说明,我将做一个菱形,但允许它是等边的。
要定义一个函数,首先应该指定定义域,在本例中是正整数(如果愿意,也可以包含0)。
函数通常应该返回一个对象,该对象可以与给定输入的预期输出进行比较。然后,您可以为示例输出编写一个自动测试。在这种情况下,函数应该生成字符串的可迭代对象。预期输出最容易表示为字符串的元组或列表,如果需要,可以转换函数输出。
印刷品
igetnqfo2#
我更喜欢下面这个,因为它更对称:
这个解决方案使用了Python的新(er)格式化语法的一个很好的特性,它允许你动态地指定字段的宽度以及字段的内容:例如
'{s:^{f:d}}'.format(s='*'*3, f=5)
变为'{s:^5s}'.format(s='***')
,'{s:^5s}'.format(s='***')
变为' *** '
。rqmkfv5c3#
hrysbysz4#
我想这就是你要找的
nzk0hqpo5#
这是你想要的吗
输出: