2016-05-12 10 views
0

のうちインデックスラインのための「範囲外の文字列インデックスが」エラー「サブ=サブ+ S [J]」:エラー:次のコードのショー範囲

s=raw_input() 
    l=len(s) 
    row=int(l**0.5) 
    column=row+1 
    i=0 
    while i<column: 
     j=i 
     sub="" 
     while j<len: 
      sub=sub+s[j] 
      j=j+column 
     print sub, 
     sub="" 
     i=i+1 

エラーとは何ですか?

答えて

1

は、おそらく使用することを探しています:

while j < len(s): 

の代わりに:

レックスS.にも述べたように
while j<len: 

は、lenはPythonで組み込みに予約されて、それがなぜこのコードがさえた作品ですので、 (あなたは "len"変数を宣言したことはありません)。

彼も述べたように、コメントを残し、わかりやすい変数名を使用して、コードが実際に何をしているのかを判断する必要があります。私は演算子の間にスペースを入れなければならないと付け加えたいと思います。だからではなく、

column=row+1 

のそれは、あなたがより多くを学ぶためにPEP 8を読むことができる

column = row + 1 

でなければなりません。

1

lenは組み込み関数であり、条件式j<lenは常にtrueになります。あなたはまた、変数名は、より説明的にするために試してみてください

while j < l: 

:に行を変更します。一文字の変数名を使うのは、Pythonのアンチパターンです。

+2

Pythonだけでなく、 – Barmar

関連する問題