鱼C论坛

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

关于代码问题

[复制链接]
发表于 2020-7-12 21:36:22 | 显示全部楼层 |阅读模式

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

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

x
  1. file_name=input("请输入文件名:")
  2. f=open('file_name','w+')
  3. yuan=str(input("请输入需要替换的单词或字符:"))
  4. ti=str(input("请输入新的单词或字符:"))

  5. list1=list(f)

  6. length=len(list1)
  7. count=0
  8. for i in range(length):
  9.     if 'list[i]'=='yuan':
  10.         count+=1
  11. print("文件",file_name,"中共有",count,"个",yuan)
  12. print("您确定要把所有的【",yuan,"】替换为【",ti,"】吗?")
  13. answer=input("【Yes/No】:")
  14. if answer=="Yes":
  15.     for i in range(length):
  16.         if list1[i]==yuan:
  17.             list1[i]=ti
  18. f.close()
复制代码

代码功能是将指定的字符全部换成另一个字符,想请教一下大家,这个代码哪有问题啊?为什么执行出来都只显示有0个需要替换的?求指教,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-7-12 21:41:46 | 显示全部楼层
本帖最后由 liuzhengyuan 于 2020-7-12 22:00 编辑

错误1:
  1. f=open('file_name','w+')
复制代码
这一行,你的 file_name 加了引号
使程序的意思变成了 打开一个名叫 'file_name' 的文件

错误2:
你直接使用 w 模式打开,源文件里的内容就全部没有了(使用 w 打开无法做到读取文件内容)

应该先使用,r 模式先读取文件,然后再由 w 模式写入

错误3:
这句话……:
  1. if 'list[i]'=='yuan':
  2.         count+=1
复制代码
'list[i ]' 绝对是不等于 'yuan', 的(因为都是字符串)

看你这两句的意思应该是想把 f 文件中的所有字符变成列表,但是不用 r 模式打开,不用 read() 根本无法做到读取文件
(f 只是一个对象,而不是字符串,要使用 r 模式打开之后,然后 f.read() 才能做到文件读取)
  1. list1=list(f)

  2. length=len(list1)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-12 21:54:49 | 显示全部楼层
本帖最后由 Twilight6 于 2020-7-12 21:56 编辑





错误1:
你将 open 里面的 file_name 加上引号是指打开名为 file_name 文件了,而且 你 w 打开会导致覆盖你的文件为空文件

错误2:
  1. if 'list[i]'=='yuan':
复制代码
都加上了引号,表示的是这两个字符串是否相等

显然不相等,而且这里这样的判断没用,因为list1 里面的是文件一行一行的字符串内容,而判断你输入的部分字符

错误就不说了,楼上好像总结的差不多了,参考下下面的代码吧:

  1. file_name=input("请输入文件名:")
  2. f=open(file_name)
  3. yuan=input("请输入需要替换的单词或字符:")
  4. ti=input("请输入新的单词或字符:")

  5. list1=list(f)
  6. f.close()
  7. length=len(list1)
  8. count=0
  9. for i in range(length):
  10.     if yuan in list1[i]:
  11.         count += list1[i].count(yuan)
  12.         list1[i] = list1[i].replace(yuan,ti)

  13. print("文件",file_name,"中共有",count,"个",yuan)
  14. print("您确定要把所有的【",yuan,"】替换为【",ti,"】吗?")
  15. answer=input("【Yes/No】:")
  16. if answer=="Yes":
  17.     f = open(file_name, 'w')
  18.     f.writelines(list1)
  19.     f.close()
复制代码




小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 11:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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