<pre><code>from textwrap import dedent
def add_new_variable(variables):
name = input('Enter a name for the new variable: ')
value = get_number(
msg='Enter a value for the new variable: ',
num_type=float
)
return variables + [(name, value)]
def add_to_existing_variable(variables):
result = list(variables)
for i, (k, v) in enumerate(variables, start=1):
print('{}) {} = {}'.format(i, k, v))
variable = get_number(
msg='Choose a variable to add to: ',
num_type=int,
minimum=1,
maximum=len(variables)
)
amount = get_number(
msg='Enter a value to add: ',
num_type=float
)
prev_name, prev_value = result[variable - 1]
result[variable - 1] = (prev_name, prev_value + amount)
return result
def get_menu_option():
menu_options = dedent("""
1) Add to existing variable
2) Add a new variable
""")
print(menu_options)
return get_number(
msg='Choose an option: ',
num_type=int,
minimum=1,
maximum=2
)
def get_number(msg, num_type, minimum=float('-inf'), maximum=float('inf')):
while True:
try:
number = num_type(input(msg))
except ValueError:
pass
else:
if minimum <= number <= maximum:
return number
def main():
variables = [
('A', 0),
('B', 0),
('C', 0)
]
while True:
menu_option = get_menu_option()
if menu_option == 1:
variables = add_to_existing_variable(variables)
else:
variables = add_new_variable(variables)
if __name__ == '__main__':
main()
</code></pre>