Как написать консольную программу, которая выведет в консоль букву “V”?
Есть задание: Напишите консольную программу, которая выведет в консоль букву “V”, высота которой вводится с клавиатуры. Пример вывода для высоты 5 представлен ниже:

Самый удачный вариант кода:
h = int(input('Введите высоту фигуры: '))
y = h // 2
for i in range(0, h):
print(' ' * i + 'V', ' ' * (y - i + 3 + h % 2), ' ' * (y - i + 3 + h % 2) + 'V')
Ответы (4 шт):
В приведенной Вами попытке решения есть две проблемы:
- Последнюю строку нужно рисовать не в цикле, чтобы на не было не два символа 'V'
- Количество отступов между символами.
Привожу своё решение этой задачи.
Здесь последний символ рисуется вне цикла отдельным вызовом print
h = int(input('Введите высоту фигуры: '))
for i in range(h-1):
print(' ' * i + 'V' + ' ' * (2* h - 3 - 2 * i) + 'V')
print(' ' * (h-1) + 'V')
SP = " "
V = "V"
h = int(input('Введите высоту фигуры: '))
pairs = [(i, 2 * (h - i) - 3) for i in range(h)]
first_parts = [i*SP + V + j*SP for i, j in pairs]
last_chars = (h-1)*[V] + [""]
for i in range(h):
print(first_parts[i] + last_chars[i])
Объяснение:
pairs- это список пар(пробелов_перед_V, пробелов_после_V)Количество символов в левой половине от вертикальней оси симметрии это константа равна
h-1, т.к. самое последнееV— прямо на оси симметрии — находится на позицииh.V···| <---- i=0 ----> V··· ·V··| <---- i=1 ----> ·V·· ··V.| <---- i=2 ----> ··V. ···V| <---- i=3 ----> ···V ····V <---- i=4 ----> ···· 12345 ↑ 1234 <-h-> | h=5 for i in range(h) (h-1)=4Это константное количество
(h-1)символов заключает в себе- пробелы перед буквой V (
iпозиций), - самую букву V (
1позиция), - пробелы после буквы
V- значит, их будет(h-1) - (i+1).
Всех пробелов между обеими буквами
Vбудет в два раза больше, плюс один пробел прямо в оси симметрии, т. е.2·[(h-1) – (i+1)] + 1 = 2·(h – i – 2) + 1 = 2·(h – i) – 4 + 1 = 2·(h – i) – 3потому пары в генераторе списка именно такие (
(i, 2 * (h - i) - 3)).- пробелы перед буквой V (
список
last_charsнапример такой:["V", "V", "V", "V", "V", ""]т.е. последний элемент – пустая строка.
Мой способ:
h = int(input('Введите высоту фигуры: '))
s=[]
for i in range(h):
s.append(' '*i+"V"+' '*(h+2-i-2))
for l, r_ in zip(s, s[:-1:][::-1]):
if len(r_)>2:
print(l, r_)
print(' '*h+'V')
Вот ещё вариант, для общего развития:
import numpy as np
h = 8
sym="V"
print('\n'.join(''.join(sym if x else " " for x in y ) for y in np.delete
(np.concatenate([np.eye(h, dtype=int),
np.rot90(np.eye(h, dtype=int))], axis=1), h,1)))
V V
V V
V V
V V
V V
V V
V V
V
