2017-11-22 12 views
-1

私は私がここで間違ってやっているかわからないんだけど、Pythonの本をグーグルと読んで一日を過ごした。..PythonのLEN()混乱

私は、次の機能があります。

def extract(inNo, inputFile2, outputFile): 
    ifile = open(inputFile2, 'r') 
    ofile = open(outputFile, 'w') 
    lines = ifile.readlines() 
    for line in lines: 
     print(str(len(line))) 
     if str(len(line)) == str(inNo): 
      ofile.write(line) 

を私は」 len()を理解しようとすると、使用すると奇妙な結果が出るようです。 私の入力ファイルは次のとおりです。

2 
3 
4 
5 
6 
7 
8 
8 

と出力ファイルは次のようになります。私はinNo変数として「7」を使用している場合

1 
22 
333 
4444 
55555 
666666 
7777777 
88888888 

は今、私が手出力(すなわち、print)があります:

666666 

私は1すなわちからpython.exe長カウント開始にチェックインから確信している:

len('123') 

3 

len()の私の理解が間違っているの結果を与えるだろうか、私はそれが間違ってコーディングのでしょうか?

本質的に、この機能は何ですか。それは引数として入力、出力、文字長を取ります。これらは別の関数から来て、2番目の関数は引数でこの関数を呼び出します。

この関数は、入力ファイルから行を読み込みます。 すべての行について、文字長を取得し、それを入力番号と比較します。 等しい場合は、その行を出力ファイルに書き込む必要があります。私は "else"を持っていないと仮定します。それは反復を続けるべきです。 print()関数を使うと、長さとして計算されたものを正確に見ることができます。

len()(len(line)+ 1)に ' - 1'または '+ 1'を追加しようとすると、さらに奇妙なことが起こります。

+2

'len(123)'は3ではありません。 'len(123)'は、整数が長さを持たないため、TypeErrorを発生させます。 – user2357112

+6

入力ファイルの各行は、改行文字で終わります。 Pythonのreadlines()関数は、これらの行末を削除しません。したがって、各行の長さは 'charactersYouCanSee + 1'、' 666666'行は '666666 \ n'です(' \ n'は1文字です)。 – Bilkokuya

+0

'' \ n''文字はすべての行。改行を表示するエディタを使用してください –

答えて

4

len()は、改行文字\nも考慮しているため、最後の行を除くすべての行で1つずつ増えています。