FP: Aula10 updated guide with 2 more exercices and their solutions

This commit is contained in:
TiagoRG 2023-01-17 19:51:24 +00:00
parent 15a9448b12
commit 62b27c9e0b
Signed by untrusted user who does not match committer: TiagoRG
GPG Key ID: DFCD48E3F420DB42
3 changed files with 54 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1,27 @@
def explodeObject(name, obj):
"""Print the name and representation (repr) of an object,
followed by the name and representation of each of its elements,
if the object is a list, tuple or dict.
"""
print(f"{name} = {obj!r}") # !r converts object to its repr!
# print("{} = {!r}".format(name, obj)) # equivalent
if type(obj) in (list, tuple, set): # if obj is a list, tuple or set...
for i, item in enumerate(obj):
explodeObject(f"{name}[{i}]", item)
elif type(obj) is dict: # if obj is a dict...
for key, value in obj.items():
explodeObject(f"{name}[{key!r}]", value)
# call recursively for each of its elements
# Then do something similar for tuples and dicts
def main():
obj1 = [1, ["a", ["b", 2], 3], 4]
obj2 = [1, "ola", (2, [[3, 4], 5, ("adeus", 6)], 7)]
obj3 = [1, {"ola": "hello", "adeus": ["bye", "adieu"]}, (2, [[3, 4], 5], 6)]
eval(input())
if __name__ == "__main__":
main()

View File

@ -0,0 +1,27 @@
def getAllStrings(obj):
"""Get a list with all the strings contained in the given object."""
lst = []
if isinstance(obj, str): # if obj is a string, just store it
lst.append(obj)
# If obj is a list, etc., we must call recursively for each of its elements
elif type(obj) in (list, tuple, set):
for elem in obj:
lst.extend(getAllStrings(elem))
elif type(obj) is dict:
for key in obj:
lst.extend(getAllStrings(key))
lst.extend(getAllStrings(obj[key]))
return lst
def main():
obj1 = ["one", 2, ["three", 4, [5, "six"]]]
obj2 = [1, "a", ("b", [{"c", "d", 2}, 3, (4, "e")], "f")]
obj3 = {"a": 1, "b": ["c", "d"], (2, ("x", 3)): obj1}
print(eval(input()))
if __name__ == "__main__":
main()