鱼C论坛

 找回密码
 立即注册
查看: 2941|回复: 3

[已解决]一样的代码,结果却不一样

[复制链接]
发表于 2022-11-16 22:47:14 | 显示全部楼层 |阅读模式

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

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

x
文件a和b功能如下:

终端接收当前目录下两个txt文件,将第一个文件的单词统计写入第二个txt文件中

例:
终端输入
  1. python a.py a1.txt a2.txt
复制代码


但是结果是a 只能写入第一行,b成功运行全部统计

用vscode对比过ab两个文件代码无任何区别,连空格换行都是一致


以下是a代码
  1. import sys
  2. import re
  3. def countFile(filename,words):
  4.     try:
  5.         f = open(filename,"r",encoding = "gbk" )
  6.     except Exception as e:
  7.         print(e)
  8.         return 0
  9.     txt = f.read()
  10.     f.close()
  11.     splitChars = set([])
  12.     for c in txt:
  13.         if not ( c >= 'a' and c <= 'z' or c >= 'A' and c <= 'Z'):
  14.             splitChars.add(c)
  15.     splitStr = ""
  16.     for c in splitChars:
  17.         if c in {'.','?','!','"',"'",'(',')','|','*','$','\\','[',']','^','{','}'}:
  18.             splitStr += "\" + c + "|"
  19.         else:
  20.             splitStr +=  c + "|"
  21.     splitStr += " "
  22.     lst = re.split(splitStr,txt)
  23.     for x in lst:
  24.         if x == "":
  25.             continue
  26.         lx = x.lower()
  27.         if lx in words:
  28.             words[lx] += 1
  29.         else:
  30.             words[lx] = 1
  31.         return 1

  32. result = {}
  33. if countFile(sys.argv[1],result) ==0:
  34.     exit()
  35. lst = list(result.items())
  36. lst.sort()
  37. f = open(sys.argv[2],"w",encoding="gbk")
  38. for x in lst:
  39.     f.write("%s\t%d\n" % (x[0],x[1]))
  40. f.close()
复制代码


以下是b代码
  1. import sys
  2. import re
  3. def countFile(filename,words):
  4.     try:
  5.         f = open(filename,"r",encoding = "gbk" )
  6.     except Exception as e:
  7.         print(e)
  8.         return 0
  9.     txt = f.read()
  10.     f.close()
  11.     splitChars = set([])
  12.     for c in txt:
  13.         if not ( c >= 'a' and c <= 'z' or c >= 'A' and c <= 'Z'):
  14.             splitChars.add(c)
  15.     splitStr = ""
  16.     for c in splitChars:
  17.         if c in {'.','?','!','"',"'",'(',')','|','*','$','\\','[',']','^','{','}'}:
  18.             splitStr += "\" + c + "|"
  19.         else:
  20.             splitStr +=  c + "|"
  21.     splitStr += " "
  22.     lst = re.split(splitStr,txt)
  23.     for x in lst:
  24.         if x == "":
  25.             continue
  26.         lx = x.lower()
  27.         if lx in words:
  28.             words[lx] += 1
  29.         else:
  30.             words[lx] = 1
  31.     return 1

  32. result = {}
  33. if countFile(sys.argv[1],result) ==0:
  34.     exit()
  35. lst = list(result.items())
  36. lst.sort()
  37. f = open(sys.argv[2],"w",encoding="gbk")
  38. for x in lst:
  39.     f.write("%s\t%d\n" % (x[0],x[1]))
  40. f.close()
复制代码



附件包含ab文件和例子txt
b.zip (1.41 KB, 下载次数: 2)
最佳答案
2022-11-16 23:05:45
【a.py】:
  1. def countFile(filename,words):
  2. . . . . . .
  3.     for x in lst:
  4. . . . . . .
  5.         return 1   # 区别在这一行的缩进位置
复制代码

【b.py】:
  1. def countFile(filename,words):
  2. . . . . . .
  3.     for x in lst:
  4. . . . . . .
  5.     return 1       # 区别在这一行的缩进位置
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-11-16 23:05:45 | 显示全部楼层    本楼为最佳答案   
【a.py】:
  1. def countFile(filename,words):
  2. . . . . . .
  3.     for x in lst:
  4. . . . . . .
  5.         return 1   # 区别在这一行的缩进位置
复制代码

【b.py】:
  1. def countFile(filename,words):
  2. . . . . . .
  3.     for x in lst:
  4. . . . . . .
  5.     return 1       # 区别在这一行的缩进位置
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-16 23:11:06 | 显示全部楼层
jackz007 发表于 2022-11-16 23:05
【a.py】:

【b.py】:

牛哦,vscode都检测不出来,竟然没检测缩进,python的缩进很严格呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-17 07:17:27 From FishC Mobile | 显示全部楼层
jcpython2 发表于 2022-11-16 23:11
牛哦,vscode都检测不出来,竟然没检测缩进,python的缩进很严格呢

有一种错误叫  逻辑错误,这个是任何编辑器也无法检测出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 20:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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