Python 使用if命令时出现罗马/十进制计算器错误
它只打印if中的第二个命令,如果输入为十进制,则不打印第一个命令。我检查了两个分开的代码,它们工作得很好。我只想打印十进制,如果是罗马,如果是十进制Python 使用if命令时出现罗马/十进制计算器错误,python,Python,它只打印if中的第二个命令,如果输入为十进制,则不打印第一个命令。我检查了两个分开的代码,它们工作得很好。我只想打印十进制,如果是罗马,如果是十进制 roman_to_decimal = { 'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, \ 'D': 500, 'M': 1000 } def int2roman(numberdec): numerals={1:"I", 4:"IV"
roman_to_decimal = { 'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, \
'D': 500, 'M': 1000 }
def int2roman(numberdec):
numerals={1:"I", 4:"IV", 5:"V", 9: "IX", 10:"X", 40:"XL", 50:"L",
90:"XC", 100:"C", 400:"CD", 500:"D", 900:"CM", 1000:"M"}
result=""
for value, numeral in sorted(numerals.items(), reverse=True):
while numberdec >= value:
result += numeral
numberdec -= value
return result
numberchk=(input("Enter a Roman numeral or a Decimal numeral:" ))
##here is the problem i get
if numberchk==int :
print (int2roman(int(numberchk)))
sys.exit()
else :
roman=numberchk
converted = True
number = 0
for n in range(0, len(roman)-1):
this_char = roman[n]
next_char = roman[n+1]
if (this_char in roman_to_decimal) and \
(next_char in roman_to_decimal):
this_number = roman_to_decimal[this_char]
next_number = roman_to_decimal[next_char]
if this_number < next_number:
number -= this_number
else:
number += this_number
if converted:
## add last roman numeral
number += roman_to_decimal[roman[len(roman)-1]]
print ("\nThe roman numeral", roman, "is equal to",number)
roman_to_decimal={'I':1,'V':5,'X':10,'L':50,'C':100\
'D':500,'M':1000}
def int2roman(编号DC):
数字={1:“I”,4:“IV”,5:“V”,9:“IX”,10:“X”,40:“XL”,50:“L”,
90:“XC”、100:“C”、400:“CD”、500:“D”、900:“CM”、1000:“M”}
result=“”
对于值,排序中的数字(numbers.items(),reverse=True):
当numberdec>=值时:
结果+=数字
numberdec-=值
返回结果
numberchk=(输入(“输入罗马数字或十进制数字:”)
##这就是我遇到的问题
如果numberchk==int:
打印(int2roman(int(numberchk)))
sys.exit()
其他:
罗马=数字
已转换=真
数字=0
对于范围(0,len(roman)-1中的n:
这个字母=罗马字母[n]
下一个字符=罗马[n+1]
如果(该字符为罗马字符到十进制字符)和\
(下一个字符为罗马到十进制):
这个数字=罗马到十进制[这个字符]
下一个字符数=罗马到十进制[下一个字符]
如果此\u编号<下一个\u编号:
编号-=此编号
其他:
数字+=这个数字
如果转换:
##加上最后一个罗马数字
数字+=从罗马字母到十进制字母[罗马字母(罗马)-1]]
打印(“\n罗马数字”,罗马“等于”,数字)
您的线路
if numberchk==int :
似乎不正确。你应该使用
try:
decval = int(numberchk)
romanval = int2roman(decval)
#Continue with other processing here
except ValueError:
# Verify that it is a legal roman numeral
romanval = numberchk
decval = roman2int(numberchk)
# Continue with your processing
print ("\nThe roman numeral", romanval, "is equal to", decval)
if为false的原因可以在以下代码中找到
a = 3
b = ( a == int)
c = type (a)
d = type(int)
print a, b, c, d
输出:
3,False,(类型“int”)(类型“type”)
这是因为您正在尝试测试这些值。如果您真的想如图所示进行测试,那么应该
type(a) == int:
但是,在您的代码中,类型(numberchk)将返回“str”,因为您尚未转换它。这就是为什么必须使用try:except:方法。会出现什么错误?什么是完全回溯?
numberchk==int
从来都不是真的。你想在那里测试什么?你想测试numberchk
是否可能是一个数字吗?实际上,在if命令中,我签入mumberchk==int it,只打印else命令,不管输入是什么,如果输入它的十进制数,而不是罗马数,它就会得到我error@devnull:input()
在Python 3中总是返回字符串,因此OP想知道字符串值是否包含十进制数。我想我找到的傻瓜在这里会更有帮助。