鱼C论坛

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

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

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

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

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

x
文件a和b功能如下:

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

例:
终端输入
python a.py a1.txt a2.txt

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

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


以下是a代码
import sys
import re
def countFile(filename,words):
    try:
        f = open(filename,"r",encoding = "gbk" )
    except Exception as e:
        print(e)
        return 0
    txt = f.read()
    f.close()
    splitChars = set([])
    for c in txt:
        if not ( c >= 'a' and c <= 'z' or c >= 'A' and c <= 'Z'):
            splitChars.add(c)
    splitStr = ""
    for c in splitChars:
        if c in {'.','?','!','"',"'",'(',')','|','*','$','\\','[',']','^','{','}'}:
            splitStr += "\" + c + "|"
        else:
            splitStr +=  c + "|"
    splitStr += " "
    lst = re.split(splitStr,txt)
    for x in lst:
        if x == "":
            continue
        lx = x.lower()
        if lx in words:
            words[lx] += 1
        else:
            words[lx] = 1
        return 1

result = {}
if countFile(sys.argv[1],result) ==0:
    exit()
lst = list(result.items())
lst.sort()
f = open(sys.argv[2],"w",encoding="gbk")
for x in lst:
    f.write("%s\t%d\n" % (x[0],x[1]))
f.close()

以下是b代码
import sys
import re
def countFile(filename,words):
    try:
        f = open(filename,"r",encoding = "gbk" )
    except Exception as e:
        print(e)
        return 0
    txt = f.read()
    f.close()
    splitChars = set([])
    for c in txt:
        if not ( c >= 'a' and c <= 'z' or c >= 'A' and c <= 'Z'):
            splitChars.add(c)
    splitStr = ""
    for c in splitChars:
        if c in {'.','?','!','"',"'",'(',')','|','*','$','\\','[',']','^','{','}'}:
            splitStr += "\" + c + "|"
        else:
            splitStr +=  c + "|"
    splitStr += " "
    lst = re.split(splitStr,txt)
    for x in lst:
        if x == "":
            continue
        lx = x.lower()
        if lx in words:
            words[lx] += 1
        else:
            words[lx] = 1
    return 1

result = {}
if countFile(sys.argv[1],result) ==0:
    exit()
lst = list(result.items())
lst.sort()
f = open(sys.argv[2],"w",encoding="gbk")
for x in lst:
    f.write("%s\t%d\n" % (x[0],x[1]))
f.close()


附件包含ab文件和例子txt
b.zip (1.41 KB, 下载次数: 2)
最佳答案
2022-11-16 23:05:45
【a.py】:
def countFile(filename,words):
. . . . . .
    for x in lst:
. . . . . .
        return 1   # 区别在这一行的缩进位置
【b.py】:
def countFile(filename,words):
. . . . . .
    for x in lst:
. . . . . .
    return 1       # 区别在这一行的缩进位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-16 23:05:45 | 显示全部楼层    本楼为最佳答案   
【a.py】:
def countFile(filename,words):
. . . . . .
    for x in lst:
. . . . . .
        return 1   # 区别在这一行的缩进位置
【b.py】:
def countFile(filename,words):
. . . . . .
    for x in lst:
. . . . . .
    return 1       # 区别在这一行的缩进位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

【b.py】:

牛哦,vscode都检测不出来,竟然没检测缩进,python的缩进很严格呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

有一种错误叫  逻辑错误,这个是任何编辑器也无法检测出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 15:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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