继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

python没有变量定义所以要比较时要注意类型

郭月翔
关注TA
已关注
手记 27
粉丝 3
获赞 14

今天使用python随便写另一个读取文件的程序,文件的内容是:第一行是文件总行数与总的数据大小(行数从第二行开
始算起),期间需要对比行数是否一致。代码中打印出总行数与计算出来的行数是一致的,但是代码中通过!=判断是不一致的。比较纳闷,怎么回事?之后打印出两个行数的变量类型发现一个int,一个string类型,那就肯定不一致了,原来读取到第一行后给总行数赋值是没有类型转化。

import os
import sys

#总的交易笔数
sum_count = 0
#总交易额
sum_money=0.0
#总行数
count = 0
#明细之和
detail_sum = 0.0

rootdir = os.getcwd()
list = os.listdir(rootdir) #列出文件夹下所有的目录与文件
for i in list:
    path = os.path.join(rootdir,i)#将目录名与文件名拼接成一个完整的路径
    if os.path.isfile(path):
        #判断是不是哦txt文件
        file_post = str(i.split('.')[-1])
        if file_post == 'txt':
            fo = open(path, "r")
            #第一遍循环校对总金额与总笔数
            for line in fo.readlines():
                if line.count('|')==1:
                    ***sum_count = int(line.split('|')[0])***#这里要转化类型,通过split赋值的都是string类型
                    sum_money = line.split('|')[-1]
                else:
                    count += 1
                    rmb = line.split('|')[7]
                    detail_sum = detail_sum + float(rmb)

            print("总交易金额:"+str(detail_sum))
            if sum_count != count:#类型不一致也会执行下面的语句
                print("总交易笔数与明细中的笔数不一致,%d:%d"%(sum_count,count))
            elif sum_money != detail_sum:
                print("总金额与明细中的金额汇总不一致")
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP