From 1cd0b6450fe42b89ff6a602b3134176dff5bae25 Mon Sep 17 00:00:00 2001 From: Bronte Wan Date: Thu, 8 Dec 2022 02:42:15 +0000 Subject: [PATCH 1/3] removed global var from functions --- refactoring/initial_global.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/refactoring/initial_global.py b/refactoring/initial_global.py index 21f1323..0a1c279 100644 --- a/refactoring/initial_global.py +++ b/refactoring/initial_global.py @@ -1,16 +1,16 @@ -def average_age(): +def average_age(group): """Compute the average age of the group's members.""" all_ages = [person["age"] for person in group.values()] return sum(all_ages) / len(group) -def forget(person1, person2): +def forget(group, person1, person2): """Remove the connection between two people.""" group[person1]["relations"].pop(person2, None) group[person2]["relations"].pop(person1, None) -def add_person(name, age, job, relations): +def add_person(group, name, age, job, relations): """Add a new person with the given characteristics to the group.""" new_person = { "age": age, @@ -50,12 +50,12 @@ def add_person(name, age, job, relations): "Zalika": "landlord" } -add_person("Nash", 34, "chef", nash_relations) +add_person(group, "Nash", 34, "chef", nash_relations) -forget("Nash", "John") +forget(group, "Nash", "John") if __name__ == "__main__": assert len(group) == 4, "Group should have 4 members" - assert average_age() == 28.75, "Average age of the group is incorrect!" + assert average_age(group) == 28.75, "Average age of the group is incorrect!" assert len(group["Nash"]["relations"]) == 1, "Nash should only have one relation" print("All assertions have passed!") From 094d6625aa02b54738ca167e588f37110f76ee1c Mon Sep 17 00:00:00 2001 From: Bronte Wan Date: Thu, 8 Dec 2022 02:49:20 +0000 Subject: [PATCH 2/3] creating a class and using methods --- refactoring/initial_person_class.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/refactoring/initial_person_class.py b/refactoring/initial_person_class.py index 569d26d..2493f3c 100644 --- a/refactoring/initial_person_class.py +++ b/refactoring/initial_person_class.py @@ -16,7 +16,8 @@ def add_connection(self, person, relation): def forget(self, person): """Removes any connections to a person""" - pass + if person in self.connections: + del self.connections[person] def average_age(group): @@ -28,10 +29,18 @@ def average_age(group): if __name__ == "__main__": # ...then create the group members one by one... jill = Person("Jill", 26, "biologist") + zalika = Person("Zalika", 28, "artist") + john = Person("John", 27, "writer") + nash = Person("Nash", 34, "chef") # ...then add the connections one by one... # Note: this will fail from here if the person objects aren't created jill.add_connection(zalika, "friend") + jill.add_connection(john, "partner") + zalika.add_connection(jill, "friend") + john.add_connection(jill, "partner") + nash.add_connection(john, "cousin") + nash.add_connection(zalika, "landlord") # ... then forget Nash and John's connection nash.forget(john) From b98455ee235cca75ff24b3ee09e5cba5646b2e1b Mon Sep 17 00:00:00 2001 From: Bronte Wan Date: Thu, 8 Dec 2022 03:16:50 +0000 Subject: [PATCH 3/3] OOS --- refactoring/initial_two_classes.py | 31 ++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/refactoring/initial_two_classes.py b/refactoring/initial_two_classes.py index a54d1b3..0a75a05 100644 --- a/refactoring/initial_two_classes.py +++ b/refactoring/initial_two_classes.py @@ -18,7 +18,7 @@ def __init__(self): def size(self): """Return how many people are in the group.""" - pass + return len(self.members) def contains(self, name): """Check whether the group contains a person with the given name. @@ -32,17 +32,32 @@ def add_person(self, name, age, job): def number_of_connections(self, name): """Find the number of connections that a person in the group has""" - pass + if name in self.connections: + return len(self.connections[name]) + else: + return 0 def connect(self, name1, name2, relation, reciprocal=True): """Connect two given people in a particular way. Optional reciprocal: If true, will add the relationship from name2 to name 1 as well """ - pass + if self.number_of_connections(name1) != 0: + self.connections[name1] += [(name2, relation)] + else: + self.connections[name1] = [(name2, relation)] + if reciprocal: + self.connect(name2, name1, relation, False) def forget(self, name1, name2): """Remove the connection between two people.""" - pass + if self.number_of_connections(name1) != 0: + for connection in self.connections[name1]: + if connection[0] == name2: + self.connections[name1].remove(connection) + if self.number_of_connections(name2) != 0: + for connection in self.connections[name2]: + if connection[0] == name1: + self.connections[name2].remove(connection) def average_age(self): """Compute the average age of the group's members.""" @@ -55,8 +70,16 @@ def average_age(self): my_group = Group() # ...then add the group members one by one... my_group.add_person("Jill", 26, "biologist") + my_group.add_person("Zalika", 28, "artist") + my_group.add_person("John", 27, "writer") + my_group.add_person("Nash", 34, "chef") + # ...then their connections my_group.connect("Jill", "Zalika", "friend") + my_group.connect("Jill", "John", "partner") + my_group.connect("Nash", "John", "cousin") + my_group.connect("Nash", "Zalika", "landlord", False) + # ... then forget Nash and John's connection my_group.forget("Nash", "John")