错误 '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 和 integer
,range()
的停止值需要改为 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")
我是编程新手,我正在尝试简单的代码 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 和 integer
,range()
的停止值需要改为 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")