Commit a8a36f62 authored by Adrian Cansino's avatar Adrian Cansino

Update family_tree.py

parent 91d1592a
...@@ -343,7 +343,10 @@ def openfile(filename): #Open Method ...@@ -343,7 +343,10 @@ def openfile(filename): #Open Method
for i in range(count): for i in range(count):
name = readF.readline().split()[1] name = readF.readline().split()[1]
age = int(readF.readline().split()[1]) age = int(readF.readline().split()[1])
sex = bool(readF.readline().split()[1]) if readF.readline().split()[1] == "true":
sex = True
else:
sex = False
person = Person(name, age, sex) person = Person(name, age, sex)
atree.insert_person(person) atree.insert_person(person)
...@@ -355,6 +358,7 @@ def openfile(filename): #Open Method ...@@ -355,6 +358,7 @@ def openfile(filename): #Open Method
p2.set_parent(p1) p2.set_parent(p1)
readF.close() readF.close()
atree.precompute()
return atree return atree
def savefile(filename, tree): #Save Method def savefile(filename, tree): #Save Method
...@@ -380,6 +384,83 @@ def savefile(filename, tree): #Save Method ...@@ -380,6 +384,83 @@ def savefile(filename, tree): #Save Method
parent = x.get_parent() parent = x.get_parent()
saveF.write("child " + parent.get_name() + " " + x.get_name() + "\n") saveF.write("child " + parent.get_name() + " " + x.get_name() + "\n")
def commandLine():
tree = FamilyTree()
while True:
cmd = input().split()
if cmd[0] == "count":
print(len(tree.family_tree.items()))
elif cmd[0] == "age":
try:
print(tree.get_person(cmd[1]).get_age())
except KeyError:
print("Error: no such person " + cmd[1])
elif cmd[0] == "sex":
try:
if tree.get_person(cmd[1]).get_sex():
print("male")
else:
print("female")
except KeyError:
print("Error: no such person " + cmd[1])
elif cmd[0] == "ancestors":
try:
if len(tree.get_ancestors(cmd[1])) == 0:
print("(no ancestors)")
else:
for person in tree.get_ancestors(cmd[1]):
print(person)
except KeyError:
print("Error: no such person " + cmd[1])
elif cmd[0] == "descendants":
try:
if len(tree.get_descendants(cmd[1])) == 0:
print("(no descendants)")
else:
for person in tree.get_descendants(cmd[1]):
print(person)
except KeyError:
print("Error: no such person " + cmd[1])
elif cmd[0] == "edit-name":
try:
if tree.family_tree.get(cmd[2]) == None:
tree.get_person(cmd[1]).set_name(cmd[2])
tree.family_tree[cmd[2]] = tree.family_tree[cmd[1]]
del tree.family_tree[cmd[1]]
else:
print("Error: "+cmd[2]+" exists already")
except KeyError:
print("Error: no such person " + cmd[1])
elif cmd[0] == "edit-age":
try:
tree.get_person(cmd[1]).set_name(cmd[2])
except KeyError:
print("Error: no such person " + cmd[1])
elif cmd[0] == "edit-sex":
try:
if cmd[2] == "true":
tree.get_person(cmd[1]).set_sex(True)
else:
tree.get_person(cmd[1]).set_sex(False)
except KeyError:
print("Error: no such person " + cmd[1])
elif cmd[0] == "relationship":
try:
print(tree.relationship(tree.get_person(cmd[1]), tree.get_person(cmd[2])))
except KeyError:
print("Error: one or both persons do not exist")
elif cmd[0] == "load":
tree = openfile(cmd[1])
print(cmd[1] + ".ft has been loaded")
elif cmd[0] == "save":
savefile(cmd[1], tree)
print("file saved")
elif cmd[0] == "bye":
print("Goodbye!")
break
else:
print("Error: no such command")
def main(): def main():
r"""For testing. r"""For testing.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment