Re: exercice python

トップ ページ

このメッセージに返信
著者: Mickael Profeta
日付:  
To: ML Guilde
題目: Re: exercice python
Hello

>prompt> cat python.py
>
>def chop(l):
>    return l[-1]=='\n' and l[:-1] or l

>
>fileIn = open("in.txt", "r")
>fileOut = open("out.txt", "w")
>
>nextLine=1
>lineNum=-1
># marche pas :  while( not line=fileIn.readline() ) :
>while( 1 ) :
>    line=fileIn.readline()
>    if( not line ) : break
>    lineNum += 1        # "lineNum++" marche pas !! dingue !
>    if( lineNum & 1 ):
>        fileOut.write(lineChop + line)
>    else:
>        #lineChop=chop(line)  # à dé-commenter pour un autre essai
>        lineChop=line[:-1]

>
># derniere ligne si nombre de lignes impair
>if( not lineNum & 1 ):
>    fileOut.write(lineChop + "\n")

>
># pas de close, rien ... comme un sauvage
>#EOF
>
>
>


Mmhh.. je te propose une version un peu plus élégante du code python:

fileIn = open("in.txt", "r")
fileOut = open("out.txt", "w")

lineNum=-1
for line in fileIn:
    lineNum += 1            
    if( lineNum & 1 ):
            fileOut.write(lineChop + line)
    else:
            lineChop=line[:-1]


if( not lineNum & 1 ):
    fileOut.write(lineChop + "\n")


fileIn.close()
fileOut.close()


J'ai gardé ton idée de code, sans optimiser a proprement parler, juste
écrit ça de manière plus "classique"

un petit test ;-)

mike@alezan:~$ time python python.py

real    0m4.761s
user    0m2.837s
sys     0m0.510s


mike@alezan:~$ time perl perl_v2.pl

real    0m6.150s
user    0m2.636s
sys     0m0.552s



Bon je dis ca je dis rien hein :-P

Mike