This repository was archived by the owner on Oct 20, 2026. It is now read-only.
Repository navigation
Expand file tree
/
Copy path09_03_CodeExperimentsBonusBugs.py
More file actions
116 lines (83 loc) · 4.22 KB
/
Copy path09_03_CodeExperimentsBonusBugs.py
File metadata and controls
116 lines (83 loc) · 4.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# booleans:
# https://www.udemy.com/course/the-python-mega-course/learn/lecture/34597776#overview
from num2words import num2words
while True:
user_decision_base = input("Type either Add, Show, Edit, Complete, Reset or Exit:")
user_decision = user_decision_base.strip().casefold()
list_decision = user_decision.split()
with open("09_Save.txt", "r") as savefile:
todos = savefile.readlines()
todo = ()
if "add" in user_decision or "new" in user_decision:
if len(list_decision) > 1:
todo = user_decision_base[4:] +"\n"
else:
todo = input("Enter a To-Do Item:") + "\n"
with open("09_Save.txt", "r") as savefile:
todos = savefile.readlines()
todos.append(todo)
with open("09_Save.txt", "w") as savefile:
savefile.writelines(todos)
todo = todo.rstrip()
print(f"Item {todo} added to your To-Do List.")
elif "show" in user_decision or "display" in user_decision:
print()
for index, item in enumerate(todos):
item = item.rstrip()
row = f"{index + 1}: {item}"
print(row)
print(f"\nYour To-Do List is {num2words(len(todos))} items long.")
print()
elif "edit" in user_decision:
while True:
for index, item in enumerate(todos):
item = item.rstrip()
row = f"{index + 1}: {item}"
print(row)
try:
number = int(input("Please enter the number of the To-Do Item you wish to edit:"))
number = number - 1
with open("09_Save.txt", "r") as savefile:
todos = savefile.readlines()
# Two ways of printing a variable in a line of code. Here's way #1, old school way.
print("You selected {}.".format(todos[number].rstrip()))
new_todo = input("Please enter the To-Do Item you wish to replace this item:")
todos[number] = new_todo + "\n"
# Here's the easier way to do it, as an "f-string literal" as auto-recommended by PyCharm.
print(f"Your new To-Do Item is {todos[number].rstrip()}.")
with open("09_Save.txt", "w") as savefile:
savefile.writelines(todos)
break
except ValueError:
print("A non-integer response was provided. Please type Edit again, then enter the number of the To-Do Item you wish to edit.")
elif "complete" in user_decision:
while True:
try:
number = int(input("Please enter the number of the To-Do Item you wish to mark as completed."))
removed = todos[number-1].rstrip()
todos.pop(number - 1)
with open("09_Save.txt", "w") as savefile:
savefile.writelines(todos)
message = f'To-Do Item "{removed}" was marked as complete, and thus removed from the list.'
print(message)
break
except ValueError:
print("A non-integer response was provided.")
continue
elif "reset" in user_decision:
reset_choice = input("Continuing with Reset will erase all items from your To-Do List,\nleaving it totally blank. Continue?\nType YES if certain.")
reset_choice = reset_choice.strip().casefold()
if reset_choice == "yes":
with open("09_Save.txt", "w+") as savefile: #wow, w+ is dope
savefile.write("")
todos = savefile.readlines()
print("Your To-Do List has been reset.")
print(f"Your To-Do List is {num2words(len(todos))} items long.")
else:
print("Reset aborted.")
elif "exit" in user_decision:
break
else:
print("You entered an unknown command.\n"
"Please type either Add, Show, Edit, Complete, Reset or Exit:")
print("Good bye!")