日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

【Python CheckiO 题解】Roman Numerals

發(fā)布時間:2023/12/10 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python CheckiO 题解】Roman Numerals 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

CheckiO 是面向初學(xué)者和高級程序員的編碼游戲,使用 Python 和 JavaScript 解決棘手的挑戰(zhàn)和有趣的任務(wù),從而提高你的編碼技能,本博客主要記錄自己用 Python 在闖關(guān)時的做題思路和實(shí)現(xiàn)代碼,同時也學(xué)習(xí)學(xué)習(xí)其他大神寫的代碼。

CheckiO 官網(wǎng):https://checkio.org/

我的 CheckiO 主頁:https://py.checkio.org/user/TRHX/

CheckiO 題解系列專欄:https://itrhx.blog.csdn.net/category_9536424.html

CheckiO 所有題解源代碼:https://github.com/TRHX/Python-CheckiO-Exercise


題目描述

【Roman Numerals】:將阿拉伯?dāng)?shù)字轉(zhuǎn)換成羅馬數(shù)字

【鏈接】:https://py.checkio.org/mission/roman-numerals/

【輸入】:一個整數(shù)形式的阿拉伯?dāng)?shù)字

【輸出】:一個字符串形式的羅馬數(shù)字

【前提】:0 < number < 4000

【范例】

checkio(6) == 'VI' checkio(76) == 'LXXVI' checkio(13) == 'XIII' checkio(44) == 'XLIV' checkio(3999) == 'MMMCMXCIX'

解題思路

先將一到十、十位整數(shù)和百位整數(shù)以列表形式列出來,分為四種情況:一位數(shù)、兩位數(shù)、三位數(shù)和四位數(shù),每種情況還要判斷是否為整數(shù),不是整數(shù)的,將其除以位數(shù)的余,再次傳給 checkio() 函數(shù),求剩下的值。

這種方法比較繁瑣,語法簡單,不適合大一點(diǎn)的數(shù)字,太菜了,看看大神的解答吧

代碼實(shí)現(xiàn)

def checkio(data):roman_list1 = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']roman_list2 = ['X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC']roman_list3 = ['C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM']if 0 < data < 10:roman = roman_list1[data - 1]return romanelif 10 <= data < 100:if data % 10 == 0:roman = roman_list2[data // 10 - 1]else:roman = roman_list2[data // 10 - 1] + checkio(data % 10)return romanelif 100 <= data < 1000:if data % 100 == 0:roman = roman_list3[data // 100 - 1]else:roman = roman_list3[data // 100 - 1] + checkio(data % 100)return romanelif 1000 <= data < 9999:if data % 1000 == 0:roman = 'M' * (data // 1000)else:roman = 'M' * (data // 1000) + checkio(data % 1000)return romanif __name__ == '__main__':# These "asserts" using only for self-checking and not necessary for auto-testingassert checkio(6) == 'VI', '6'assert checkio(76) == 'LXXVI', '76'assert checkio(499) == 'CDXCIX', '499'assert checkio(3888) == 'MMMDCCCLXXXVIII', '3888'print('Done! Go Check!')

大神解答

大神解答 NO.1

def checkio(n):result = ''for arabic, roman in zip((1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1),'M CM D CD C XC L XL X IX V IV I'.split()):result += n // arabic * romann %= arabicreturn result

大神解答 NO.2

roman1 = ('', 'M', 'MM', 'MMM') roman2 = ('', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM') roman3 = ('', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC') roman4 = ('', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX')def checkio(data):data1 = int(data / 1000)data2 = int(data % 1000 / 100)data3 = int(data % 100 / 10)data4 = int(data % 10 )return roman1[data1] + roman2[data2] + roman3[data3] + roman4[data4]

大神解答 NO.3

def checkio(data):s = ''ones = ['X','I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']tens = ['C', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC']mils = ['M', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM']if data / 1000 != 0:s = s + 'M'*(data/1000)data = data % 1000if data / 100 != 0:s = s + mils[data/100]data = data % 100if data / 10 != 0:s = s + tens[data/10]data = data % 10if data / 1 != 0:s = s + ones[data/1]return s

大神解答 NO.4

from enum import Enumclass Roman(Enum):M = 1000CM = 900D = 500CD = 400C = 100XC = 90L = 50XL = 40X = 10IX = 9V = 5IV = 4I = 1@classmethoddef encode(cls, n):for numeral in cls:rep, n = divmod(n, numeral.value)yield numeral.name * repcheckio = lambda n: ''.join(Roman.encode(n))

大神解答 NO.5

def checkio(data):base = "I"*database = base.replace("I"*5, "V")base = base.replace("V"*2, "X")base = base.replace("X"*5, "L")base = base.replace("L"*2, "C")base = base.replace("C"*5, "D")base = base.replace("D"*2, "M")base = base.replace("DCCCC", "CM")base = base.replace("CCCC", "CD")base = base.replace("LXXXX", "XC")base = base.replace("XXXX", "XL")base = base.replace("VIIII", "IX")base = base.replace("IIII", "IV")return base 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的【Python CheckiO 题解】Roman Numerals的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 涩涩涩涩涩涩涩涩涩涩 | 青草视频在线免费观看 | 国产深喉视频一区二区 | 黄色视屏在线免费观看 | 亚洲国产欧美一区 | aaa毛片视频 | 四虎少妇做爰免费视频网站四 | 双性人妖互交localhost | 亚洲综合图色40p | 青草视频在线免费观看 | 日韩精品人妻一区二区中文字幕 | 国产高清在线观看 | 国产精品久久久爽爽爽麻豆色哟哟 | 无码人妻aⅴ一区二区三区69岛 | 国产精品久久一区 | 日韩狠狠操 | 99久久黄色 | 国产区av| www亚洲视频 | 中国女人一级一次看片 | 五月天狠狠干 | 富婆如狼似虎找黑人老外 | 国产夫绿帽单男3p精品视频 | 人妻在线一区二区 | 美女天天操 | 中文字幕无人区二 | 欧美做爰全过程免费看 | 亚洲区视频在线观看 | 受虐m奴xxx在线观看 | 久久九九国产精品 | 999精品| 国产高清区| 香蕉视频免费在线 | 亚洲成人免费看 | 亚洲熟乱| 一级美女黄色片 | 久久无码人妻丰满熟妇区毛片 | 久久久999精品视频 国产在线xx | 国产一级免费观看 | 麻豆精品a∨在线观看 | 三级理伦 | 欧洲一级黄 | 精品人妻二区中文字幕 | 永久免费在线观看视频 | 丰满白嫩尤物一区二区 | 黑人和白人做爰 | 日韩色区 | 亚洲天堂精品一区 | 91美女视频网站 | 最新黄色av网站 | 伊人青青久久 | 人妻互换一区二区激情偷拍 | 久久久久无码精品国产sm果冻 | 操模特| 天天摸天天操天天射 | 艳妇臀荡乳欲伦交换在线播放 | 欧美嘿咻视频 | 色播激情 | 日韩一区二区三区电影 | 欧美色综合色 | 成人午夜精品 | 四虎成人永久免费视频 | 国产精品一区av | 国产一级一区 | 成人av网站在线 | 国产视频麻豆 | 国产精品高清在线观看 | 国产午夜在线 | 成人久久视频 | 东北少妇露脸无套对白 | av网站免费在线 | 中文字幕免费在线看线人动作大片 | 成人一区二区免费视频 | 七七久久 | av伦理在线 | 国产这里有精品 | 欧美一区二区三区久久成人精品 | 欧美h在线观看 | 91亚洲精品久久久蜜桃网站 | 伊人伊色 | 免费无码不卡视频在线观看 | 99视频久 | 日日干日日摸 | 国产毛片在线视频 | 精品福利三区3d卡通动漫 | 久久艹在线 | 欧美 唯美 清纯 偷拍 | 婷婷日 | 老司机深夜福利网站 | 国产婷婷在线视频 | 中文字幕av网站 | 狠狠干一区二区 | 日韩操操 | 一区二区三区视频免费看 | 日韩天堂视频 | 久久久久久久中文字幕 | 91小宝寻花一区二区三区 | 国产做爰视频免费播放 | 国产电影一区二区三区 |