Python中文
首页
教程
问答
标签
搜索
登录
注册
生成可能有分支终止的树[Python]
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在尝试创建一个脚本,该脚本将按以下方式生成一个树:如果有数字:拆分为3个数字:数字//2,数字*2,数字+15。如果数字是奇数:分成2个数字:数字+1,数字*4。这些分支会一直持续,直到一个分支是:大于100,等于6,一个完全平方(数字的平方根是整数)。我有一个问题,有两个或三个不同的条件分支。这是我的密码:</p> <pre><code>import numpy as np class Node(object): def __init__(self,number,parent): self._parent = parent self._number = number self._satisfied = number > 100 or number == 6 or np.sqrt(number) % 1 == 0 self._branch1 = None self._branch2 = None self._branch3 = None self._depth = parent.depth + 1 if parent != None else 1 @property def parent(self): return self._parent @property def number(self): return self._number @property def satisfied(self): return self._satisfied @property def depth(self): return self._depth @property def branch1(self): return self._branch1 @branch1.setter def branch1(self,value): self._branch1 = value @property def branch2(self): return self._branch2 @branch2.setter def branch2(self,value): self._branch2 = value @property def branch3(self): return self._branch3 @branch3.setter def branch3(self,value): self._branch3 = value def print_all_chains(node,chain=[]): if node.branch1 is None: chain.append(node.number) print '{0}: {1}'.format(node.satisfied, chain) else: print_all_chains(node.branch1, chain[:] + [node.number]) print_all_chains(node.branch2, chain[:] + [node.number]) print_all_chains(node.branch3, chain[:] + [node.number]) def make_daughters(number): if number % 2 == 0: #even daughters = [number // 2, number * 2, number + 15] else: daughters = [number + 1, number * 4, None] return daughters def build_tree(node, maxDepth): if not node.satisfied and node.depth<maxDepth: daughters = make_daughters(node.number) node.branch1 = Node(daughters[0], node) build_tree(node.branch1,maxDepth) node.branch2 = Node(daughters[1], node) build_tree(node.branch2,maxDepth) node.branch3 = Node(daughters[2], node) build_tree(node.branch3, maxDepth) def find_decay(number): root = Node(number,None) build_tree(root,maxDepth=3) print_all_chains(root) if __name__ == '__main__': find_decay(int(raw_input('Number: '))) </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>为什么不使用列表来保存分支信息?然后可以用这种方式重写,而无需在双分支情况下添加<strong>None</strong>类型的元素。你知道吗</p> <pre><code>daughters = make_daughters(node.number) node.branch = [Node(d, node) for d in daughters] </code></pre> <p>无需担心<strong>无</strong>类型元素</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
python语法错误(如果不在Z中,则在X中表示s)
1 回答
Python语法错误(无效)概率
7 回答
python语法错误*带有可选参数的args
10 回答
python语法错误2.5版有什么办法解决吗?
9 回答
Python语法错误2.7.4
10 回答
python语法错误30/09/2013
9 回答
Python语法错误E001
5 回答
Python语法错误not()op
6 回答
python语法错误outpu
5 回答
Python语法错误print len()
10 回答
python语法错误w3
1 回答
Python语法错误不是caugh
2 回答
python语法错误及yt-packag的使用
10 回答
python语法错误可以查出来!!瓦里亚布
9 回答
Python语法错误可能是缩进?
7 回答
Python语法错误和缩进
5 回答
Python语法错误在while循环中生成随机numb
8 回答
Python语法错误在哪里?
10 回答
python语法错误在尝试导入包时,但仅在远程运行时
4 回答
Python语法错误在电子邮件地址提取脚本中
10 回答