Arne Skrevet 15. desember 2007 Del Skrevet 15. desember 2007 Hei! Her er koden min: class calculator: def plus(x, y): return x + y def minus(x, y): return x - y def dele(x, y): return x / y def gange(x, y): return x * y kalkulator = calculator() print "5 ganger 6 er " + kalkulator.gange(5, 6) + " ." print "5 delt paa 6 er " + kalkulator.dele(5, 6) + " ." print "5 pluss 6 er " + kalkulator.plus(5, 6) + " ." print "5 minus 6 er " + kalkulator.minus(5, 6) + " ." Feilmelding: Traceback (most recent call last): File "printparams.py", line 12, in <module> print "5 ganger 6 er " + kalkulator.gange(5, 6) + " ." TypeError: gange() takes exactly 2 arguments (3 given) Kva er det eg har gjort gale? Det står at eg har gitt tre argument, men eg har jo berre gitt to! Forresten, kjemegod bok, denne Beginning Python, anbefalt til alle som vil lære seg litt om python. LItt treig i starten kanskje, men det kjem seg veldig utover når du lærer om OOP. Lenke til kommentar
8===D Skrevet 15. desember 2007 Del Skrevet 15. desember 2007 Prøv denne: class calculator: def plus(self, x, y): return x + y def minus(self, x, y): return x - y def dele(self, x, y): return x / y def gange(self, x, y): return x * y kalkulator = calculator() print "5 ganger 6 er " + str(kalkulator.gange(5, 6)) + " ." print "5 delt paa 6 er " + str(kalkulator.dele(5, 6)) + " ." print "5 pluss 6 er " + str(kalkulator.plus(5, 6)) + " ." print "5 minus 6 er " + str(kalkulator.minus(5, 6)) + " ." Lenke til kommentar
8===D Skrevet 15. desember 2007 Del Skrevet 15. desember 2007 Btw, divisjon er litt rart i python. Deler du et heltall på at annet vil resultatet bli et heltall. 6/4 vil bli 1. Er et eller begge av dem derimot desimaltall vil du få rett svar. 6./4. = 1.5. Lenke til kommentar
Arne Skrevet 15. desember 2007 Forfatter Del Skrevet 15. desember 2007 Takk skal du ha, B===D, eg gjorde det på denne måten: class calculator: def plus(self, x, y): return x + y def minus(self, x, y): return x - y def dele(self, x, y): return x / y def gange(self, x, y): return x * y kalkulator = calculator() print "5 ganger 6 er", kalkulator.gange(5, 6) print "5 ganger 6 er", kalkulator.gange(5, 6), "." print "5 delt paa 6 er", kalkulator.dele(5.0, 6.0) ,"." print "5 pluss 6 er", kalkulator.plus(5, 6) , "." print "5 minus 6 er" ,kalkulator.minus(5, 6) ,"." Det eg forandra var "self" i metode-argumenta og så brukte eg komma i staden for pluss, for då trur ikjke programmet at eg skal slå saman to strenger, men at eg printar ut to element. Kva er self? Lenke til kommentar
8===D Skrevet 15. desember 2007 Del Skrevet 15. desember 2007 self er første argument i alle klassemetoder. just the way it is. tilsvarer this i java/c++. Lenke til kommentar
Arne Skrevet 15. desember 2007 Forfatter Del Skrevet 15. desember 2007 Ja, ser det. Self peikar på variablane som er tilgjenglege for alle metodane i ein klasse. Takk. Lenke til kommentar
genstian Skrevet 18. desember 2007 Del Skrevet 18. desember 2007 Bare et hint: kanskje du burde bruke float? Lenke til kommentar
nercix Skrevet 21. desember 2007 Del Skrevet 21. desember 2007 Btw, divisjon er litt rart i python. Deler du et heltall på at annet vil resultatet bli et heltall. 6/4 vil bli 1. Er et eller begge av dem derimot desimaltall vil du få rett svar. 6./4. = 1.5. Er vel ikkje rart? Er jo slik vi vil ha det! int/int = int Lenke til kommentar
Arne Skrevet 21. desember 2007 Forfatter Del Skrevet 21. desember 2007 Joda, det er heilt greit det, du! Måtte berre vite om det. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå