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呢?

这意味着输入字符串的长度可以被三除。x每次增加三,当输入字符串的长度是三的倍数时,你会得到一个错误。

要修复它,您应该改用它if x >= len(user_input):

于 2012-09-02T10:42:44.413 回答
1

如果 user_input 是 3 的倍数,则 x 最终将等于 user_input 的长度(并且索引将比实际存在的大一)。

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]存在x可能len(user_input)会给你带来麻烦)

于 2012-09-02T10:48:23.057 回答