首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >builtins.ValueError: 0不在列表中

builtins.ValueError: 0不在列表中
EN

Stack Overflow用户
提问于 2020-12-10 15:33:16
回答 1查看 150关注 0票数 0

到目前为止我有这样的代码:

代码语言:javascript
复制
def alfabeto_deslocado(deslocamento):
letra_inicial = 97 + deslocamento #1a letra deslocada
alfa_lista_deslo = (list(map(chr, range(letra_inicial, 123)))) #lista deslocada até 'z'
alfa_lista_resto = (list(map(chr, range(97, letra_inicial)))) #resto lista desde 'a'
return alfa_lista_deslo + alfa_lista_resto

def encripta_cadeia(cad, chave):
###Encriptar###
cad_chave = repete_chave(cad, chave) #ok
coluna_linha_tab = alfabeto_deslocado(0)
lista_cad = list(cad)
lista_cad_chave = list(cad_chave)
lista_chave = list(chave)
ind_lista_cad_chave = [i for i, valor in enumerate(lista_cad_chave)]
ind_lista_cad = [i for i, valor in enumerate(lista_cad)]
for letra in range(len(cad)):
    indice = alfabeto_deslocado(0).index(letra)
    return indice

代码尚未完成,但在测试过程中,for循环始终显示错误"builtins.ValueError: 0不在列表“。

代码语言:javascript
复制
for letra in range(len(cad)):
    indice = alfabeto_deslocado(0).index(letra)
    return indice

示例(cad,cad)=encripta_cadeia(“cantor”,“cima”)

alfabeto_deslocado(0)

代码语言:javascript
复制
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-10 16:06:11

首先:range(len(cad))提供数字(0,1,2.),而不是cad中的字符。Yo

代码语言:javascript
复制
for letra in cad:

您有错误的缩进- returnfor-loop中,所以它在第一个元素之后退出这个循环。您必须使用return后循环。

似乎你不知道如何处理许多价值-你应该使用列表。

在循环之前,为在循环中创建的所有值创建空列表。

内部循环将值追加到此列表(而不是print()),

循环之后,您将得到包含所有值的列表--正如您所期望的。

就像这样:

代码语言:javascript
复制
# --- before loop ---

results = []

# --- loop --- 

for letra in cad:
    indice = alfabeto_deslocado(0).index(letra)
    results.append(indice)

# --- after loop ---

#print(results)
return results
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65237521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档