zoukankan      html  css  js  c++  java
  • 代码14

    需要计算每个intend下有多少个query,即计算Q开头的

    intend之间有空行

    不仅有I,Q,R,有些还有P

    这是最后一个intend的样子

    错误代码:

    f = open('/home/xbwang/Desktop/cs_update','r')
    intend = 0
    for line in f:
        if(line[0] == 'I'):
            intend = intend+1
    f1 = open('/home/xbwang/Desktop/cs_update','r')
    line1 = f1.readline()
    count = [0]*30
    for i in range(intend):
        while line1:
            line1 = f1.readline()if(line1[0] == 'Q'):
                count[i] = count[i]+1
            elif(line1[0] == 'I'):
                break
            else:
                continue
    print count

    报的错误:

    正确代码:

    f = open('/home/xbwang/Desktop/cs_update','r')
    intend = 0
    for line in f:
        if(line[0] == 'I'):
            intend = intend+1
    f1 = open('/home/xbwang/Desktop/cs_update','r')
    line1 = f1.readline()
    count = [0]*30
    for i in range(intend):
        while line1:
            line1 = f1.readline()
            if(len(line1) == 0):
                break
            else:
                if(line1[0] == 'Q'):
                    count[i] = count[i]+1
                elif(line1[0] == 'I'):
                    break
                else:
                    continue
    print count

    错误原因分析:当line1为最后一个空白时,while循环继续执行,这个时候再调用readline函数读下一行就是空了,这个时候调用line1[0]当然是数组越界,因为line1这时候为空。

    另一个值得注意的错误:

    错误代码:

    f = open('/home/xbwang/Desktop/cs_update','r')
    intend = 0
    for line in f:
        if(line[0] == 'I'):
            intend = intend+1
    line1 = f.readline()
    print line1
    count = [0]*30
    #for i in range(intend):
        #while line1:
                #line1 = f1.readline()
                #if(line1[0] == 'Q'):
                    #count[i] = count[i]+1
                #elif(line1[0] == 'I'):
                    #break
                #else:
                    #continue
    #print count

    错误:

    可以看到这里的输出是一个空行

    错误原因分析:

    line1 = f.readline()这一行出现了错误,因为之前已经有了“for line in f:”这一行,即已经把整个文件读完,所以用line1 = f.readline()再读就是空了。这和readline函数一样,每读一次,少一行。避免此错误的方法就是再open这个文件进行读。
  • 相关阅读:
    mysql mgr集群部署
    单节点的cratedb添加一个节点组成一个集群
    单节点的es添加另外一个节点组成主从集群
    mongodb3.0.1副本集安装部署(仲裁节点模式)
    mongodb从库的登陆执行命令不用每次输入slaveOk
    redis4.0集群部署
    ssdb双主部署
    threaded_execution参数开启的情况下导致ogg无法注册
    cratedb备份迁移到新的机器
    cratedb备份和恢复
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/6410530.html
Copyright © 2011-2022 走看看