#python
#python
Вопрос:
У меня проблема.
Я хочу отобразить все мои записи в команде «просмотр», но она отображает только последнюю запись.
Как мне решить проблему?
Пожалуйста, помогите мне, спасибо!
мой код:
initial_money = int(input('How much money do you have? '))
def records():
return
def add(records):
records = input('Add an expense or income record with description and amount:n').split()
global rec
rec = records[0]
global amt
amt = records[1]
global initial_money
initial_money = int(amt)
def view(initial_money, records):
print("Here's your expense and income records:")
print("Description Amount")
print("------------------- ------")
print('{name:<20s} {number:<6s}'.format(name = rec,number = amt))
print('Now you have {} dollars.'.format(initial_money))
while True:
command = input('nWhat do you want to do (add / view / delete / exit)? ')
if command == 'add':
records = add(records)
elif command == 'view':
view(initial_money, records)
Вывод
How much money do you have? 100
What do you want to do (add / view / delete / exit)? add
Add an expense or income record with description and amount:
tomato -50
What do you want to do (add / view / delete / exit)? add
Add an expense or income record with description and amount:
salary 100
What do you want to do (add / view / delete / exit)? view
Here's your expense and income records:
Description Amount
------------------- ------
salary 100
Now you have 150 dollars.
вывод, который я хочу:
------------------- ------
tomato -50
salary 100
Now you have 150 dollars.
Ответ №1:
Вместо этого я буду использовать словарь для их хранения:
initial_money = int(input('How much money do you have? '))
mr = {}
def records():
return
def add(records):
records = input('Add an expense or income record with description and amount:n').split()
global rec
rec = records[0]
global amt
amt = records[1]
global mr
global initial_money
mr[rec] = int(amt)
initial_money = mr[rec]
def view(initial_money, records):
print("Here's your expense and income records:")
print("Description Amount")
print("------------------- ------")
for r,a in mr.items():
print('{name:<20s} {number:<6s}'.format(name = r,number = str(a)))
print('Now you have {} dollars.'.format(initial_money))
while True:
command = input('nWhat do you want to do (add / view / delete / exit)? ')
if command == 'add':
records = add(records)
elif command == 'view':
view(initial_money, records)
Тест:
How much money do you have? 100
What do you want to do (add / view / delete / exit)? add
Add an expense or income record with description and amount:
tomato -50
What do you want to do (add / view / delete / exit)? add
Add an expense or income record with description and amount:
salary 100
What do you want to do (add / view / delete / exit)? view
Here's your expense and income records:
Description Amount
------------------- ------
tomato -50
salary 100
Now you have 150 dollars.
Комментарии:
1. Это решает мою проблему, но общая сумма кажется неправильной.
2. О, теперь это правда. Большое спасибо!
Ответ №2:
Вам нужно внести записи в список вставленных вами записей. В настоящее время вы перезаписываете его каждый раз, когда вызываете add .
- сделайте записи массивом вне вашего основного цикла
- В вашем основном цикле нажмите результаты вызова для добавления в ваш массив в вашей функции просмотра
- затем вам нужно выполнить цикл по массиву, чтобы просмотреть все результаты.
Также для бонуса прекратите использовать global в своей функции добавления, это считается дурным тоном
Комментарии:
1. О, действительно, поэтому я должен удалить глобальный и использовать цикл.