Как присвоить значение и автоматически добавить его (увеличить) к другой переменной при уменьшении другой в списке python? - PullRequest
0 голосов
/ 22 октября 2018

Так что я новичок в python и у меня есть проблема с питоном, скажем, есть 5 входных данных

Andy 500
Bobby 200
Cindy 100
Daria 400
Elise 300

, и они дают деньги друг другу

Andy gives 100 to Bobby
Bobby gives 50 to Cindy
Cindy gives 25 to Daria
Elise gives 100 to Cindy
Daria gives 75 to Andy

вывод долженвыглядеть так

Andy 475
Bobby 150
Cindy 225
Daria 350
Elise 200

это код, который я до сих пор придумал

    #initMoney = [500, 200, 100, 400, 300]
initMoney = [
        {'Andy': 500}, 
        {'Bobby': 200}, 
        {'Cindy': 100}, 
        {'Daria': 400}, 
        {'Elise': 100}
    ]

loanMoney = [100, 50, 25, 75, 100]

def loanBucks(init, loan):
    return init - loan

result = list(map(loanBucks, initMoney, loanMoney))
print(result)
print(result[0])

initMoney[0] += loanMoney[3]
initMoney[2] += loanMoney[1] + loanMoney[0]
initMoney[3] += loanMoney[2]

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Вы можете использовать словарь для хранения денег разных людей.

Что касается представления транзакций, я бы предложил список словарей.

Я не буду писать код дляввод начальных имен и денег, а также для ввода транзакций, поскольку я уверен, что вы можете управлять этим.

Вот код для определения денег и транзакций и для обработки транзакций:

people = {
'Andy': 500,
'Bobby': 200,
'Cindy': 100,
'Daria': 400,
'Elise': 300
}

transactions = [
 {'from': 'Andy',  'to': 'Bobby', 'amount': 100},
 {'from': 'Bobby', 'to': 'Cindy', 'amount': 50},
 {'from': 'Cindy', 'to': 'Daria', 'amount': 25},
 {'from': 'Elise', 'to': 'Cindy', 'amount': 100},
 {'from': 'Daria', 'to': 'Andy',  'amount': 75}
]

for transaction in transactions:
    people[transaction['from']] -= transaction['amount']
    people[transaction['to']]   += transaction['amount']

for person, money in people.items():
    print(person, money)

, что дает:

Andy 475
Bobby 250
Cindy 225
Daria 350
Elise 200
0 голосов
/ 22 октября 2018

Проблема, которую вы решаете, идеально подходит для изучения объектно-ориентированного Python (реализация классов с такими атрибутами, как exchange_money ()).

Однако для решения этой проблемы вы можете сделать себя функцией,это было бы более элегантно.

initMoney = {}
initMoney['Andi'] = 500
initMoney['Budi'] = 200
initMoney['Cici'] = 100
initMoney['Didi'] = 400
initMoney['Elsa'] = 100

def exchange_money(person1, person2, amount):
    """
    Takes money from person1 and gives it to person2.

    Input:
        - Name of person 1 as string
        - Name of person 2 as string
        - Numeric for amount to transfer
    """

    if initMoney[person1] - amount < 0:
        print(f"{person1} does not have that much money!")
    else:
        initMoney[person1] -= amount
        initMoney[person2] += amount

#exchange_money('Andi', 'Budi', 100)
 #exchange_money('Andi', 'Budi', 6600)  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...