2016-12-11 1 views
-2

Ich versuche, die Integer-to-römische Zahl Umwandlung Übung zu arbeiten, die ein Übergangsritus für neue Python-Programmierer scheint. Ich scheine erfolgreich die ganze Zahl korrekt in römische Zahl geschrieben zu haben, aber ich kann die römische Zahl nicht zu einer Ganzzahl bringen, um richtig zu funktionieren. Mit anderen Worten, wenn der Benutzer "1999" eintippt, ist die Ausgabe erfolgreich "MCMXCIX"; jedoch, wenn der Benutzer „MCMXCIX“ der Ausgang der Fehler ist:Roman/Numeral Conversion in Python 3.5

Traceback (most recent call last): 
    File "<pyshell#2>", line 1, in <module> rom_to_int(MCMXCIX) 
NameError: name 'MCMXCIX' is not defined". 

Hier ist mein Code so weit:

def int_to_rom (integer): 
    returnstring='' 
    table=[['M',1000],['CM',900],['D',500],['CD',400],['C',100],['XC',90],['L',50],['XL',40],['X',10],['IX',9],['V',5],['IV',4],['I',1]] 

    for pair in table: 

     while integer-pair[1]>=0: 

      integer-=pair[1] 
      returnstring+=pair[0] 

    return returnstring 

def rom_to_int (string): 
    returnint=0 
    table=[['M',1000],['CM',900],['D',500],['CD',400],['C',100],['XC',90],['L',50],['XL',40],['X',10],['IX',9],['V',5],['IV',4],['I',1]] 

    for pair in table: 

     continueyes=True 

     while continueyes: 
      if len(string)>=len(pair[0]): 

       if string[0:len(pair[0])]==pair[0]: 
        returnint+=pair[1] 
        string=string[len(pair[0]):] 

       else: continueyes=False 
      else: continueyes=False 

    return returnint 

ich auf halbem Weg dort bin und Hilfe bei der Fehlerbehebung benötigen. Kann jemand sehen, was mit dem zweiten Teil nicht stimmt? Ich habe mir andere Codes angeschaut, aber sie scheinen auf Python 2 oder andere Programmiersprachen ausgerichtet zu sein. Ich habe auch gelernt, dass es einen Python-Konverter gibt, der das jetzt einfach macht (roman, roman.toRoman (myInt)), ABER ich versuche, Schreibfunktionen zu üben. Jede Hilfe würde sehr geschätzt werden.

+2

Verstehen Sie den Unterschied zwischen einem Variablennamen, z. "var" und eine Zeichenkette, z.B. ''var''? – TigerhawkT3

+0

Ich denke, es kann wichtig sein, die zwei Buchstaben Elemente vorne in das Array zu setzen, um sicherzustellen, dass CM als 900 nicht 1100 verstanden wird. –

+0

Python weiß nicht, was 'MCMXCIX' ist. Es kennt nur "MCMXCIX" oder "MCMXCIX" –

Antwort

2

Der Fehler, den Sie bekommen, hängt nicht mit Ihrem Code zusammen. Sie haben

rom_to_int(MCMXCIX) 

aber da Sie zitiert haben nicht um MCMXCIX, dauert es es sich um eine (undefined) variabel zu sein und führt den Fehler, den Sie sehen.