代码如下: https://gist.github.com/KnightNic/e9d2ce3321ab78b0824ebc4316cd7102
可以正常打印,比如只有两个文件时,会以 0: a.csv, 1: b.csv 显示,终端选择 0 或 1 可以正常执行后续代码。
可是想请教一下为什么指定 enumerate(files, 1)之后,当终端输入选择 2 的时候就报错呢? index list out of range,Google 了很多,可是没研究出来
不是程序员工程师,只是为了避免员工手动处理一些需要定期处理的大表格,减少工作量~所以自己研究了下 python 和 pandas
大学时的 C 语言还残存一丢丢记忆。。。
1
rocksolid 2021-01-14 14:13:37 +08:00 2
字符串 str 、列表 list 、元组 tuple 进行按索引取值的时候,默认范围为 0 ~ len(有序序列)-1,计数从 0 开始,而不是从 1 开始,最后一位索引则为总长度减去 1 。
如果输入的取值结果不在这个范围内,则报这个错。 |
2
Latin 2021-01-14 14:18:32 +08:00
l = [1,2]
for n,i in enumerate(l,1): print(n,i) # 1 1 # 2 2 l[2] # 此时 index list out of range 因为你设置了起始值为 1 而列表的索引没有改下标 |
3
KnightNic OP |
6
maocat 2021-01-14 15:32:37 +08:00
enumerate 点开看源码你就会发现第二个可变参数名字叫 start
|
7
KnightNic OP @Latin 感谢,目前已经大致解决了,也实现了一些 input 时的判断,不过想请教一下怎么去修改列表的索引起始值,从 1 开始,使只跟 enumerate ( files, 1 )一致呢?
我目前是用了一个 if 语句,强制剔除了 input 为 0 的情况 |