鱼C论坛

 找回密码
 立即注册
查看: 593|回复: 5

[已解决]每日一问?

[复制链接]
发表于 2025-5-23 09:08:25 | 显示全部楼层
第一点: answer=roman_to_value(num[0])+roman_to_value(num[1])这行代码是用来处理输入为II的情况,不能删;
第二点:
def roman_to_value(char,roman_dict=None):#这个函数是将 字符型 按照 roman_dict 映射转成 整型 ;
    if roman_dict is None://如果没有 自定义字典 比如roman_to_value(‘I’),则 roman_dict 默认为下面的值;
        roman_dict={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
    return roman_dict.get(char,0)//返回转化后的值,如果 char 不在字典中 返回0;
你也可以自定义一个map,如map={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000},然后这样调用roman_to_value(‘I’,map);
第三:你这个处理不了长度为三及以上的罗马数字输入,如XXX,应该输出30但是你的输入是20。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-5-26 09:41:08 | 显示全部楼层
爱吃菠萝包 发表于 2025-5-23 18:02
首先我问的是第17行,好像不是说输入为II的情况吧?还是我没理解
其次我没有看懂你的第二点哎
最后, ...

  你的这段代码当num[0]和num[1]都等于‘I’时就会跳到answer=roman_to_value(num[0])+roman_to_value(num[1])这,所以不是多余的;
if num[0]=='I':
            if num[1] in ['V','X']:
                answer=roman_to_value(num[1])-I
            elif num[1] in ['L','C']:
                answer=roman_to_value(num[1])-X
            elif num[1] in ['D','M']:
                answer=roman_to_value(num[1])-C
            else:
                answer=roman_to_value(num[0])+roman_to_value(num[1])#感觉这串很多余,是否可以删掉?
第二点简单说就是把单个罗马字符转成阿拉伯数字;
要改的话你就按AI给的答案吧,因为你转化逻辑是有问题的,你可以网上问一下AI罗马数字转阿拉伯数字的逻辑是怎样的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-21 03:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表