【发布时间】:2020-06-25 16:59:38
【问题描述】:
我一直在尝试将字符串 (ex: aabbbacc) 编码为 a2b3a1c2 之类的东西
这是我尝试过的代码:
string_value = "aabbbacc"
temp_string = ""
for i in range(0, len(string_value)):
if i != len(string_value) or i > len(string_value):
temp_count = 1
while string_value[i] == string_value[i+1]:
temp_count += 1
i += 1
temp_string += string_value[i] + str(temp_count)
print(temp_string)
问题是即使我添加了if 条件来阻止越界发生,我仍然收到错误
Traceback (most recent call last):
File "C:run_length_encoding.py", line 6, in <module>
while string_value[i] == string_value[i+1]:
IndexError: string index out of range
我也试过
string_value = "aabbbacc"
temp_string = ""
for i in range(0, len(string_value)):
count = 1
while string_value[i] == string_value[i+1]:
count += 1
i += 1
if i == len(string_value):
break
temp_string += string_value[i]+ str(count)
print(temp_string)
现在,我知道可能有更好的方法来解决这个问题,但我试图理解为什么我得到了越界异常,即使我有一个 if 条件来阻止它,在什么部分逻辑我错了请解释...
【问题讨论】:
-
你的问题在这里
string_value[i] == string_value[i+1]: -
想一想当
i是字符串的最后一个值并且您执行i+1时会发生什么。 -
更准确地说,问题在于
i != len(string_value) or i > len(string_value)始终是True。这并不能防止i达到您想要的字符串的最后一个索引。
标签: python python-3.x python-2.7 indexoutofboundsexception stringindexoutofbounds