带星号的空心矩形

时间:2018-03-15 18:43:03

标签: python rectangles

我知道有很多方法可以做到这一点,但我正在尝试使用范围和if else语句打印矩形。我的代码在工作之下,但只是因为我在第7行的print语句中硬编码了所需的空格。一旦num_rows或num_cols的值改变,间距就会关闭。我需要做些什么来使其发挥作用?

num_rows = 5
num_cols = 6

for i in range(num_rows):
    print('*', end=' ')
    if i in range(1,num_rows -1):
        print('       ','*', end='')
else:
    for j in range(num_cols-1):
        print('*', end=' ')
print('')

我得到的代码在修补之后变成了下面的代码,但它仍然不是正确的,并且一旦我更改了行和cols变量的值就不起作用。我不确定我需要对我的size变量做什么才能灵活处理并使用num_rows和num_cols的任何值。是否有可能只使用我在课堂上所涉及的内容来完成这项工作,这基本上是上面的lol。我已经向老师求助了,他说我应该先尝试在论坛上寻求帮助。他说,大多数开发人员每天都这样做,所以我需要习惯于寻求帮助。

num_rows = 5
num_cols = 6
size =(num_rows  + 3)

for i in range(num_rows):
    print('*', end=' ')
    if i in range(1,num_rows -1):
        print( ' ' * size + '*', end='')
else:
    for j in range(num_cols-1):
        print('*', end=' ')
print('')

1 个答案:

答案 0 :(得分:1)

Python使用更少的代码更容易完成更多工作。

您可以将矩形设为

print("* "*num_cols, end='')
print(("\n* "+"  "*(num_cols-2)+"* ")*(num_rows-2))
print("* "*num_cols)

第1行打印num_cols * s之后没有换行符。
第2行打印num_rows-2行,每行包含一个*,每行num_cols-2(空格)。
第3行打印矩形的底部。

如果打印的空格数从

更改,您的程序应该可以正常工作
print( ' ' * size + '*', end='')

print( '  ' * (num_cols-2)+ '*', end='')

需要两个空格,因为您之前的end=' '中有print()。如果他们的end成为end='',则只需一个空格。