До сих пор я закодировал способ печати треугольника на основе пользовательского ввода.
Input: 2
Output:
*
***
Input: 3
Output:
*
***
*****
Мой код Python для этого таков:
row = int(input())
for i in range (1, row + 1):
for j in range (1, row - i + 1):
print (end = " ")
for j in range (i, 0, -1):
print ("*", end = "")
for j in range (2, i + 1):
print ("*", end = "")
print()
Как я могу использовать свой текущий код, чтобы получить такой треугольник?
Input: 2
Output:
*
***
* * *
*********
Input: 3
*
***
*****
* * *
*** *** ***
***************
* * * * *
*** *** *** *** ***
*************************
Мне очень нужна чья-то помощь. Я понятия не имею, как подойти к этому.
Вот небольшой алгоритм, который печатает то, что вы хотите. Он обрабатывает любое количество строк:
rows = 3
cols = rows * 2 - 1
# Draws one line of a single triangle (the dimensions are given by 'cols' and 'rows')
def printTriangleLine(line, newline = False):
string = None
if line < 0: string = " " * cols
elif line == rows - 1: string = "*" * cols
else:
string = " " * (rows-(line+1))
string += "*" * (line * 2 +1)
string += " " * (rows-(line+1))
print(string, end = "")
if newline: print()
# Big triangles are constituted of small triangles drawn with 'printTriangleLine'
# They have the same dimensions then the little triangles
def main():
#iterate the big rows
for row in range(0, rows):
# iterates the lines within each little triangle (small rows)
for line in range(0, rows):
# iterates the big columns
for i in range(0, cols):
# finds the blank triangles
blank = row < rows - 1
if blank: blank = i < rows - (row + 1) or i > rows + (row - 1)
# prints adding a newline at the end of the last column
printTriangleLine(-1 if blank else line, i==cols-1)
if __name__ == "__main__":
main()
Выход :
*
***
*****
* * *
*** *** ***
***************
* * * * *
*** *** *** *** ***
*************************
Большое спасибо за это, @dspr! Я только начинаю изучать Python и очень застрял в этом. Еще раз спасибо!