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中两个字典的交集
5 回答
python中两个字符串上的异或操作数?
6 回答
Python中两个字符串中的类似句子
9 回答
Python中两个字符串之间的Hamming距离
5 回答
python中两个字符串之间的匹配模式
1 回答
python中两个字符串之间的按位或
8 回答
python中两个字符串之间的数据(字节)切片
3 回答
python中两个字符串之间的模式
5 回答
python中两个字符串作为子字符串的区别
2 回答
Python中两个字符串元组的比较
4 回答
Python中两个字符串列表中的公共字符串
10 回答
python中两个字符串的Anagram测试
7 回答
Python中两个字符串的正则匹配
6 回答
python中两个字符串的笛卡尔乘积
3 回答
Python中两个字符串相似性的比较
3 回答
python中两个字符串语义相似度的求法
5 回答
Python中两个字符置换成固定长度的字符串,每个字符的数目相等
5 回答
Python中两个对数方程之间的插值和平滑数据
9 回答
Python中两个对象之间的And/Or运算符
9 回答
python中两个嵌套字典中相似键的和值
7 回答