我一直在尝试将字符串(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条件来阻止它,我在逻辑的哪一部分出错请解释
问题在于:
避免越界的最简单方法是根本不索引字符串:
输出:
首先,这张支票很奇怪:
第二,您检查i,但读取i+1的值,并且可能是下一个
因此,我的建议是把条件放在你的时间内
并且在检查i==len(string\u value)后,不允许读取string\u value[i]
(我提醒您:“break语句,就像在C中一样,从最内层的for或while循环中分离出来。”)
遍历字符串中的每个字符,然后检查下一个字符是否与当前字符相同。如果是,则添加一个,然后将计数添加到临时字符串并将计数重置为1
相关问题 更多 >
编程相关推荐