enumerate( ) 方法 可以获取列表中的索引和元素
# 1. 获取列表的索引和元素 原始方法
s = [1,2,3,4]
for i in range(len(s)):
print(i,s[i])
# 2. 使用enumerate()方法 简单方便
s = [1,2,3,4]
for index , item in enumerate(s):
print(index,item)
练习一:把罗马字符转换为数字
R2N ={'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
# 参数为用户输入的字符串
def roman2num(s):
# 定义一个变量存放 值
r = 0
n = len(s)
# enumerate 可以获取列表的索引和元素
for i,ch in enumerate(s):
v = R2N[ch]
#如果不是最后一位并且当前的数值比后一位的数值小的时候,就采用减
if i < n-1 and v < R2N[s[i+1]]:
r -= v
else:
r += v
return r
s = input("请输入一个罗马字符")
v = roman2num(s)
print(f"转换的结果是:{v}")
练习二:把数字转换为罗马字符
"".join( )
语法:
'delimiter'.join(seq)
- delimiter:分隔符。可以为空。
- delimiter:要连接的元素序列、字符串、元组、字典。
作用:
将一个字符串数组或集合中的元素连接成一个字符串。它可以指定连接符,也可以指定起始和结束位置。
注意:N2R中的元素需要从大到小排序,后面方法中可以按顺序比较
# 从大大小排列进去
N2R = [
(1000, "M"),
(900, "CM"),
(500, "D"),
(400, "CD"),
(100, "C"),
(90, "XC"),
(50, "L"),
(40, "XL"),
(10, "X"),
(9, "IX"),
(5, "V"),
(4, "IV"),
(1, "I"),
]
def num2roman(num):
r = []
# 获取N2R中的值和对应的值
for v,s in N2R:
# 如果num = 67时 满足条件的v = 50,然后数组r中添加 v对应的s
while num >= v:
num -= v
r.append(s)
# 当num = 0时,跳出循环
if num == 0 :
break
return "".join(r)
n = input("请输入一个整数:")
res = num2roman(int(n))
print(f"转换后的结果是:{res}")