鱼C论坛

 找回密码
 立即注册
查看: 1003|回复: 2

[已解决]29讲课后作业4,实现“全部替换”功能

[复制链接]
发表于 2020-8-26 23:44:46 | 显示全部楼层 |阅读模式

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

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

x
4. 编写一个程序,实现“全部替换”功能。
def file_save(file_name, word_num, new_word):
    f = open(file_name)
    count = 0
    num = 0
    con = []
    for each in f:
        if word_num in each:
            count = each.count(word_num)
            #count += each.count(word_num)
            num += count    #num += count放在if语句中和放在if语句外面有区别吗?我个人理解是没有区别,问题是运行之后统计有区别
            each = each.replace(word_num, new_word)
        con.append(each)
        #num += count
   
    print('文件 %s 中共有%s个【%s】' % (file_name, num, word_num))
    print('确定单词【%s】转换为【%s】吗?' % (word_num, new_word))
    decide = input('【YES/NO】:' )

    if decide in ['YES', 'Yes', 'yes']:
        f_w = open(file_name, 'w') #写入方式打开原文件
        f_w.writelines(con) #将修改之后的文件内容(con列表内),覆盖原文件内容
        f_w.close()
        
    f.close()


file_name = input('input file name:')
word_num = input('input need replace word:')
new_word = input('input new word:')
file_save(file_name, word_num, new_word)

#num += count放在if语句中和放在if语句外面有区别吗?我个人理解是没有区别,问题是运行之后统计有区别
num += count放在if语句中执行,运行结果是统计数正确的
num += count放在if语句外执行,运行结果是统计数就不对了
所以是我理解有问题吗?新手求解答
最佳答案
2020-8-27 00:17:44
放在里边和外边是有区别的,放在里边是正确的。你放在if语句外边的话就是说无论if后边的条件是否正确,都会执行num += count这条语句的,当if条件不成立的时候,正常来讲是不需要执行这条语句的,但是你放到了外边,程序会把你上次执行if语句时count的值再加一遍,这样显然是不对的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-27 00:17:44 | 显示全部楼层    本楼为最佳答案   
放在里边和外边是有区别的,放在里边是正确的。你放在if语句外边的话就是说无论if后边的条件是否正确,都会执行num += count这条语句的,当if条件不成立的时候,正常来讲是不需要执行这条语句的,但是你放到了外边,程序会把你上次执行if语句时count的值再加一遍,这样显然是不对的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-27 00:21:06 | 显示全部楼层
chong0918 发表于 2020-8-27 00:17
放在里边和外边是有区别的,放在里边是正确的。你放在if语句外边的话就是说无论if后边的条件是否正确,都会 ...

卧槽,我丫的傻逼了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 03:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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