Я пытаюсь отточить свой Python 3 (в частности, вложенные циклы) с помощью старых добрых упражнений с треугольниками (которые пока требуют только нечетного ввода).Тем не менее, я столкнулся с проблемой, с которой я не могу исказить голову.
user_input = 7
x = 1
temp = user_input
spaces = " "
stars = ""
y = temp - 2
t = 0
while x < temp:
while y > t:
stars = "*" * x
spaces = spaces * y
print(spaces + stars)
spaces= " "
y -= 1
x += 2
У меня есть user_input
(сейчас это 7, поэтому мне не нужно вводить каждыйраз бегаю).
Переменная x
и t
, используемая для цикла while
Другая переменная temp
, которая содержит мой user_input
(на случай, если я уменьшу его как 'повреждение 'исходная переменная).
Переменная spaces
и другая переменная stars
(что самоочевидно, поскольку я пытаюсь нарисовать треугольник на основе звездочек).
У меня есть переменная y
, которая равна temp - 2
Ожидаемый результат 7 должен быть таким:
*
***
*****
*******
Причина, по которой я сделал y
равным temp - 2
потому что в первой строке пробелы равны user_input - 2
.
Итак, допустим, что наш вход был 7, количество пробелов в первой строке равно 5.
Если наш вход 9, количество пробелов в первой строке равно 7
Первый *Цикл 1036 * будет повторять цикл от 1 до 7 (1, 3, 5, 7), поэтому я сделал x
равным 1
.
Второй цикл while
должен выполнить цикл из input - 2
до 0.
Странно то, что если мой user_input
равен 5
, он выдает то, что я ожидал.
*
***
*****
Но как только я что-то ввожукак 7
, он строит треугольник от 1 до 9 (1, 3, 5, 7, 9)
*
***
*****
*******
*********
Но я ожидаю, что он закончится прямо перед последней строкой, он должен вывести как можно большезвездочки как мой вклад.
Мой мыслительный процесс неправильный?Если да, то где я в итоге ошибся?
Надеюсь, я все максимально разъяснил.
Спасибо большое.