带星号的空心矩形

Hollow Rectangle with Asterisks

我知道有很多方法可以做到这一点,但我正在尝试使用范围和 if else 语句打印一个矩形。我的代码在下面有效,但只是因为我在第 7 行的打印语句中硬编码了所需的空格。一旦 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('')

我在修改后得到了代码,可以变成下面的代码,但它仍然不正确,并且在我更改 row 和 cols 变量的值后不起作用。我不确定我需要对我的大小变量做些什么才能灵活地处理 num_rows 和 num_cols 的任何值。是否可以仅使用我目前在我的 class 中所涵盖的内容来完成这项工作,这基本上是大声笑上面的内容。我已经向我的老师寻求帮助,他说我应该先尝试搜索论坛寻求帮助。他说大多数开发人员每天都这样做,所以我需要习惯寻求帮助。

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('')

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</code>(spaces)之间。<br> 第 3 行打印矩形的底部。<br></p> <p>如果 space 打印的数量从 </p> 更改,您的程序应该可以正常工作 <pre><code>print( ' ' * size + '*', end='')

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

需要两个 space,因为在它之前的 print() 中有 end=' '。如果他们的endend='',一个space就够了。