Python – нарисовать дерево HW

Мне нужно сделать дерево из *, высота должна быть номером, который пользователь вставляет с еще двумя * для дополнительной строки, а также с черным 1/3.

Кроме того, последняя строка должна быть без пространства раньше. Я сделал весь код, но последняя и самая длинная строка появляется с одним пробелом раньше.

где я?

print "Enter tree height:" height=input() i=1 space=height-1 while i<=2*height: print space*" ",i*"*" i=i+2 space=space-1 trunk=height/3 j=0 while j<trunk: print (height-1)*" ","*" j=j+1 

вывод:

 Enter tree height: 3 * *** ***** * Enter tree height: 8 * *** ***** ******* ********* *********** ************* *************** * * 

3 Solutions collect form web for “Python – нарисовать дерево HW”

попробуйте изменить:

 print space*" ",i*"*" 

от:

 print (space)*" " + i*"*" 

когда вы это сделаете:

 print ' ','3' 

выход отличается от

 print ' '+'3' 

Для этого я бы использовал форматирование строк:

 print "Enter tree height:" height=input() max_width=((height-1)*2)+1 for i in range(1,max_width+1,2): print "{0:^{1:}}".format("*"*i,max_width) # ^ to indent the code in center # as per max_width trunk=height/3 for i in range(trunk): print "{0:^{1:}}".format("*",max_width) 

вывод:

 monty@monty-Aspire-5050:~$ python so27.py Enter tree height: 3 * *** ***** * monty@monty-Aspire-5050:~$ python so27.py Enter tree height: 8 * *** ***** ******* ********* *********** ************* *************** * * 

Вот что я сделал:

 #!/usr/bin/env python3 import math import random class Tree(object): def __init__(self, height=24, width=80, branches=5): self.height = height self.width = width self.branches = branches def draw(self): tree = [[" " for i in range(self.width)] for j in range(self.height)] # These are arbitrary trunk dimensions, you can change them trunk = {} trunk["width"] = math.floor(self.width / 12) trunk["height"] = math.floor(self.height * (2 / 3)) # Center the trunk. (0, 0) is the top-left corner of the screen. trunk["x"] = int(math.floor(self.width / 2) - math.floor(trunk["width"] / 2)) trunk["y"] = int(self.height - trunk["height"]) for i in range(trunk["height"]): for j in range(trunk["width"]): tree[i + trunk["y"]][j + trunk["x"]] = "#" # Add branches for i in range(self.branches): # Choose a position on the side of the trunk branch = {} if random.randint(0, 1): side = -1 branch["x"] = trunk["x"] - 1 else: side = 1 branch["x"] = trunk["x"] + trunk["width"] branch["y"] = random.randint(1, math.floor(trunk["height"] / 2)) + (self.height - trunk["height"]) - 1 tree[branch["y"]][branch["x"]] = "#" # Just sort of squiggle around for a while branch["length"] = math.floor(self.width / 2) for i in range(branch["length"]): direction_determiner = random.randint(0, 10) direction = {} if direction_determiner < 8: direction["x"] = side direction["y"] = 0 else: direction["x"] = 0 direction["y"] = -1 branch["x"] += direction["x"] branch["y"] += direction["y"] if not (0 <= branch["x"] < self.width) or not (0 <= branch["y"] < self.height): break tree[branch["y"]][branch["x"]] = "#" # Add a leaf sometimes if branch["y"] < self.height - 2 and random.randint(0, 1): tree[branch["y"] + 1][branch["x"]] = "." tree[branch["y"] + 2][branch["x"]] = "." # Draw the tree for i in range(self.height): for j in range(self.width): print(tree[i][j], end="") print("") if __name__ == "__main__": tree_drawer = Tree() tree_drawer.draw() 

Это не идеально, но он может выводить что-то вроде этого:

 ~/tmp $ ./tree.py ## ### ######### .##### .######## ######.... ... ... ..#### .. # #### . .... ... ... .. . .##### ###### .... . . . . .# . . .### #.... #### ###### . .# . . . .. #.. ##... .. ..# ########## ##. ####..... .. ...## . . ..## #. . ## . .. .. .# . . ....# ###### .. #### . . ..###### ..# ##############. #.... .. ..### .######## ...############.... .. .. .##### .######## ###.. . ... . . . .. . ######.#.###### ###. .. . ... . . . .. . #.########... . .. . ######## .. ####### ###### ###### ###### ###### ###### ###### ###### ###### 
  • Есть ли у python методы, подобные __setattr__, но для класса python?
  • Модельный шаблон дизайна для Google App Engine
  • Selenium ... Программа работает отлично для Firefox, но не Chrome
  • Элемент Python ElementTree: элемент ElementTree vs root
  • используя индекс () в многомерных списках
  • Как определить, является ли последовательность в Python изменчивой или нет?
  • Чтение большого файла с помощью Python
  • как динамически создавать экземпляр класса в python?
  • Python - лучший язык программирования в мире.