From 88fd8db4f7238663d9af21094f53634e9e3bab53 Mon Sep 17 00:00:00 2001 From: ziad-jradeh Date: Sun, 5 Feb 2023 12:28:37 +0100 Subject: [PATCH 1/6] added answer_1 and answer_2 --- .gitignore | 2 ++ answer_1/answer_1.py | 23 +++++++++++++++++++++++ answer_1/letters.txt | 18 ++++++++++++++++++ asnwer_2/answer_2.py | 13 +++++++++++++ asnwer_2/text_files/A.txt | 0 asnwer_2/text_files/B.txt | 0 asnwer_2/text_files/C.txt | 0 asnwer_2/text_files/D.txt | 0 asnwer_2/text_files/E.txt | 0 asnwer_2/text_files/F.txt | 0 asnwer_2/text_files/G.txt | 0 asnwer_2/text_files/H.txt | 0 asnwer_2/text_files/I.txt | 0 asnwer_2/text_files/J.txt | 0 asnwer_2/text_files/K.txt | 0 asnwer_2/text_files/L.txt | 0 asnwer_2/text_files/M.txt | 0 asnwer_2/text_files/N.txt | 0 asnwer_2/text_files/O.txt | 0 asnwer_2/text_files/P.txt | 0 asnwer_2/text_files/Q.txt | 0 asnwer_2/text_files/R.txt | 0 asnwer_2/text_files/S.txt | 0 asnwer_2/text_files/T.txt | 0 asnwer_2/text_files/U.txt | 0 asnwer_2/text_files/V.txt | 0 asnwer_2/text_files/W.txt | 0 asnwer_2/text_files/X.txt | 0 asnwer_2/text_files/Y.txt | 0 asnwer_2/text_files/Z.txt | 0 30 files changed, 56 insertions(+) create mode 100644 .gitignore create mode 100644 answer_1/answer_1.py create mode 100644 answer_1/letters.txt create mode 100644 asnwer_2/answer_2.py create mode 100644 asnwer_2/text_files/A.txt create mode 100644 asnwer_2/text_files/B.txt create mode 100644 asnwer_2/text_files/C.txt create mode 100644 asnwer_2/text_files/D.txt create mode 100644 asnwer_2/text_files/E.txt create mode 100644 asnwer_2/text_files/F.txt create mode 100644 asnwer_2/text_files/G.txt create mode 100644 asnwer_2/text_files/H.txt create mode 100644 asnwer_2/text_files/I.txt create mode 100644 asnwer_2/text_files/J.txt create mode 100644 asnwer_2/text_files/K.txt create mode 100644 asnwer_2/text_files/L.txt create mode 100644 asnwer_2/text_files/M.txt create mode 100644 asnwer_2/text_files/N.txt create mode 100644 asnwer_2/text_files/O.txt create mode 100644 asnwer_2/text_files/P.txt create mode 100644 asnwer_2/text_files/Q.txt create mode 100644 asnwer_2/text_files/R.txt create mode 100644 asnwer_2/text_files/S.txt create mode 100644 asnwer_2/text_files/T.txt create mode 100644 asnwer_2/text_files/U.txt create mode 100644 asnwer_2/text_files/V.txt create mode 100644 asnwer_2/text_files/W.txt create mode 100644 asnwer_2/text_files/X.txt create mode 100644 asnwer_2/text_files/Y.txt create mode 100644 asnwer_2/text_files/Z.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..da8d1e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +.vscode/settings.json diff --git a/answer_1/answer_1.py b/answer_1/answer_1.py new file mode 100644 index 0000000..a8bf2ad --- /dev/null +++ b/answer_1/answer_1.py @@ -0,0 +1,23 @@ +import string +import os + +all_letters = string.ascii_lowercase + string.ascii_uppercase + +current_path = os.path.dirname(os.path.realpath(__file__)) +file_path = os.path.join(current_path, "letters.txt") + +while True: + try: + num_of_letters_in_line = int(input(f"How many letters in a line? [between 1 and {str(len(all_letters))}] ")) + assert num_of_letters_in_line > 0 and num_of_letters_in_line <= len(all_letters) + break + except ValueError: + print("Error: not an integer!") + except AssertionError: + print(f"Error: not between 1 and {str(len(all_letters))}") + +with open(file_path, "w") as f: + for index, letter in enumerate(all_letters): + f.write(letter) + if (index + 1) % num_of_letters_in_line == 0: + f.write("\n") diff --git a/answer_1/letters.txt b/answer_1/letters.txt new file mode 100644 index 0000000..15614e5 --- /dev/null +++ b/answer_1/letters.txt @@ -0,0 +1,18 @@ +abc +def +ghi +jkl +mno +pqr +stu +vwx +yzA +BCD +EFG +HIJ +KLM +NOP +QRS +TUV +WXY +Z \ No newline at end of file diff --git a/asnwer_2/answer_2.py b/asnwer_2/answer_2.py new file mode 100644 index 0000000..42df577 --- /dev/null +++ b/asnwer_2/answer_2.py @@ -0,0 +1,13 @@ +import string +import os + +current_path = os.path.dirname(os.path.realpath(__file__)) +folder_path = os.path.join(current_path, "text_files") + +if not os.path.exists(folder_path): + os.mkdir(folder_path) +os.chdir(folder_path) + +for letter in string.ascii_uppercase: + open(f"{letter}.txt", "w").close() + \ No newline at end of file diff --git a/asnwer_2/text_files/A.txt b/asnwer_2/text_files/A.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/B.txt b/asnwer_2/text_files/B.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/C.txt b/asnwer_2/text_files/C.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/D.txt b/asnwer_2/text_files/D.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/E.txt b/asnwer_2/text_files/E.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/F.txt b/asnwer_2/text_files/F.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/G.txt b/asnwer_2/text_files/G.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/H.txt b/asnwer_2/text_files/H.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/I.txt b/asnwer_2/text_files/I.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/J.txt b/asnwer_2/text_files/J.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/K.txt b/asnwer_2/text_files/K.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/L.txt b/asnwer_2/text_files/L.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/M.txt b/asnwer_2/text_files/M.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/N.txt b/asnwer_2/text_files/N.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/O.txt b/asnwer_2/text_files/O.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/P.txt b/asnwer_2/text_files/P.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/Q.txt b/asnwer_2/text_files/Q.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/R.txt b/asnwer_2/text_files/R.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/S.txt b/asnwer_2/text_files/S.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/T.txt b/asnwer_2/text_files/T.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/U.txt b/asnwer_2/text_files/U.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/V.txt b/asnwer_2/text_files/V.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/W.txt b/asnwer_2/text_files/W.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/X.txt b/asnwer_2/text_files/X.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/Y.txt b/asnwer_2/text_files/Y.txt new file mode 100644 index 0000000..e69de29 diff --git a/asnwer_2/text_files/Z.txt b/asnwer_2/text_files/Z.txt new file mode 100644 index 0000000..e69de29 From 0e5398b8a980a0044389ae968cc224c2f14b0c04 Mon Sep 17 00:00:00 2001 From: ziad-jradeh Date: Sun, 5 Feb 2023 12:29:47 +0100 Subject: [PATCH 2/6] fixed typo --- {asnwer_2 => answer_2}/answer_2.py | 0 {asnwer_2 => answer_2}/text_files/A.txt | 0 {asnwer_2 => answer_2}/text_files/B.txt | 0 {asnwer_2 => answer_2}/text_files/C.txt | 0 {asnwer_2 => answer_2}/text_files/D.txt | 0 {asnwer_2 => answer_2}/text_files/E.txt | 0 {asnwer_2 => answer_2}/text_files/F.txt | 0 {asnwer_2 => answer_2}/text_files/G.txt | 0 {asnwer_2 => answer_2}/text_files/H.txt | 0 {asnwer_2 => answer_2}/text_files/I.txt | 0 {asnwer_2 => answer_2}/text_files/J.txt | 0 {asnwer_2 => answer_2}/text_files/K.txt | 0 {asnwer_2 => answer_2}/text_files/L.txt | 0 {asnwer_2 => answer_2}/text_files/M.txt | 0 {asnwer_2 => answer_2}/text_files/N.txt | 0 {asnwer_2 => answer_2}/text_files/O.txt | 0 {asnwer_2 => answer_2}/text_files/P.txt | 0 {asnwer_2 => answer_2}/text_files/Q.txt | 0 {asnwer_2 => answer_2}/text_files/R.txt | 0 {asnwer_2 => answer_2}/text_files/S.txt | 0 {asnwer_2 => answer_2}/text_files/T.txt | 0 {asnwer_2 => answer_2}/text_files/U.txt | 0 {asnwer_2 => answer_2}/text_files/V.txt | 0 {asnwer_2 => answer_2}/text_files/W.txt | 0 {asnwer_2 => answer_2}/text_files/X.txt | 0 {asnwer_2 => answer_2}/text_files/Y.txt | 0 {asnwer_2 => answer_2}/text_files/Z.txt | 0 27 files changed, 0 insertions(+), 0 deletions(-) rename {asnwer_2 => answer_2}/answer_2.py (100%) rename {asnwer_2 => answer_2}/text_files/A.txt (100%) rename {asnwer_2 => answer_2}/text_files/B.txt (100%) rename {asnwer_2 => answer_2}/text_files/C.txt (100%) rename {asnwer_2 => answer_2}/text_files/D.txt (100%) rename {asnwer_2 => answer_2}/text_files/E.txt (100%) rename {asnwer_2 => answer_2}/text_files/F.txt (100%) rename {asnwer_2 => answer_2}/text_files/G.txt (100%) rename {asnwer_2 => answer_2}/text_files/H.txt (100%) rename {asnwer_2 => answer_2}/text_files/I.txt (100%) rename {asnwer_2 => answer_2}/text_files/J.txt (100%) rename {asnwer_2 => answer_2}/text_files/K.txt (100%) rename {asnwer_2 => answer_2}/text_files/L.txt (100%) rename {asnwer_2 => answer_2}/text_files/M.txt (100%) rename {asnwer_2 => answer_2}/text_files/N.txt (100%) rename {asnwer_2 => answer_2}/text_files/O.txt (100%) rename {asnwer_2 => answer_2}/text_files/P.txt (100%) rename {asnwer_2 => answer_2}/text_files/Q.txt (100%) rename {asnwer_2 => answer_2}/text_files/R.txt (100%) rename {asnwer_2 => answer_2}/text_files/S.txt (100%) rename {asnwer_2 => answer_2}/text_files/T.txt (100%) rename {asnwer_2 => answer_2}/text_files/U.txt (100%) rename {asnwer_2 => answer_2}/text_files/V.txt (100%) rename {asnwer_2 => answer_2}/text_files/W.txt (100%) rename {asnwer_2 => answer_2}/text_files/X.txt (100%) rename {asnwer_2 => answer_2}/text_files/Y.txt (100%) rename {asnwer_2 => answer_2}/text_files/Z.txt (100%) diff --git a/asnwer_2/answer_2.py b/answer_2/answer_2.py similarity index 100% rename from asnwer_2/answer_2.py rename to answer_2/answer_2.py diff --git a/asnwer_2/text_files/A.txt b/answer_2/text_files/A.txt similarity index 100% rename from asnwer_2/text_files/A.txt rename to answer_2/text_files/A.txt diff --git a/asnwer_2/text_files/B.txt b/answer_2/text_files/B.txt similarity index 100% rename from asnwer_2/text_files/B.txt rename to answer_2/text_files/B.txt diff --git a/asnwer_2/text_files/C.txt b/answer_2/text_files/C.txt similarity index 100% rename from asnwer_2/text_files/C.txt rename to answer_2/text_files/C.txt diff --git a/asnwer_2/text_files/D.txt b/answer_2/text_files/D.txt similarity index 100% rename from asnwer_2/text_files/D.txt rename to answer_2/text_files/D.txt diff --git a/asnwer_2/text_files/E.txt b/answer_2/text_files/E.txt similarity index 100% rename from asnwer_2/text_files/E.txt rename to answer_2/text_files/E.txt diff --git a/asnwer_2/text_files/F.txt b/answer_2/text_files/F.txt similarity index 100% rename from asnwer_2/text_files/F.txt rename to answer_2/text_files/F.txt diff --git a/asnwer_2/text_files/G.txt b/answer_2/text_files/G.txt similarity index 100% rename from asnwer_2/text_files/G.txt rename to answer_2/text_files/G.txt diff --git a/asnwer_2/text_files/H.txt b/answer_2/text_files/H.txt similarity index 100% rename from asnwer_2/text_files/H.txt rename to answer_2/text_files/H.txt diff --git a/asnwer_2/text_files/I.txt b/answer_2/text_files/I.txt similarity index 100% rename from asnwer_2/text_files/I.txt rename to answer_2/text_files/I.txt diff --git a/asnwer_2/text_files/J.txt b/answer_2/text_files/J.txt similarity index 100% rename from asnwer_2/text_files/J.txt rename to answer_2/text_files/J.txt diff --git a/asnwer_2/text_files/K.txt b/answer_2/text_files/K.txt similarity index 100% rename from asnwer_2/text_files/K.txt rename to answer_2/text_files/K.txt diff --git a/asnwer_2/text_files/L.txt b/answer_2/text_files/L.txt similarity index 100% rename from asnwer_2/text_files/L.txt rename to answer_2/text_files/L.txt diff --git a/asnwer_2/text_files/M.txt b/answer_2/text_files/M.txt similarity index 100% rename from asnwer_2/text_files/M.txt rename to answer_2/text_files/M.txt diff --git a/asnwer_2/text_files/N.txt b/answer_2/text_files/N.txt similarity index 100% rename from asnwer_2/text_files/N.txt rename to answer_2/text_files/N.txt diff --git a/asnwer_2/text_files/O.txt b/answer_2/text_files/O.txt similarity index 100% rename from asnwer_2/text_files/O.txt rename to answer_2/text_files/O.txt diff --git a/asnwer_2/text_files/P.txt b/answer_2/text_files/P.txt similarity index 100% rename from asnwer_2/text_files/P.txt rename to answer_2/text_files/P.txt diff --git a/asnwer_2/text_files/Q.txt b/answer_2/text_files/Q.txt similarity index 100% rename from asnwer_2/text_files/Q.txt rename to answer_2/text_files/Q.txt diff --git a/asnwer_2/text_files/R.txt b/answer_2/text_files/R.txt similarity index 100% rename from asnwer_2/text_files/R.txt rename to answer_2/text_files/R.txt diff --git a/asnwer_2/text_files/S.txt b/answer_2/text_files/S.txt similarity index 100% rename from asnwer_2/text_files/S.txt rename to answer_2/text_files/S.txt diff --git a/asnwer_2/text_files/T.txt b/answer_2/text_files/T.txt similarity index 100% rename from asnwer_2/text_files/T.txt rename to answer_2/text_files/T.txt diff --git a/asnwer_2/text_files/U.txt b/answer_2/text_files/U.txt similarity index 100% rename from asnwer_2/text_files/U.txt rename to answer_2/text_files/U.txt diff --git a/asnwer_2/text_files/V.txt b/answer_2/text_files/V.txt similarity index 100% rename from asnwer_2/text_files/V.txt rename to answer_2/text_files/V.txt diff --git a/asnwer_2/text_files/W.txt b/answer_2/text_files/W.txt similarity index 100% rename from asnwer_2/text_files/W.txt rename to answer_2/text_files/W.txt diff --git a/asnwer_2/text_files/X.txt b/answer_2/text_files/X.txt similarity index 100% rename from asnwer_2/text_files/X.txt rename to answer_2/text_files/X.txt diff --git a/asnwer_2/text_files/Y.txt b/answer_2/text_files/Y.txt similarity index 100% rename from asnwer_2/text_files/Y.txt rename to answer_2/text_files/Y.txt diff --git a/asnwer_2/text_files/Z.txt b/answer_2/text_files/Z.txt similarity index 100% rename from asnwer_2/text_files/Z.txt rename to answer_2/text_files/Z.txt From 04f896aa0cf37e019c5da0dd6877d34b0f61aef3 Mon Sep 17 00:00:00 2001 From: ziad-jradeh Date: Sun, 5 Feb 2023 13:38:46 +0100 Subject: [PATCH 3/6] added answer_3 --- answer_1/answer_1.py | 4 +++- answer_1/letters.txt | 29 +++++++++++------------------ answer_2/answer_2.py | 2 ++ answer_3/answer_3.py | 23 +++++++++++++++++++++++ 4 files changed, 39 insertions(+), 19 deletions(-) create mode 100644 answer_3/answer_3.py diff --git a/answer_1/answer_1.py b/answer_1/answer_1.py index a8bf2ad..fd6b848 100644 --- a/answer_1/answer_1.py +++ b/answer_1/answer_1.py @@ -4,8 +4,9 @@ all_letters = string.ascii_lowercase + string.ascii_uppercase current_path = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(current_path, "letters.txt") +file_path = os.path.join(current_path, "letters.txt") # The path to the result file +# take user input, only accept integers between 1 and 52 while True: try: num_of_letters_in_line = int(input(f"How many letters in a line? [between 1 and {str(len(all_letters))}] ")) @@ -16,6 +17,7 @@ except AssertionError: print(f"Error: not between 1 and {str(len(all_letters))}") +# write the letters to the file with open(file_path, "w") as f: for index, letter in enumerate(all_letters): f.write(letter) diff --git a/answer_1/letters.txt b/answer_1/letters.txt index 15614e5..b54f991 100644 --- a/answer_1/letters.txt +++ b/answer_1/letters.txt @@ -1,18 +1,11 @@ -abc -def -ghi -jkl -mno -pqr -stu -vwx -yzA -BCD -EFG -HIJ -KLM -NOP -QRS -TUV -WXY -Z \ No newline at end of file +abcde +fghij +klmno +pqrst +uvwxy +zABCD +EFGHI +JKLMN +OPQRS +TUVWX +YZ \ No newline at end of file diff --git a/answer_2/answer_2.py b/answer_2/answer_2.py index 42df577..7e43270 100644 --- a/answer_2/answer_2.py +++ b/answer_2/answer_2.py @@ -4,10 +4,12 @@ current_path = os.path.dirname(os.path.realpath(__file__)) folder_path = os.path.join(current_path, "text_files") +# Create a folder if it does not exist if not os.path.exists(folder_path): os.mkdir(folder_path) os.chdir(folder_path) +# Create a file for each letter in the alphabet for letter in string.ascii_uppercase: open(f"{letter}.txt", "w").close() \ No newline at end of file diff --git a/answer_3/answer_3.py b/answer_3/answer_3.py new file mode 100644 index 0000000..aea7719 --- /dev/null +++ b/answer_3/answer_3.py @@ -0,0 +1,23 @@ +import math + + +def lcm(*numbers): + ''' A recursive function to find the least common multiple of a list of numbers. ''' + if len(numbers) == 2: + # the LCM of two numbers: LCM(a, b) = a * b / gcd(a, b) + return int(numbers[0] * numbers[1]/ math.gcd(numbers[0], numbers[1])) + else: + # the LCM of the first number and the LCM of the rest of the numbers + return lcm(numbers[0], lcm(*numbers[1:])) + + +numbers = [] +# ask the user to enter 4 numbers, only accept integers +while len(numbers) < 4: + try: + numbers.append(int(input("Enter a number: "))) + except ValueError: + print("Error: Not a number! Try again.") + +# calculate the least common multiple of the 4 numbers +print(f"L.C.M of {numbers} is: {lcm(*numbers)}") From 3cb5ea398270a31f0c6e3665af247e9429e76599 Mon Sep 17 00:00:00 2001 From: ziad-jradeh Date: Sun, 5 Feb 2023 14:55:07 +0100 Subject: [PATCH 4/6] added answer_4 --- answer_4/answer_4.py | 43 ++++++++++++++++++ .../__pycache__/add_function.cpython-310.pyc | Bin 0 -> 345 bytes .../divide_function.cpython-310.pyc | Bin 0 -> 471 bytes .../multiply_function.cpython-310.pyc | Bin 0 -> 355 bytes .../__pycache__/sub_function.cpython-310.pyc | Bin 0 -> 345 bytes answer_4/operations_functions/add_function.py | 4 ++ .../operations_functions/divide_function.py | 9 ++++ .../operations_functions/multiply_function.py | 4 ++ answer_4/operations_functions/sub_function.py | 4 ++ 9 files changed, 64 insertions(+) create mode 100644 answer_4/answer_4.py create mode 100644 answer_4/operations_functions/__pycache__/add_function.cpython-310.pyc create mode 100644 answer_4/operations_functions/__pycache__/divide_function.cpython-310.pyc create mode 100644 answer_4/operations_functions/__pycache__/multiply_function.cpython-310.pyc create mode 100644 answer_4/operations_functions/__pycache__/sub_function.cpython-310.pyc create mode 100644 answer_4/operations_functions/add_function.py create mode 100644 answer_4/operations_functions/divide_function.py create mode 100644 answer_4/operations_functions/multiply_function.py create mode 100644 answer_4/operations_functions/sub_function.py diff --git a/answer_4/answer_4.py b/answer_4/answer_4.py new file mode 100644 index 0000000..1a1244c --- /dev/null +++ b/answer_4/answer_4.py @@ -0,0 +1,43 @@ +import os +import sys + +current_path = os.path.dirname(os.path.realpath(__file__)) +operations_directory = os.path.join(current_path, 'operations_functions\\') +sys.path.append(operations_directory) # Adds the operations_functions directory to the Python path + +# Imports the functions from the operations_functions directory +import add_function, sub_function, multiply_function, divide_function + +def input_and_check(prompt, accepted_inputs, error_prompt='Error: Invalid input!'): + ''' A function to check if the user input is in the accepted inputs. Returns the input if it is accepted. Otherwise, repeat.''' + while True: + input_string = input(prompt) + try: + if accepted_inputs == 'numbers': # if the accepted input is a number (float) + return float(input_string) + else: + assert input_string in accepted_inputs + return input_string + except (AssertionError, ValueError): + print(error_prompt) + + +# The main loop +while True: + number_1 = input_and_check('Enter first number: ', 'numbers', 'Error: Input must be a float value!') + number_2 = input_and_check('Enter second number: ', 'numbers', 'Error: Input must be a float value!') + operation = input_and_check('Choose an operation: [+, -, *, /]: ', ['+', '-', '*', '/'], 'Error: Invalid operation! Try again.') + + + if operation == '+': + print(f'{number_1} + {number_2} = {add_function.add(number_1, number_2)}') + elif operation == '-': + print(f'{number_1} - {number_2} = {sub_function.sub(number_1, number_2)}') + elif operation == '*': + print(f'{number_1} * {number_2} = {multiply_function.multiply(number_1, number_2)}') + elif operation == '/': + print(f'{number_1} / {number_2} = {divide_function.divide(number_1, number_2)}') + + if input_and_check('Do you want to continue? (Y/N): ', ['Y', 'y', 'N', 'n']).upper() == 'N': + break + diff --git a/answer_4/operations_functions/__pycache__/add_function.cpython-310.pyc b/answer_4/operations_functions/__pycache__/add_function.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c3a653f095bea88ef7fd4a46ede57e2eca766a67 GIT binary patch literal 345 zcmYk1ze)r#5XL9jRS)s55`2a&Vs(WaBEtITY|cVNSOP~bi5kpimt+?euJjqK&rQB`;7AMXn%A zzi|RH88`nT_9-eyg%PF(R%8iFvIlSRhRibBrKM=@i&Sc3k%;KX;vM`3ZvV9TgkJ~k z122qF{G^g?sa+HJxoM{Dg6CF*aKLV~ei*YeV>P>Am+bUO>bfzNV^iUjHSUfJ7ap~r zk9k#VFXAlBZ(Aq(jtiy!X}^B%5`0La<>-Gz{1%ps`bd4>n_EkpIOqn4Wu;oHj|ftT JzaGF2{RP0%Puc(g literal 0 HcmV?d00001 diff --git a/answer_4/operations_functions/__pycache__/divide_function.cpython-310.pyc b/answer_4/operations_functions/__pycache__/divide_function.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..10af0d3760df4566d62dac2e44b14a23e0450145 GIT binary patch literal 471 zcmYjNy-ve05WaImDX1VoVq)oplp#zV5JCu%7RpkF3ROgrDmOM@;Utxv&>wYV<{4mQ zEDTJ%0t?u!ih9<4zVGgIf9b}?Iv9C=|BOD&|7FRt5JOIl>Y4!t3?;-EAX=M9 z5)f8m&JzSBMmpfGe48wAvDj>gN1;WUoQ(sn(spF)EX3LsqrOqSZ(vf%;032J#XWe% zE_A?wjEr{>?7J~tJ1_*7v?sehO_DULF;kxLT7O)dnDTC^aAKO>7f!^5EVgaS#Q;sE zQst5YX@UJWP`2^U$Uh3NHCH+e1Z80(jq;c$nGP>R*2?>#FR9jtUYGNSx_2%l_b$CF zuQ`hNATvvOEt)VXlDm*5ddO9;9;O4XsEz5~ZJtCkE1XaH?>HEYi}Kv(*wyXj32tE( v%Se8erLGgKG9HPTN@dTaN)~KnHuw^(8DCL3j#HLPeu9SSvVkg8uuA>_#U^z5 literal 0 HcmV?d00001 diff --git a/answer_4/operations_functions/__pycache__/multiply_function.cpython-310.pyc b/answer_4/operations_functions/__pycache__/multiply_function.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4349a6e743ff3c81af26393d008f933e6c059066 GIT binary patch literal 355 zcmYjMJxc^J5S`=}UBtWU{=^osx1ICR zRjnHlJwLx|o$MJeTN_Mmm;bH3dfBDx?jRl?KN*oG#gfq`s-E{}ZooDgU3yqnsOt5|>SdR?h80B{{Nsz=q1u~QQ3sgjsD=3R^ zoWNY9&A&)}ftsTH2vdMpvVqg!iQW0JnkLKT%BBwO7uw zN^{9hS`iy%gJ Date: Sun, 5 Feb 2023 15:00:40 +0100 Subject: [PATCH 5/6] updated --- answer_1/answer_1.py | 6 +++--- answer_1/letters.txt | 20 +++++++++----------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/answer_1/answer_1.py b/answer_1/answer_1.py index fd6b848..89cd9ff 100644 --- a/answer_1/answer_1.py +++ b/answer_1/answer_1.py @@ -9,13 +9,13 @@ # take user input, only accept integers between 1 and 52 while True: try: - num_of_letters_in_line = int(input(f"How many letters in a line? [between 1 and {str(len(all_letters))}] ")) - assert num_of_letters_in_line > 0 and num_of_letters_in_line <= len(all_letters) + num_of_letters_in_line = int(input(f"How many letters in a line? [between 1 and {len(all_letters)}] ")) + assert 0 < num_of_letters_in_line <= len(all_letters) break except ValueError: print("Error: not an integer!") except AssertionError: - print(f"Error: not between 1 and {str(len(all_letters))}") + print(f"Error: not between 1 and {len(all_letters)}") # write the letters to the file with open(file_path, "w") as f: diff --git a/answer_1/letters.txt b/answer_1/letters.txt index b54f991..88aa946 100644 --- a/answer_1/letters.txt +++ b/answer_1/letters.txt @@ -1,11 +1,9 @@ -abcde -fghij -klmno -pqrst -uvwxy -zABCD -EFGHI -JKLMN -OPQRS -TUVWX -YZ \ No newline at end of file +abcdef +ghijkl +mnopqr +stuvwx +yzABCD +EFGHIJ +KLMNOP +QRSTUV +WXYZ \ No newline at end of file From 1c8c6b0c71099ff8e4c2ba3662c63cf631d625f4 Mon Sep 17 00:00:00 2001 From: ziad-jradeh Date: Mon, 6 Feb 2023 21:00:43 +0100 Subject: [PATCH 6/6] updated --- answer_1/answer_1.py | 11 +++++------ answer_1/letters.txt | 27 ++++++++++++++++++--------- answer_4/answer_4.py | 7 +++---- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/answer_1/answer_1.py b/answer_1/answer_1.py index 89cd9ff..dcfdd0d 100644 --- a/answer_1/answer_1.py +++ b/answer_1/answer_1.py @@ -1,7 +1,7 @@ import string import os -all_letters = string.ascii_lowercase + string.ascii_uppercase +all_letters = string.ascii_letters current_path = os.path.dirname(os.path.realpath(__file__)) file_path = os.path.join(current_path, "letters.txt") # The path to the result file @@ -18,8 +18,7 @@ print(f"Error: not between 1 and {len(all_letters)}") # write the letters to the file -with open(file_path, "w") as f: - for index, letter in enumerate(all_letters): - f.write(letter) - if (index + 1) % num_of_letters_in_line == 0: - f.write("\n") +with open(file_path, "w") as f: + for i in range(0, len(all_letters), num_of_letters_in_line): + f.writelines(all_letters[i:i+num_of_letters_in_line] + '\n') + diff --git a/answer_1/letters.txt b/answer_1/letters.txt index 88aa946..8525f88 100644 --- a/answer_1/letters.txt +++ b/answer_1/letters.txt @@ -1,9 +1,18 @@ -abcdef -ghijkl -mnopqr -stuvwx -yzABCD -EFGHIJ -KLMNOP -QRSTUV -WXYZ \ No newline at end of file +abc +def +ghi +jkl +mno +pqr +stu +vwx +yzA +BCD +EFG +HIJ +KLM +NOP +QRS +TUV +WXY +Z diff --git a/answer_4/answer_4.py b/answer_4/answer_4.py index 1a1244c..6bf0241 100644 --- a/answer_4/answer_4.py +++ b/answer_4/answer_4.py @@ -18,16 +18,15 @@ def input_and_check(prompt, accepted_inputs, error_prompt='Error: Invalid input! else: assert input_string in accepted_inputs return input_string - except (AssertionError, ValueError): + except: print(error_prompt) # The main loop while True: number_1 = input_and_check('Enter first number: ', 'numbers', 'Error: Input must be a float value!') - number_2 = input_and_check('Enter second number: ', 'numbers', 'Error: Input must be a float value!') operation = input_and_check('Choose an operation: [+, -, *, /]: ', ['+', '-', '*', '/'], 'Error: Invalid operation! Try again.') - + number_2 = input_and_check('Enter second number: ', 'numbers', 'Error: Input must be a float value!') if operation == '+': print(f'{number_1} + {number_2} = {add_function.add(number_1, number_2)}') @@ -38,6 +37,6 @@ def input_and_check(prompt, accepted_inputs, error_prompt='Error: Invalid input! elif operation == '/': print(f'{number_1} / {number_2} = {divide_function.divide(number_1, number_2)}') - if input_and_check('Do you want to continue? (Y/N): ', ['Y', 'y', 'N', 'n']).upper() == 'N': + if input_and_check('Do you want to continue? (Y/N): ', ['Y', 'y', 'N', 'n']) in ['N', 'n']: break