-2

I don't know what's wrong with my code. It would just not execute. Nothing happens, no errors occur. I can't figure it out. If someone can tell me what I have done wrong, please do so and I will be grateful.

class Money (object):
    def __init__ (self, euro, cent):
      self.euro = euro
      self.cent = cent

    def __str__ (self):
        if self.cent >= 100:
            r = self.cent / 100
            self.cent = self.cent % 100
            self.euro = self.euro + r
            return ("%d EUR & %d cents") % (self.euro, self.cent)
        else:
            return ("%d EUR & %d cents") % (self.euro, self.cent)

    def changeCent (self):
        #100 c = 1 E
        cents = self.euro * 100
        self.cent = self.cent + cents
        return self.cent

    def changeSum (self, euros):
        #1 E = 100 c
        euros = self.cent / 100
        self.euro = self.euro + euros
        return self.euro

    def debt (self, years, rate):
        value = Money()
        multiply = rate * years * 12 / 100
        value.euro = self.euro * multiply
        value.cent = self.cent * multiply
        if value.cent > 100:
            euro_ = value.cent / 100
            value.cent = value.cent - 100
            value.euro = value.euro + euro_
        return value

def main():
    x = Money()
    x.euro = int(input("Type in your EURO ammount: \n"))
    x.cent = int(input("Type in your CENT ammount: \n"))
    print (x)
Angel Draghici
  • 67
  • 1
  • 1
  • 4

5 Answers5

6

In python, main is not a special function (unlike C, for example).

You need to explicitly call main() in your script.

A common idiom is to only do this if your file is run as a script (as opposed to being imported):

if __name__ == "__main__":
    main()

See the documentation for how this works

jfowkes
  • 1,495
  • 9
  • 17
2

You defined the main function, but you never call it.

add main() to the end of your code.

It then runs but there are errors, to fix the errors, change your main() function to

def main()
    euro = int(input("Type in your EURO ammount: \n"))
    cent = int(input("Type in your CENT ammount: \n"))
    x = Money(euro, cent)
    print (x)

Full working code:

class Money (object):
    def __init__ (self, euro, cent):
      self.euro = euro
      self.cent = cent

    def __str__ (self):
        if self.cent >= 100:
            r = self.cent / 100
            self.cent = self.cent % 100
            self.euro = self.euro + r
            return ("%d EUR & %d cents") % (self.euro, self.cent)
        else:
            return ("%d EUR & %d cents") % (self.euro, self.cent)

    def changeCent (self):
        #100 c = 1 E
        cents = self.euro * 100
        self.cent = self.cent + cents
        return self.cent

    def changeSum (self, euros):
        #1 E = 100 c
        euros = self.cent / 100
        self.euro = self.euro + euros
        return self.euro

    def debt (self, years, rate):
        value = Money()
        multiply = rate * years * 12 / 100
        value.euro = self.euro * multiply
        value.cent = self.cent * multiply
        if value.cent > 100:
            euro_ = value.cent / 100
            value.cent = value.cent - 100
            value.euro = value.euro + euro_
        return value

def main():
    euro = int(input("Type in your EURO ammount: \n"))
    cent = int(input("Type in your CENT ammount: \n"))
    x = Money(euro, cent)
    print (x)

main()
Flaming_Dorito
  • 486
  • 3
  • 11
2

The pythonic way of getting a result here would be to add following lines to the file:

if __name__=='__main__':
    main()

It checks, whether you are calling the script as the main script. Currently you only define the function main, but you never call it.

Mike S
  • 180
  • 1
  • 15
1

You should run the function main()

0

To execute the function type main() at the bottom. You did almost everything except calling the function.

One more mistake

your constructor def __init__ (self, euro, cent):expects two parameters. You are not passing any value to it.

To fix that change to:

def __init__ (self, euro=0, cent=0):     

which assigns default value of 0 to both euro and cent

shubham johar
  • 268
  • 1
  • 9