я хочу сделать квадрат на python, но я делаю что-то неправильно

#python

#python

Вопрос:

Я написал этот код: вы вводите ширину квадрата, и он создает единицу, но когда квадрат создается None , он тоже появляется. Почему?

 def square(width):
    if width>=4 and width% 2 ==0:
     inferior_superior(width)
     for i in range(2):
         side(width)
     inferior_superior(width)
def inferior_superior(width):
     print(" "   "-"*(width-2)   " ")
def side(width):
    print('|'   ' '*(width-2)   '|')
  

Комментарии:

1. ни одна из этих функций ничего не возвращает. Так что же именно None ? также, как вы вызываете эту функцию?

2. Ваш код отлично работает для меня. Вы называете это как square(4) . Верно?

3. Вероятно, вы делаете, print(square(8)) в этом случае sqaure() метод возвращает None , который печатается в качестве выходных данных

4. вызовите функцию square со значением > = 4 и делимым на 2 (см. строку 2), например square (16)

Ответ №1:

Обратите внимание, что в командной строке python square работает нормально:

 >>> square(6)
 ---- 
|    |
|    |
 ---- 
  

Однако, если вы напечатаете результат square , вы не увидите ни одного:

 >>> print(square(6))
 ---- 
|    |
|    |
 ---- 
None
  

Решение состоит в том, чтобы использовать square(n) само по себе, а не print(square(n)) .

Альтернатива

Вы можете присвоить возвращаемое значение square , если хотите:

 >>> def square(width):
...     if width>=4 and width% 2 ==0:
...      inferior_superior(width)
...      for i in range(2):
...          side(width)
...      inferior_superior(width)
...      return "Everything works A-OK."
... 
  

Теперь обратите внимание:

 >>> print(square(6))
 ---- 
|    |
|    |
 ---- 
Everything works A-OK.
  

Комментарии:

1. print(square(6)) печатает, None потому что square() функция не возвращает ничего, что обрабатывается как None . И в конечном итоге вы печатаете None значение