所以我正在为学校做这个任务。我必须创建一个类似于游戏的测验,它将提示用户将罗马数字加在一起并输入他们的答案。然后,它将使用正确的答案检查用户的答案,并告诉用户他们是对还是错。
到目前为止,我有这个:
class RomanNumeral:
index = 0
while index < len(integer_list) - 1:
#if a lower number is first, it should be subtracted, like IX,
#the one should be subtracted, but the 10 added
if integer_list[index] < integer_list[index + 1]:
r_integer -= integer_list[index]
else:
r_integer += integer_list[index]
index += 1
#Always add the last number
r_integer += integer_list[index]
#Store r_integer as an instance data item
self.__integer = r_integer
return
def main():
roman1 = RomanNumeral('random')
roman2 = RomanNumeral('random')
correct_answer = roman1 + roman2
main()
但是当我运行它时,我收到了这个错误:
r_integer += integer_list[index]
UnboundLocalError: local variable 'r_integer' referenced before assignment
有关如何解决此问题的任何建议?
同样,我需要帮助重载 int 方法,将罗马数字更改为整数,以便将它们加在一起。
答案 0 :(得分:0)
您的错误说
local variable 'r_integer' referenced before assignment
这意味着您在定义变量之前尝试使用变量。在r_integer
循环之前将while
定义为0(或其他一些数字),您的问题应该得到解决。
答案 1 :(得分:0)
您需要在r_integer
循环之前初始化while
。添加到##### comment
#Add if the number is greater than the one that follows, otherwise
#subtract r_integer = 0
#Stands for roman integer or the integer equivalent of the roman string
index = 0
##### Initialize r_integer before the while loop
r_integer = 0
while index < len(integer_list) - 1:
#if a lower number is first, it should be subtracted, like IX,
#the one should be subtracted, but the 10 added
if integer_list[index] < integer_list[index + 1]:
r_integer -= integer_list[index]
else:
r_integer += integer_list[index]
index += 1
#Always add the last number
r_integer += integer_list[index]
答案 2 :(得分:0)
您没有使用为self定义的整数。尝试在
之后添加声明 r_string = r_string.upper()
添加
r_integer = self.__integer
这样你就可以使用本地副本了。
但是你需要重载this post
中回答的整数方法答案 3 :(得分:0)
这是我的解决方法:
class Solution:
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
array_representation = []
for i in range(len(s)):
array_representation.append(s[i]);
total = 0
i = 0
print(array_representation)
while (i < len(array_representation)):
if (i < len(array_representation) - 1 and val(array_representation[i + 1]) > val(array_representation[i])):
total += (val(array_representation[i + 1]) - val(array_representation[i]))
i = i + 2;
else:
total += val(array_representation[i]);
i = i + 1;
return total;
这是我使用的辅助功能
def val(value):
if (value == "I"):
return 1
if (value == "V"):
return 5
if (value == "X"):
return 10;
if (value == "L"):
return 50;
if (value == "C"):
return 100;
if (value == "D"):
return 500;
if (value == "M"):
return 1000;