错误:列表索引必须是整数或切片,而不是元组

2024-05-14 04:31:23 发布

您现在位置:Python中文网/ 问答频道 /正文

试图读取与abjadMapV一致的输入。然后返回AbjadMap中的字符。但我一直在犯这个错误

def show(ln):

    abjadMapV=[1,2,3,4,5,6,7,8,9,
              10,20,30,40,50,60,70,80,90,
              100,200,300,400,500,600,700,800,900,
              1000,29]

    abjadMap=['\u0627','\u0628','\u062C','\u062F','\u0647','\u0648','\u0632','\u062D','\u0637',
          '\u064A','\u0643','\u0644','\u0645','\u0646','\u0633','\u0639','\u0641','\u0635',
          '\u0642','\u0631','\u0634','\u062A','\u062B','\u062E','\u0630','\u0636','\u0638',
          '\u063A','\uFEFC']
    abjadN=["alif","ba","jeem","dal","haa","waw","za","ha","da",
              "ya","kahf","laam","meem","noon","seen","ayn","fa","sadh",
              "qaf","ra","sheen","ta","tha","kha","thal","dhad","za",
              "gayn","lam alif"]

    i=0

    for i in enumerate(abjadMapV):
        if ln in abjadMapV[i] :
            print(i)
            print(abjadMap[i])
            return abjadMap[i]

    b=input()
    a=show(b)
    print(a)

编辑为新代码,尝试获取show以返回索引

def show(ln):

abjadMapV=[1,2,3,4,5,6,7,8,9,
          10,20,30,40,50,60,70,80,90,
          100,200,300,400,500,600,700,800,900,
          1000,29]

abjadMap=['\u0627','\u0628','\u062C','\u062F','\u0647','\u0648','\u0632','\u062D','\u0637',
      '\u064A','\u0643','\u0644','\u0645','\u0646','\u0633','\u0639','\u0641','\u0635',
      '\u0642','\u0631','\u0634','\u062A','\u062B','\u062E','\u0630','\u0636','\u0638',
      '\u063A','\uFEFC']
abjadN=["alif","ba","jeem","dal","haa","waw","za","ha","da",
          "ya","kahf","laam","meem","noon","seen","ayn","fa","sadh",
          "qaf","ra","sheen","ta","tha","kha","thal","dhad","za",
          "gayn","lam alif"]

i=0

for i in abjadMapV:

    if ln == i:
        return abjadMap.index(i)

b=输入() a=表演(b) 印刷品(a)


Tags: indefshowprintlnzau0627u0648
2条回答

enumerate()返回元组列表,每个元组都是索引值对。您可以在迭代时分解结构以解决问题:

for i,j in enumerate(abjadMapV):
    if ln in j: # j is the value i. e. j = abjadMap[i] 
        print(i) # i is the index
        print(abjadMap[i] )
        return abjadMap[i] 

否则,您可以遍历range(len(abjadMapV)),并使用该变量作为索引

函数枚举返回元组。如此一致

print(abjadMap[i]) # i here is tuple.

您已经知道列表索引必须是整数而不是元组。 因此,请相应地编辑代码。 如果您不熟悉枚举函数,请查看以下示例:

l=['a','b','c']
k=enumerate(l)

枚举函数返回iterable对象: 所以k是一个可迭代的对象

next(k)

给出输出:

(0,'a')

这意味着0是列表l中a的索引

for i in enumerate(l)

i是一个元组而不是整数

相关问题 更多 >