• Python!Are you kidding me?


    前几天由于python给我带来了兴奋写了一篇文章叫做《The beauty of python 1》,今天则是由于一个小错误而写下此文。

    也是缘因为我的工作,问题是这种:

    我有一个文档。里面存储了一行信息

    商品分类#该分类的商品数

    商品分类是不会出现#(所以我保存时候用了#作为分隔符),而商品总是从1到商品数n编号,我得到这个商品数之后。就能够遍历调用操作函数(简单记为fun吧)。

    理所当然拉,我设置了分隔符。当然就是为了使用split。

    之后我写了几行这种代码。

    f=open('record.txt','r')
    info=f.readlines()[0]
    f.close()
    end=info.split('#')[-1]
    beg=1
    while beg<=end:
           fun(beg)
           beg+=1
    之后我就安心地交给后台操作了

    nohup python a.py &

    之后我就在写其它了,由于处理的是海量数据。所以我等了一个下午再回去看的时候。发现程序还没有结束。不再我估计的范围内。

    聪明的你,看出什么问题了吗?

    后来我增加了一句非常easy的话。

    f=open('record.txt','r')
    info=f.readlines()[0]
    f.close()
    end=info.split('#')[-1]
    beg=1
    while beg<=end:
           print beg#这句
           fun(beg)
           beg+=1

    可是。我的数据量非常大,并且fun操作时间非常慢!这就纠结了!

    这么简单的结果,居然会出错?我毫不怀疑main函数内,而去看大段的fun,可是苦苦试验了非常多次,还是不行阿。

    当时。我差点怀疑是我的py坏了,还是在逗我!(作者心急如焚,居然会怀疑自己的编译器。我的fun非常恶心的一堆正则)

    后来。我用肉眼来观察,难道是我的split出问题了吗?之后又加了一句。

    f=open('record.txt','r')
    info=f.readlines()[0]
    f.close()
    end=info.split('#')[-1]
    print end #这句
    beg=1
    while beg<=end:
           print beg
           fun(beg)
           beg+=1
    end还是非常正常阿!

    这下就烦恼了,是我的程序问题吗。还是真的没执行完?

    Then,我去了个洗手间。

    细致一想,好像split后得到的是字符串。!

    字符串!

    可是,字符串不是会转换成数字吗?那究竟也不至于没跑完阿,比方'18'(我如果而已,实际大多了。

    )

    数字与字符串的比較呢?

    后来我写了一个測试函数

    beg=1
    while beg<'1':
        print beg
        beg+=1

    死循环了。。


    我带着一腔愤慨与兴奋,改动了程序

    f=open('record.txt','r')
    info=f.readlines()[0]
    f.close()
    end=int(info.split('#')[-1])
    beg=1
    while beg<=end:
           fun(beg)
           beg+=1


    程序总算是正常了。

    好吧。被py玩了一个下午。

    后来。我发现,用xrange会直接报错,下次还是用xrange吧。




  • 相关阅读:
    java 3大特性
    注解@JsonIgnore和注解@JsonIgnoreProperties
    spring bean 的介绍
    Spring注解的实现原理和Spring常用注解介绍
    Spring中 @Component @Controller @Repository @Service 注解
    Java Collection集合中List,Set,Queue以及Map的使用
    Spring Security PasswordEncoder 密码校验和密码加密
    java中System.out.print()与System.out.println()与System.out.printf()的差别
    Arrays.fill 数组填充工具类
    Hashmap与Hashset的区别
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7019625.html
Copyright © 2020-2023  润新知