Оплата монет из кармана пользователя - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь написать программу на Python3, которая предложит нам ввести сумму, которую нужно заплатить, а затем количество монет, которые у нас есть (2 фунта, 1 фунт, 50 пунктов, 2 пункта, 10 пунктов, 5 пунктов,2р, 1р). Он должен возвращать в списке целых чисел, сколько монет определенного значения мы использовали, а также менять (плавать), если нам не удалось заплатить всю сумму. Первые 8 цифр возвращенного списка представляют монеты, которые должны быть оплачены, используя тот же порядок, что и в списке ввода, в кармане. Последний номер возвращаемого списка дает сумму денег, которую андроид должен вернуть как изменение. Итак, если мы сможем заплатить точные деньги, это будет 0;но если денег в кармане достаточно, но у нас нет нужных монет, чтобы заплатить точную сумму, это будет сумма изменений, которая будет возвращена. Общая сумма оплаченных монет должна быть точной суммой, если это возможно. Если невозможно оплатить точную сумму, выплачиваемая сумма должна быть наименьшей суммой, покрывающей расходы - возвращаемое изменение должно быть как можно ниже. В идеале мы должны платить как можно больше монет.

Код, который я пытался использовать:

def pay_with_coins_from_pocket( amount, pocket ): #pocket - numbers of coins we have

    number_of_coins = [0,0,0,0,0,0,0,0,0] #number of coins we will use and amount of change
    amount=amount*100 #in pennies
    amount_of_change=0
    values_of_coins = [200, 100, 50, 20, 10, 5, 2, 1]
    number_of_coins_used=0
    money_in_pocket=0
    i=0 # "counter"
    money_in_pocket=pocket[0]*200+pocket[1]*100+pocket[2]*50+pocket[3]*20+pocket[4]*10+pocket[5]*5+pocket[6]*2+pocket[7]*1
    if money_in_pocket<amount:
         print("False")
    else:
       while i<8:
           while (pocket[i]>0 and amount>0): # if it stays, I can't pay 1.62 with 2 pound coin): #and amount>=pocket_at_first):
                if amount-values_of_coins[i]>0:
                    amount=amount-values_of_coins[i]
                else:
                    amount=values_of_coins[i]-amount
                pocket[i]=pocket[i]-1 #one coin from specific pocket was used
                number_of_coins_used=number_of_coins_used+1 #another coin of specific value was used
                number_of_coins[i]=number_of_coins_used #another coin of specific value was used
                amount_of_change=amount
                number_of_coins[8]=amount_of_change/100
       i=i+1

    return number_of_coins 
...