[Python] Cannot figure out a coin conversion problem within the specified limitations

Discussão em 'Python' iniciado por Stack, Fevereiro 8, 2025.

  1. Stack

    Stack Membro Participativo

    The problem is:


    The base unit of currency was the As. All other coins are measured relative to each other.

    Quadrans: 1/2 a Semis
    Semis: 1/2 an As
    As: Base Unit
    Dupondius: 2 Asses
    Sestertius: 2 Dupondii
    Quinarius: 2 Sesterii
    Denarius: 2 Quinarii
    Antoninianus: 2 Denarii
    Gold Quinarius: 25 Quinarii
    Aureus: 25 Denarii


    Write a program that takes as input the number of Quadrans a person has in their account. This number is always an integer because there is no smaller currency than the Quadrans. Then print out the minimal number of coins that can be used to represent this amount.

    Start with the largest value currency and work down to the smallest. For example, if the user has 12 Quadrans, this is 1 Dupondius and 1 As.

    EXAMPLE OUTPUT:

    Enter Number of Quadrans: 21432
    Aureus: 13
    Gold Quinarius: 0
    Antoninianus: 4
    DenarEnter Number of Quadrans: 21432
    Aureus: 13
    Gold Quinarius: 0
    Antoninianus: 4
    Denarius: 1
    Quinarius: 1
    Sestertius: 1
    Dupondius: 1
    As: 0
    Semis: 0
    Quadrans: 0
    ius: 1
    Quinarius: 1
    Sestertius: 1
    Dupondius: 1
    As: 0
    Semis: 0
    Quadrans: 0​

    A restriction of the assignment is I cannot use complex functions with lists/flags to solve this question.

    Define the Units:

    As = 1
    Semis = 0.5 * As
    Quadrans = 0.5 * Semis
    Dupondius = 2 * As
    Sestertius = 2 * Dupondius
    Quinarius = 2 * Sestertius
    Denarius = 2 * Quinarius
    Antoninianus = 2 * Denarius
    GoldQuinarius = 25 * Quinarius
    Aureus = 25 * Denarius


    used accountBalance var. for quadrans amount need to be converted

    accountBalance = int(input( "Enter Number of Quadrans: " ))


    tried to convert into least amount of coins needed here using arithmetic operations

    AureusP = (accountBalance * 0.25) // Aureus
    GoldQuinariusP = (accountBalance - AureusP) // GoldQuinarius
    AntoninianusP = (accountBalance - GoldQuinariusP) // Antoninianus
    DenariusP = (accountBalance - AntoninianusP) // Denarius
    QuinariusP = (accountBalance - DenariusP) // Quinarius
    SestertiusP = (accountBalance - QuinariusP) // Sestertius
    DupondiusP = (accountBalance - SestertiusP) // Dupondius
    AsP = (accountBalance - DupondiusP) // As
    SemisP = (accountBalance - AsP) // Semis
    QuadransP = (accountBalance - SemisP) // Quadrans


    Have to print the number of coins used to represent the account balance

    print("Aureus: ",AureusP)
    print("Gold Quinarius: ", GoldQuinariusP)
    print("Antoninianus: ", AntoninianusP)
    print("Denarius: ", DenariusP)
    print("Quinarius: ", QuinariusP)
    print("Sestertius: ", SestertiusP)
    print("Dupondius: ", DupondiusP)
    print("As: ", AsP)
    print("Semis: ", SemisP)
    print("Quadrans: ", QuadransP)


    Now I have tried to get the output to match with the example above, have managed to get the Aureus amount to line up but it seems I'm doing something wrong after.

    Can this problem be solved without implementing flags and embedding lists?

    This is the output Im getting:

    Enter Number of Quadrans: 21432
    Aureus: 13.0
    Gold Quinarius: 107.0
    Antoninianus: 666.0
    Denarius: 1297.0
    Quinarius: 2516.0
    Sestertius: 4729.0
    Dupondius: 8351.0
    As: 13081.0
    Semis: 16702.0
    Quadrans: 18920.0

    Continue reading...

Compartilhe esta Página