鱼C论坛

 找回密码
 立即注册
查看: 1698|回复: 9

[已解决]29课课后作业第一题

[复制链接]
发表于 2021-2-21 12:25:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问各位大佬,比较两个文件不一样的程序可以用while循环写吗?
我用while写了一段,但是报了变量错误,如果可以的话请问该怎么修改代码呢?
def compare(f1,f2):
    file1 = open(f1)
    file2 = open(f2)
    count = 0
    differ = []
    while 1:
        cuont += 1
        if file1.readline != file2.readline:
            differ.append(count)
        file1.close
        file2.close
        return differ
f1 = input('请输入第一个文件名:')
f2 = input('请输入第二个文件名:')
differ = compare(f1,f2)
if len(differ) == 0:
    print('文件一致')
else:
    print('一共有%d处不一致' %len(differ))
    for each in differ:
        print('第%d行不一致' %each)
最佳答案
2021-2-21 13:41:05
小智1998 发表于 2021-2-21 12:56
对的,马虎了,但是改了之后还是不能按要求实现,运行后就只能打印第一行不一致,但实际是其他行不一致
...

这样试试
  1. def compare(f1,f2):
  2.     file1 = open(f1)
  3.     file2 = open(f2)
  4.     count = 0
  5.     differ = []
  6.     while f.readline():
  7.         count += 1
  8.         if file1.readline != file2.readline:
  9.             differ.append(count)
  10.     file1.close()
  11.     file2.close()
  12.     return differ
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-21 12:29:51 | 显示全部楼层
拼写错误..把while循环里的cuont改成count
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-2-21 12:56:02 | 显示全部楼层
qiuyouzhi 发表于 2021-2-21 12:29
拼写错误..把while循环里的cuont改成count

对的,马虎了,但是改了之后还是不能按要求实现,运行后就只能打印第一行不一致,但实际是其他行不一致

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-21 13:41:05 | 显示全部楼层    本楼为最佳答案   
小智1998 发表于 2021-2-21 12:56
对的,马虎了,但是改了之后还是不能按要求实现,运行后就只能打印第一行不一致,但实际是其他行不一致
...

这样试试
  1. def compare(f1,f2):
  2.     file1 = open(f1)
  3.     file2 = open(f2)
  4.     count = 0
  5.     differ = []
  6.     while f.readline():
  7.         count += 1
  8.         if file1.readline != file2.readline:
  9.             differ.append(count)
  10.     file1.close()
  11.     file2.close()
  12.     return differ
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-21 14:51:35 | 显示全部楼层

en...请问这里的while f。readline是什么意思呢?f没有被定义,运行报错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-21 15:08:10 | 显示全部楼层
小智1998 发表于 2021-2-21 14:51
en...请问这里的while f。readline是什么意思呢?f没有被定义,运行报错了

额,是我的问题
改成这样:
  1. def compare(f1,f2):
  2.     file1 = open(f1)
  3.     file2 = open(f2)
  4.     count = 0
  5.     differ = []
  6.     while (c1 := f.readline()) and (c2 := f.readline()):
  7.         count += 1
  8.         if c1 != c2:
  9.             differ.append(count)
  10.     file1.close()
  11.     file2.close()
  12.     return differ
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +3 收起 理由
Daniel_Zhang + 3 + 3 + 3 无条件支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-2-21 15:16:29 | 显示全部楼层
qiuyouzhi 发表于 2021-2-21 15:08
额,是我的问题
改成这样:

第 6 行 c1 := f.readline() 是啥意思麻烦解释一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-21 15:22:29 | 显示全部楼层
Daniel_Zhang 发表于 2021-2-21 15:16
第 6 行 c1 := f.readline() 是啥意思麻烦解释一下

https://fishc.com.cn/thread-159745-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-21 15:46:08 | 显示全部楼层
qiuyouzhi 发表于 2021-2-21 15:22
https://fishc.com.cn/thread-159745-1-1.html

太强了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-21 17:56:07 | 显示全部楼层
qiuyouzhi 发表于 2021-2-21 15:08
额,是我的问题
改成这样:

好的,代码运行成功了,但是我不理解while里的思路,能麻烦说一下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 17:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表