Рисуем диагонали квадрата в Python
Задача следующая - напишите программу, которая запрашивает у пользователя сторону квадрата и символ, а затем рисует этот символ по диагоналям квадрата. Гарантируется, что входное число всегда нечетное.
s = int(input('vv chislo: '))
char = str(input('vv simbol: '))
if s % 2 == 1:
for i in range(1, s, 2):
i = ' ' * (i-2) + char + ' ' * (s - (i + 1)) + char + ' ' * (i - 2)
print(i)
for i in range(s, 0, -2):
i = ' ' * (i-2) + char + ' ' * (s - (i + 1)) + char + ' ' * (i - 2)
print(i)
Помогите пожалуйста разобраться с проблемой вывода. В середине выводит 2 символа и с неправильными отступами.
Ответы (2 шт):
Автор решения: mrEvgenX
→ Ссылка
Я могу предложить чуть попроще:
- Хранить список из пробелов (допустимы ли такие накладные расходы?)
- На каждой строчке выставлять символ на нужной диагональной позиции
- Печатать получившуюся строку
- А затем сбрасывать обратно в пробел.
s = int(input('vv chislo: '))
char = str(input('vv simbol: '))
if s % 2 == 1:
current_line = [' '] * s
for i in range(0, s):
current_line[i] = char
current_line[s-1 - i] = char
print(''.join(current_line))
current_line[i] = ' '
current_line[s-1 - i] = ' '
Получается один цикл, довольно прозрачно работает.
Надеюсь, подойдет.
Автор решения: user435200
→ Ссылка
n = int(input('Введите число: '))
s = str(input('Введите символ: '))
for i in range(1, n+1, 2):
if i != n:
print(' ' * (i//2) + s + ' ' * (n - (i + 1)) + s + ' ' * (i//2))
else:
print(" "* (n//2) + s + " "* (n//2))
for i in range(n-2, 0, -2):
print(' ' * (i // 2) + s + ' ' * (n - (i + 1)) + s + ' ' * (i // 2))