Вот функция, чтобы сделать это:
def text_triangle(base, char):
return '\n'.join(' ' * (base-i) + char * i for i in range(1, base+1))
print(text_triangle(6, 'o'))
Не собирается провести тот факт, что вы только что отправленную скриншот против вас, потому что этот вопрос имеет много общего с форматированием, которое трудно представить в уценкой ,
EDIT
Вы получили правильное количество пробелов в каждой строке (хорошая работа!). Проблема с вашим кодом заключалась в том, что вы помещали только одну строку 'o'
на каждую строку, а не заполняли остальную часть строки 'o'
.
base = 6
for r in range(base-1, -1, -1):
for blank in range(0, r):
print(' ', end='')
for o in range(r, base):
print('o', end='')
print()
Чтобы сделать это, мы можем просто написать еще один вложенный для цикла, который улавливает, где последний вложенные для цикла кончил, в r
, и идти до конца строки, base
. Наконец, нам нужно вызвать print()
без аргументов в нижней части основного цикла for, чтобы получить символ новой строки. Надеюсь, это более объяснительно, чем мой быстрый ответ.
Приведенное выше соответствует требованиям вашего учителя, но далеко не лучшее решение. Если бы я должен был ответить на этот вопрос без каких-либо ограничений (то есть с помощью вложенной для-петли), я бы, вероятно, сделать что-то вроде этого:
base = 6
for r in range(base):
print('{:>{}}'.format('o' * (r+1), base))
Это решение использует str.format()
и format specification mini-language направо совместите 'o'
«с.
Возможно, вам нужно скопировать код в вопрос, вместо того, чтобы показывать нам его фотографию. –
, пожалуйста, отправьте содержимое своих изображений в качестве кода в своем сообщении. – phenxd
Ваш учитель дал вам разрешение на помощь в Интернете? Потому что у них в распоряжении много инструментов, чтобы найти учеников, пытающихся обмануть. – JDB