鱼C论坛

 找回密码
 立即注册
查看: 1909|回复: 6

[已解决]作业43

[复制链接]
发表于 2023-8-1 17:45:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请教各位大佬,红框圈起来的v=rc[ch],这个rc是什么,从哪来的,看不懂呀
最佳答案
2023-8-1 17:50:35
woshizhangpengp 发表于 2023-8-1 14:48
附上代码,这个是作业答案给的代码,直接复制过来的,没有修改过,好多地方看不懂,请教各位大佬

R2N =  ...


在给定的代码中,`rc`是一个未定义的变量,并且没有找到任何地方对其赋值。因此,这段代码中的`v = rc[ch]`会导致错误。

我猜测这段代码可能有一些错误。根据代码的整体逻辑,我认为 `rc` 应该是 `R2N` 的错误拼写。正确的代码应该是这样的:

R2N = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}

def roman2num(s):
    r = 0
    n = len(s)
    for i, ch in enumerate(s):
        v = R2N[ch]
        if i < n-1 and v < R2N[s[i+1]]:
            r -= v
        else:
            r += v

    return r

s = input("请输入一个罗马字符:")
v = roman2num(s)
print(f"转换后的结果是:{v}")


在修正后的代码中,`R2N` 是一个字典,将罗马数字字符映射到相应的整数值。函数 `roman2num` 接受一个罗马数字字符串作为输入,并将其转换为对应的整数值。在循环中,它逐个字符处理输入字符串,并根据罗马数字规则进行累加或累减计算。最后,它返回转换后的整数值。

希望这可以解答你的问题。如果还有疑问,请随时提出。
8.1-1.png
8.1-2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-1 17:48:01 | 显示全部楼层
这个代码是一个函数  roman2num ,它接受一个罗马字符作为输入,将其转换为对应的数字形式并返回。代码中定义了一个字典  R2N ,它用于将罗马字符映射为数字形式。然后,函数使用一个循环遍历输入字符串中的每个字符,并使用字典  R2N  查找对应的数字。如果当前字符的数字小于下一个字符的数字,则将  r  减去当前字符的数字;否则,将  r  加上当前字符的数字。最后,函数返回  r ,即转换后的数字。

在代码中,红框中  v=rc[ch]  这一行代码表示从字典  R2N  中查找当前字符对应的数字。 rc  是一个变量名,表示当前字符对应的数字。


总之,这段代码的功能是将给定的罗马字符转换为对应的数字形式,并返回转换后的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-1 17:48:40 | 显示全部楼层
附上代码,这个是作业答案给的代码,直接复制过来的,没有修改过,好多地方看不懂,请教各位大佬

R2N = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
   
def roman2num(s):
    r = 0
    n = len(s)
    for i, ch in enumerate(s):
        v = rc[ch]
        if i < n-1 and v < R2N[s[i+1]]:
            r -= v
        else:
            r += v
   
    return r;
   
s = input("请输入一个罗马字符:")
v = roman2num(s)
print(f"转换后的结果是:{v}")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 17:49:46 | 显示全部楼层
woshizhangpengp 发表于 2023-8-1 17:48
附上代码,这个是作业答案给的代码,直接复制过来的,没有修改过,好多地方看不懂,请教各位大佬

R2N =  ...

这段代码实现了一个将罗马数字转换为数字的函数  roman2num 。它接受一个罗马数字字符串作为输入,并返回对应的数字。

代码中的  R2N  字典定义了罗马数字和对应数字的映射关系。然后,函数  roman2num  使用一个循环遍历输入字符串中的每个字符,并使用  R2N  字典查找对应的数字。如果当前字符的数字小于下一个字符的数字,则将  r  减去当前字符的数字;否则,将  r  加上当前字符的数字。最后,函数返回  r ,即转换后的数字。


在主程序中,首先通过  input  函数获取用户输入的罗马数字字符串,然后调用  roman2num  函数将其转换为数字,并将结果打印出来。


总体而言,这段代码实现了将罗马数字转换为数字的功能,并且通过字典  R2N  存储了罗马数字和对应数字的映射关系。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 17:50:35 | 显示全部楼层    本楼为最佳答案   
woshizhangpengp 发表于 2023-8-1 14:48
附上代码,这个是作业答案给的代码,直接复制过来的,没有修改过,好多地方看不懂,请教各位大佬

R2N =  ...


在给定的代码中,`rc`是一个未定义的变量,并且没有找到任何地方对其赋值。因此,这段代码中的`v = rc[ch]`会导致错误。

我猜测这段代码可能有一些错误。根据代码的整体逻辑,我认为 `rc` 应该是 `R2N` 的错误拼写。正确的代码应该是这样的:

R2N = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}

def roman2num(s):
    r = 0
    n = len(s)
    for i, ch in enumerate(s):
        v = R2N[ch]
        if i < n-1 and v < R2N[s[i+1]]:
            r -= v
        else:
            r += v

    return r

s = input("请输入一个罗马字符:")
v = roman2num(s)
print(f"转换后的结果是:{v}")


在修正后的代码中,`R2N` 是一个字典,将罗马数字字符映射到相应的整数值。函数 `roman2num` 接受一个罗马数字字符串作为输入,并将其转换为对应的整数值。在循环中,它逐个字符处理输入字符串,并根据罗马数字规则进行累加或累减计算。最后,它返回转换后的整数值。

希望这可以解答你的问题。如果还有疑问,请随时提出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-1 17:50:57 | 显示全部楼层
isdkz 发表于 2023-8-1 17:48
这个代码是一个函数  roman2num ,它接受一个罗马字符作为输入,将其转换为对应的数字形式并返回。代码中定 ...

有点懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 17:56:03 | 显示全部楼层
这个rc应该是R2N吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 08:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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