罗马整数到整数 - 简单
Roman integers to integeres - Simple
作业要求将罗马整数转换为整数。但是没有与罗马整数相关的语法(即 IV != 4 IV = 6)我正在努力使我的代码更有效率......
这是我的原始代码:
def roman_v2():
s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
count = 0
r_nums = ["M","D","C","X","V","I"]
for letter in s:
if letter in r_nums[0]:
count += 1000
elif letter in r_nums[1]:
count += 500
elif letter in r_nums[2]:
count += 100
elif letter in r_nums[3]:
count += 10
elif letter in r_nums[4]:
count += 5
elif letter in r_nums[5]:
count += 1
return count
这是我的错误程序:
def roman_v2():
s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
count = 0
r_nums = [["M",1000],["D",500],["C",100],["X",10],["V",5],["I",1]]
for i in s:
for j in range(0,5):
if s[i] == r_nums[j][0]:
count += r_nums[i][1]
return count
您可以使用字典和 sum()
函数来加强您的代码:
def roman_v2():
s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
numbers = {'M':1000, 'D':500, 'C':100, 'X':10, 'V':5, 'I':1}
return sum(numbers[num] for num in s)
这将查找每个字母的值,将它们全部相加,然后 return 总和。错误检查(对于错误的输入,例如 'MMpotato'
)由您决定。
这个
if s[i] == r_nums[j][0]:
应该是
if i == r_nums[j][0]:
因为我将成为角色,而不是索引。
而在count += r_nums[i][1]
中,i错了,应该是j。
给你
def roman_v2():
s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
count = 0
r_nums = [["M",1000],["D",500],["C",100],["X",10],["V",5],["I",1]]
for i in s:
for j in range(0,5):
if i == r_nums[j][0]:
count += r_nums[j][1]
return count
您可以在 python 中使用 dict
:
def roman_v2():
s = s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
r_nums = {'M': 1000, 'D': 500, 'C': 100, 'X': 10, 'V': 5, 'I': 1}
count = 0
for i in s:
count += r_nums.get(i)
return count
作业要求将罗马整数转换为整数。但是没有与罗马整数相关的语法(即 IV != 4 IV = 6)我正在努力使我的代码更有效率......
这是我的原始代码:
def roman_v2():
s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
count = 0
r_nums = ["M","D","C","X","V","I"]
for letter in s:
if letter in r_nums[0]:
count += 1000
elif letter in r_nums[1]:
count += 500
elif letter in r_nums[2]:
count += 100
elif letter in r_nums[3]:
count += 10
elif letter in r_nums[4]:
count += 5
elif letter in r_nums[5]:
count += 1
return count
这是我的错误程序:
def roman_v2():
s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
count = 0
r_nums = [["M",1000],["D",500],["C",100],["X",10],["V",5],["I",1]]
for i in s:
for j in range(0,5):
if s[i] == r_nums[j][0]:
count += r_nums[i][1]
return count
您可以使用字典和 sum()
函数来加强您的代码:
def roman_v2():
s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
numbers = {'M':1000, 'D':500, 'C':100, 'X':10, 'V':5, 'I':1}
return sum(numbers[num] for num in s)
这将查找每个字母的值,将它们全部相加,然后 return 总和。错误检查(对于错误的输入,例如 'MMpotato'
)由您决定。
这个
if s[i] == r_nums[j][0]:
应该是
if i == r_nums[j][0]:
因为我将成为角色,而不是索引。
而在count += r_nums[i][1]
中,i错了,应该是j。
给你
def roman_v2():
s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
count = 0
r_nums = [["M",1000],["D",500],["C",100],["X",10],["V",5],["I",1]]
for i in s:
for j in range(0,5):
if i == r_nums[j][0]:
count += r_nums[j][1]
return count
您可以在 python 中使用 dict
:
def roman_v2():
s = s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
r_nums = {'M': 1000, 'D': 500, 'C': 100, 'X': 10, 'V': 5, 'I': 1}
count = 0
for i in s:
count += r_nums.get(i)
return count