加州老鹰886 发表于 2021-3-23 11:21:42

0基础Python_029_01习题


我的:
file1 = input('请输入需要比较的头一个文件名:')
file2 = input('请输入需要比较的另一个文件名:')

f1 = open('E:\\2021 Tasks\\01_Python\\02_习题\\029\\' + file1 )
f2 = open('E:\\2021 Tasks\\01_Python\\02_习题\\029\\' + file2 )

k = 0

for i in range(len(f1.readlines())):
    f1.close()
    f1 = open('E:\\2021 Tasks\\01_Python\\02_习题\\029\\' + file1 )
    if f1.readlines() != f2.readlines():
      k += 1
      print("两个文件共有【", k ,"】处不同:")
      print("第", i ,"行不一样")

报错:
File "e:/2021 Tasks/01_Python/02_习题/029_01.py", line 12, in <module>
    if f1.readlines() != f2.readlines():
IndexError: list index out of range


不太理解为啥报错:

f1.readlines()返回一个列表
f1.readlines()[ i ] 返回列表中的第 i 个元素

用 if f1.readlines() != f2.readlines(): 做判断,然后返回需要的结果,不是挺好嘛?

为啥实际上f1.readlines()[ i ]好像是按照字符串来返回的?

小伤口 发表于 2021-3-23 11:34:21

索引是从0开始索引的
len(f1.readlines())是一开始计数的
报错也是列表索引超出范围
所以试试吧
for i in range(len(f1.readlines())):
改成
for i in range(len(f1.readlines())减1):

代码小白liu 发表于 2021-3-23 12:21:36

为啥f1要先colse?
页: [1]
查看完整版本: 0基础Python_029_01习题