错误 'int' 对象不可订阅 - python

error 'int' object is not subscriptable - python

我是编程新手,我正在尝试简单的代码 rle 解压缩,但我得到错误 'int' object is not subscriptable in if (JumlahKarakter[i].isalpha() == True):,如何修复此错误?

这是我的代码

TeksAsli = input("Masukan Input Teks Yan Akan Dikompress: ")
JumlahKarakter = len(TeksAsli)
Teks = ""
for i in range(0, JumlahKarakter):
    if (JumlahKarakter[i].isalpha() == True):
        for j in range(0,JumlahKarakter[i+1]):
            Teks = Teks + TeksAsli[i]

print("Hasil Decompress = ", Teks)

你基本上想在这段代码中做的是你正在订阅你所采用的输入的长度(即存储在 TeksAsli JumlahKarakter 中的 len(TeksAsli)) .这肯定会 return 一个错误,因为例如如果长度为 1。你正在做类似 1[1] 的事情,这是没有意义的。其次,在python中,你不需要()括号来定义if语句条件。第三,如果值为 bool,则无需检查 if 语句,因为如果为真,它将自动 运行 if 语句。您可以执行以下操作:

TeksAsli = input("Masukan Input Teks Yan Akan Dikompress: ")
JumlahKarakter = len(TeksAsli)
Teks = ""
for i in range(0, JumlahKarakter):
    if TeksAsli[i].isalpha():
        Teks += TeksAsli[i]

print("Hasil Decompress = ", Teks)

我删除了一些小错误或不需要的代码来即兴创作。然而,上面的代码是正确的,但有一种更有效的方法是:

TeksAsli = input("Masukan Input Teks Yan Akan Dikompress: ")
final = ''.join(TeksAsli.split(' ')) #Splits the string into list wherever space found. Then joins it without any spaces
print(final)

这两个程序都能完美运行,但第二个程序效率更高,不需要很多变量。

由于 len() returns 和 integerrange() 的停止值需要改为 JumlahKarakter
我是说

for j in range(0,JumlahKarakter[i+1]): 

需要这样

for j in range(0,JumlahKarakter):

if 声明也是如此。

顺便说一句,看起来你正在尝试做这样的事情

text = input()
alpha = []
nums = []
for i in text:
    if i.isalpha():
        alpha.append(i)
    else:
        nums.append(i)
for j in range(len(alpha)):
    print(alpha[j]*int(nums[j]),end="")

你也可以这样做

text = input()
for i in range(0,len(text),2):
    print(text[i]*int(text[i+1]),end="")
import re

TeksAsli = input("Masukan Input Teks Yan Akan Dikompress: ")
try:
    find_num = int(re.findall(r'\d+', TeksAsli)[0])
    find_text = re.sub("(\d+)", "", TeksAsli)
    Teks = ""
    for i in range(find_num):
        Teks += find_text
    print(Teks)
except IndexError:
    print("Error")