我被赋予了在Python中编写罗马数字转换器的任务。我应该使用三个功能。这是我到目前为止所做的:
##Get a roman numeral from the user
# @param userInput the roman numeral given
# @return The value to calculateValue
# pg 252
def getInput() :
userInput = input("Please enter a Roman numeral: ")
storedInput = userInput
if userInput.islower() :
userAlphaInput = userInput.upper()
else :
userAlphaInput = userInput
return userAlphaInput, storedInput
##Converts the Roman numeral to a number
# @param Converts Roman numeral
# @return the number to displayOutput
#
def calculateValue() :
M = 1000
D = 500
C = 100
L = 50
X = 10
V = 5
I = 1
while userInput == True :
if userInput[0] >= userInput[1] or len(userInput) == 1 :
convertedNumber += (userInput[0])
del userInput[0]
else :
convertedNumber += (userInput[1]) - (userInput[0])
del userInput[0], userInput[1]
return convertedNumber
##Displays the result
# @param convertedNumber the converted number
# @return the stored and converted number
#
def displayOutput() :
print( storedInput, "is ", convertedNumber)
getInput()
calculateValue()
displayOutput()
但是我得到了第45行没有定义userInput的错误。我认为该变量将在第一个函数中初始化。我不正确理解吗?任何和所有的帮助表示赞赏。
答案 0 :(得分:0)
这是一个范围问题。定义userInput
时,它仅在函数getInput()
内定义。
要解决您的问题,请在userInput
之外定义storedInput
和getInput()
。
有关详情,请参阅here。
答案 1 :(得分:0)
##Get a roman numeral from the user
# @param userInput the roman numeral given
# @return The value to calculateValue
# pg 252
def getInput() :
userInput = input("Please enter a Roman numeral: ")
storedInput = userInput
if userInput.islower() :
userAlphaInput = userInput.upper()
else :
userAlphaInput = userInput
return userAlphaInput, storedInput
##Converts the Roman numeral to a number
# @param Converts Roman numeral
# @return the number to displayOutput
#
def calculateValue():
userInput = getInput()
convertedNumber = 0
M = 1000
D = 500
C = 100
L = 50
X = 10
V = 5
I = 1
while userInput == True :
if userInput[0] >= userInput[1] or len(userInput) == 1 :
convertedNumber += (userInput[0])
del userInput[0]
else :
convertedNumber += (userInput[1]) - (userInput[0])
del userInput[0], userInput[1]
return convertedNumber
##Displays the result
calculateValue()