woshizhangpengp 发表于 2023-8-1 17:45:12

作业43

请教各位大佬,红框圈起来的v=rc,这个rc是什么,从哪来的,看不懂呀

isdkz 发表于 2023-8-1 17:48:01

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

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


总之,这段代码的功能是将给定的罗马字符转换为对应的数字形式,并返回转换后的结果。

woshizhangpengp 发表于 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
      if i < n-1 and v < R2N]:
            r -= v
      else:
            r += v
   
    return r;
   
s = input("请输入一个罗马字符:")
v = roman2num(s)
print(f"转换后的结果是:{v}")

isdkz 发表于 2023-8-1 17:49:46

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

R2N =...

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

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


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


总体而言,这段代码实现了将罗马数字转换为数字的功能,并且通过字典R2N存储了罗马数字和对应数字的映射关系。

Mike_python小 发表于 2023-8-1 17:50:35

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

R2N =...

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

我猜测这段代码可能有一些错误。根据代码的整体逻辑,我认为 `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
      if i < n-1 and v < R2N]:
            r -= v
      else:
            r += v

    return r

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


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

希望这可以解答你的问题。如果还有疑问,请随时提出。

woshizhangpengp 发表于 2023-8-1 17:50:57

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

有点懂了

sfqxx 发表于 2023-8-1 17:56:03

这个rc应该是R2N吧
页: [1]
查看完整版本: 作业43