学期20192428のジョブの2019-2020-1第二週 - アラビアデジタル変換ローマ数字

ローマ数字上のPythonプログラミングはアラビア数字に変換しました

アラビア語表記カウント位置の伝統的な方法としては、ローマ数字の変換が困難なこと、私は以下のように要約ローマ数字の法則であることを望んでいます。

  1. 数を加算した番号で示された数に等しい同じデジタル結紮、(最大で3つの結紮
  2. 右側の多数の小数値は、数値を加算した番号で示される数に等しいです。
  3. (低い番号XとC、Ⅰ限定)得られた多数の数の減少で表される数に等しい左側に多数の数、

したがって、とLen関数、従来のループと判定文で、印刷、入力およびその他の機能に基づいて、私は正常にこのプログラムの外に編集しました。

コード:(は以下の通りである。学ぶことができ、盗作は厳しく禁止されています

#阿拉伯数字转换罗马数字1~3999
#I=1 V=5 X=10 L=50 C=100 D=500 M=1000 IV=4 IX=9 XL=40 XC=90 CD=400 CM=900
#在构成数字的时候,有下列规则:
#1、相同的数字连写,所表示的数等于这些数字相加得到的数
#2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数
#3、小的数字,(限于Ⅰ、X和C)在大的数字的左边,所表示的数等于大数减小数得到的数

print('''--------------------------------------------------
作者:20192428魏来
阿拉伯数字向罗马数字的转换
--------------------------------------------------''')
list = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
a = 0
while a < 9999 : #多次进行转换:(9998次)
    a = a+1
    romannum = input('''--------------------------------------------------
请输入罗马数字(输入范围:1-3999):''')
    result = 0
    omit = -1  # omit为需省略的字符位
    if romannum in list:
        print(list[romannum])
    else:
        for b in range(len(romannum)):  # 遍历字符串的每一位:(0,len-1)
            if b == omit:  # 如果无需省略b
                pass
            elif b <= len(romannum)-2:  # 如果还没有遍历到最后一位:(len-1-1)
                if list[romannum[b]] < list[romannum[b+1]]:  # 如果前一位对应值小于后一位的
                    result += list[romannum[b+1]] - list[romannum[b]]  # 进行减操作
                    omit = b+1  # 省略下一位字符
                else:
                    result += list[romannum[b]]
            else:  #  遍历到最后一位
                result += list[romannum[b]]
        print('''对应阿拉伯数字为:{}
--------------------------------------------------'''.format(result))

追加や改善がメッセージをお待ちしております。




おすすめ

転載: www.cnblogs.com/KamanFuture/p/11655414.html