帮助将数字转换为罗马数字Python脚本

帮助将数字转换为罗马数字Python脚本,python,arcmap,Python,Arcmap,我正在尝试将数字(最多30个)转换为罗马数字。使用另一个字段计算器函数的脚本作为模板,我创建了这个不想工作的脚本。任何帮助都将不胜感激 def NumberToRomanNumeral ( !CONCESSION! ): if CONCESSION == "1": newstr = "I" elif CONCESSION == 2: newstr = "II" elif CONCESSION == 3: newstr = "III" elif CONCESSION == 4:

我正在尝试将数字(最多30个)转换为罗马数字。使用另一个字段计算器函数的脚本作为模板,我创建了这个不想工作的脚本。任何帮助都将不胜感激

def NumberToRomanNumeral ( !CONCESSION! ):
 if CONCESSION == "1":
  newstr = "I"
elif CONCESSION == 2:
 newstr = "II"
elif CONCESSION == 3:
 newstr = "III"    
elif CONCESSION == 4:
 newstr = "IV"    
elif CONCESSION == 5:
  newstr = "V"  
elif CONCESSION == 6:
 newstr = "VI"  
elif CONCESSION == 7:
 newstr = "VII" 
elif CONCESSION == 8:
 newstr = "VIII"  
elif CONCESSION == 9:
 newstr = "IX"  
elif CONCESSION == 10:
 newstr = "X" 
elif CONCESSION == 11:
 newstr = "XI"
elif CONCESSION == 12:
 newstr = "XII"
elif CONCESSION == 13:
 newstr = "XIII"
elif CONCESSION == 14:
 newstr = "XIV"
elif CONCESSION == 15:
 newstr = "XV"
elif CONCESSION == 16:
 newstr = "XVI"
elif CONCESSION == 17:
 newstr = "XVII"
elif CONCESSION == 18:
 newstr = "XVIII"
elif CONCESSION == 19:
 newstr = "XIX"
elif CONCESSION == 20:
 newstr = "XX"
elif CONCESSION == 21:
 newstr = "XXI"
elif CONCESSION == 22:
 newstr = "XXII"
elif CONCESSION == 23:
 newstr = "XXIII"
elif CONCESSION == 24:
 newstr = "XXIV"
elif CONCESSION == 25:
 newstr = "XXV"
elif CONCESSION == 26:
 newstr = "XXVI"
elif CONCESSION == 27:
 newstr = "XXVII"
elif CONCESSION == 28:
 newstr = "XXVIII"
elif CONCESSION == 29:
 newstr = "XXIX"
elif CONCESSION == 30:
 newstr = "XXX"


else:
   newstr = ""
return newstr

感叹号放错地方了-应该是

表达方式:

NumberToRomanNumeral(!CONCESSION!)
代码块:正在启动

def NumberToRomanNumeral(CONCESSION):

感叹号放错地方了-应该是

表达方式:

NumberToRomanNumeral(!CONCESSION!)
代码块:正在启动

def NumberToRomanNumeral(CONCESSION):

您是否收到了特定的错误消息?有一些现有的脚本可以进行转换。例如,看看您的输入是数字还是字符串?您的第一个if语句使用引号,而其余语句不使用引号。我想说的是,检查您的选项卡以及kenbuja注释中的数据类型。你可以通过像ILIF int(让步)=28这样的方法强制进入适当的类型:-我也会第二次使用现有的脚本。抱歉,这不直接回答你的问题,但是在将来做这种转换时你可能会考虑的一件事是字典,这是一种内置的Python数据类型,是长elif列表的一种更容易的替代方法。请参阅:。节省了一些输入,并且可能更容易在代码中查找问题。但我猜是kenbuja提出的问题-如果您的输入是字符串,您需要确保所有语句都在检查字符串值。您是否收到了特定的错误消息?有一些现有的脚本可以进行转换。例如,看看您的输入是数字还是字符串?您的第一个if语句使用引号,而其余语句不使用引号。我想说的是,检查您的选项卡以及kenbuja注释中的数据类型。你可以通过像ILIF int(让步)=28这样的方法强制进入适当的类型:-我也会第二次使用现有的脚本。抱歉,这不直接回答你的问题,但是在将来做这种转换时你可能会考虑的一件事是字典,这是一种内置的Python数据类型,是长elif列表的一种更容易的替代方法。请参阅:。节省了一些输入,并且可能更容易在代码中查找问题。但我猜是kenbuja提出的问题——如果输入是字符串,则需要确保所有语句都在检查字符串值。