1

ねえ、文字列インデックスが範囲外のエラーを出し続けています...私はすべてを試しましたが、助けていただけませんか。ありがとうございます。

x = 0
y = ""
z = 0
user_input = raw_input("Message? ")

while z < len(user_input):
    y = y + " " + user_input[x]
    x = x +3
    z += 1
    if x > len(user_input):
         print y
         break
4

3 に答える 3

2

の場合にのみ壊れif x > len(user_input):ます。しかし、もしx % 3 == 0?

つまり、入力文字列の長さは 3 で割り切れます。毎回 3 ずつインクリメントxし、入力文字列の長さが 3 の倍数の場合、エラーが発生します。

それを修正するには、if x >= len(user_input):代わりに使用する必要があります。

于 2012-09-02T10:42:44.413 に答える
1

user_input が 3 の倍数の場合、x は最終的に user_input の長さと等しくなります (インデックスは実際に存在するよりも 1 大きくなります)。

user_input = "abc"

誰かがあなたの user_input にそれで答えると、長さは 3 になりますが、インデックスは 2 までしか上がりません (user_input[0] == "a", user_input[1] == "b", user_input[ 2] == "c"、user_input[3] は IndexError をスローします)。

代わりに、if ステートメントを次のように変更します。

while x >= len(user_input):
于 2012-09-02T10:50:53.943 に答える
0

多分あなたのif状態は読むべきx >= len(user_input)ですか?( user_input[x]with xbeinglen(user_input)はおそらくあなたに迷惑をかけています)

于 2012-09-02T10:48:23.057 に答える