Hilfe gesucht bei nem quelltext

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Dorfl
User
Beiträge: 17
Registriert: Sonntag 23. November 2008, 17:18

Guten Abend , ich hab nächste woche meine erste Informatik Klausur und hab dafür geübt und ne übungsaufgabe gemacht aber scheine einen fehler drinn zu haben , den ich einfach nicht finde....
Bitte um Hilfe

Code: Alles auswählen

class Rechnung :

    def __init__ (self):
        self.e=0
        self.n=0
        self.zahlvar=0

    def set_werte (self,e,n,zahlvar):
        self.e=e
        self.n=n
        self.zahlvar=zahlvar

    def get_n (self):
        return self.n

    def get_e (self):
        return self.e

    def get_zahlvar (self):
        return self.zahlvar

    def verschluesseln (self):
        self.ergebnis = self.get_zahlvar ()** self.get_e () % self.get_n ()
        
    def get_verschluesseln (self):
        return self.ergebnis

  


if __name__ == "__main__":

    test= Rechnung()
    
    n=raw_input("Gib n: ")
    e=raw_input("Gib e: ")
    zahlvar= raw_input ("Gib Zahl: ")
    test.set_werte (e,n,zahlvar)
    print n,e,zahlvar
    print test.get_n(),test.get_e(),test.get_zahlvar()
    test.verschluesseln ()
    test.get_verschluesseln ()
    print test.get_verschluesseln()
sagt mir immer das ich scheinbar mit strings statt mit Zahlen rechne und unten dir beiden prints habe ich drinn um zu gucken ob soweit alles richtig war...
ja ich hab auch alles eingerückt

Edit (BlackJack): Quelltext in Code-Tags gesetzt.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Dorfl hat geschrieben:sagt mir immer das ich scheinbar mit strings statt mit Zahlen rechne
Da hat Python ja auch recht. Warum tust du dies? Du musst deine Eingabe-Strings schon explizit in Zahlen umwandeln.

Stefan
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Du programmierst Java in Python dass kommt nicht gut. Lass die Klasse weg und nimm eine Funktion. Solltest du wirklich eine Klasse brauchen nimm properties und verwende hör auf triviale setter und getter zu verwenden.

Dein Problem wird dadurch verursacht das raw_input einen String zurückgibt, nimm int(raw_input()).
Dorfl
User
Beiträge: 17
Registriert: Sonntag 23. November 2008, 17:18

ah danke , das is peinlich ^^ wa mir da nicht sicher und hatte es von nem script meines info-lehrers kopiert .... kann ich jetzt vorwerfen das er dort auch das int() vergessen hat XD

aber danke für die schnelle hilfe

@DasIch ich hätte es natürlich anders machen können, aber hatte mit absicht klassen verwendet da ich bis gestern das noch nicht verstanden hatte und jetzt zum verinnerlichen, zudem ist das auch nur nen teil des eigentlichen programmes^^
BlackJack

@Dorfl: Was willst Du da verinnerlichen? Die Syntax von Klassen? Bei Klassen selbst gehört nämlich auch dazu, zu wissen wann man sie einsetzt. Und das ist hier ganz bestimmt nicht gegeben. Das ist einfach nur eine Funktion, unnötig kompliziert und unübersichtlich implementiert.

Du verbrätst da fast 30 Zeilen *hierfür*:

Code: Alles auswählen

def verschluesseln(e, n, zahl):
    return zahl**e % n
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

@Dorfl Property hättest du trotzdem verwenden können.
Antworten