Печать прямоугольника, который полый в середине, используя пользовательский ввод и для петель - PullRequest
0 голосов
/ 15 мая 2018

- Моя первая задача - напечатать: -

*** 
* * 
*** 

Что я пробовал:

num = int(input("Enter the size"))

for x in range(1, num+1):
    for y in range(num):
        if (y==0 or y==num) or (x==0 or x==num):
            print("*", end= "")
        else:
           print(end= "")
    print()

Результат при вводе 3 в качестве числа:

*
*
***

Пожалуйста, исправьте мой код, чтобы я мог получить правильный результат для первой цели.

-Мой второй целью является то, что код также должен иметь возможность печатать так, если я введу 4 в num: -

**** 
*  * 
*  * 
****

спасибо

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Ваш оригинальный код почти работает!Вот несколько небольших модификаций, которые заставляют его делать то, что вы хотите.

Первая проблема заключается в том, что вы, похоже, не понимаете, какие диапазоны x и y могут взять.Если вы перебираете диапазон (num), то счетчик в цикле будет находиться в диапазоне от нуля до num - 1, и цикл будет выполняться num раз.Итак, 0 - это первая итерация, а num - 1 - последняя (то есть стороны квадрата).

Вторая проблема заключается в том, что вам нужно печатать пробел, а не просто ничего в предложении else.

Вот исправленная версия:

num = int(input("Enter the size"))

for x in range(num):
    for y in range(num):
        if (y==0 or y==num-1) or (x==0 or x==num-1):
            print("*", end= "")
        else:
            print(" ", end= "")
    print()
0 голосов
/ 15 мая 2018

Более " pythonic " версия вашего кода:

if __name__=='__main__':
    num = int(input("Enter the size "))

    print('*'*num)
    for i in range(num-2):
        print('*'+' '*(num-2)+'*')
    print('*'*num)
...