n=int(input())
zm={2:'B',3:'C',4:'D',5:'E',6:'F',7:'G',8:'H',9:'I',10:'J',11:'K',12:'L',13:'M',14:'N',15:'O',16:'P',17:'Q',18:'R',19:'S',20:'T',21:'U',22:'V',23:'W',24:'X',25:'Y',26:'Z'}
ls=['A']
start='A'
for j,value in zm.items():
start=start+str(value)+start ##字符串拼接
ls.append(start)
for i,j in enumerate(ls,1): ##索引由1开始
if n==i:
print(j)
Break
下面是我的理解,供参考:
1、首先应该是获取一个n的输入,并把转换为int整数,用于后面获取列表某一项
2、然后初始化键值对zm和列表ls,字符串start
3、遍历键值对,把字符串start赋值为原来的值,再加上遍历到的每一项键值对的值,再加上原来start的值
再把新赋值的字符串start添加到列表ls
4、用一个for循环遍历列表,索引从1开始,如果访问到输入的第n项则打印列表这一项
我把键值对改为只保留原来前两项,然后在第一个for循环增加打印语句,观察每一次遍历字符串start和列表ls的变化,以方便理解代码的逻辑,(如果运行全部键值对,时间可能要很久,或者可能会有其他问题,测试两项正常运行)测试代码及其注释如下:
参考链接:
python 键值对的理解与运用_LaughingSister的博客-CSDN博客_python 键值对
https://jingyan.baidu.com/article/f79b7cb3bfec66d045023e16.html
Python内置函数之enumerate() 函数 - YifChan - 博客园
n=int(input())
#https://blog.csdn.net/laughingsister/article/details/108340934
zm={2:'B',3:'C'}
#这个zm是个键值对,数字是键,字母是值
#zm={2:'B',3:'C',4:'D',5:'E',6:'F',7:'G',8:'H',9:'I',10:'J',11:'K',12:'L',13:'M',14:'N',15:'O',16:'P',17:'Q',18:'R',19:'S',20:'T',21:'U',22:'V',23:'W',24:'X',25:'Y',26:'Z'}
#ls初始化为只有一个字符串'A'的列表
ls=['A']
#start初始化为字符串'A'
start='A'
#for循环遍历键值对,j为遍历到的键,value为遍历到的值
for j,value in zm.items():
#把start用原来的值加上 遍历到的键值对里面的每一个值 ,再加上start原来的值
#如第一次遍历时,start= 'A'+ 'B'+ 'A' ('A'为start原来的值,'B'为遍历到的键值对第一个的值)
start=start+str(value)+start ##字符串拼接
print("start=",start)
#把start添加到列表
#https://jingyan.baidu.com/article/f79b7cb3bfec66d045023e16.html
ls.append(start)
print("ls=",ls)
#用for循环遍历列表
#https://www.cnblogs.com/yifchan/p/python-1-40.html
for i,j in enumerate(ls,1): ##索引由1开始
#打印列表ls输入的第几项的值
#如果输入是1,就会打印列表第一项:'A'。
if n==i:
print(j)
break