2087721266 发表于 2020-8-26 23:44:46

29讲课后作业4,实现“全部替换”功能

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语句外执行,运行结果是统计数就不对了
所以是我理解有问题吗?新手求解答

chong0918 发表于 2020-8-27 00:17:44

放在里边和外边是有区别的,放在里边是正确的。你放在if语句外边的话就是说无论if后边的条件是否正确,都会执行num += count这条语句的,当if条件不成立的时候,正常来讲是不需要执行这条语句的,但是你放到了外边,程序会把你上次执行if语句时count的值再加一遍,这样显然是不对的。

2087721266 发表于 2020-8-27 00:21:06

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

{:5_104:}卧槽,我丫的傻逼了
页: [1]
查看完整版本: 29讲课后作业4,实现“全部替换”功能