错误:“list”对象不可调用,为什么?

2024-05-01 21:25:52 发布

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

我正在开发python,做一个测试,为一个任务创建这个代码 我需要的代码读取两个文件,顺序从最大到最小的第一个,然后看看哪些是在另一个文件,与这创建另一个文件,其中重复的两个文件和排序 示例:

第一个文本:

Git-gud,-32
Hogwarts Great hall Wifi,-67
God is my rock,-56
Interwebz,-75
OptimusPrime,-32
gg-wp,-53
UdeS-Alumnos,-90

第二段文字:

Que-sucede
Get-off-my-lawn
Git-gud
gg-wp
All the pancakes
My-name-is-lucifer
Optimus-prime
Hogwarts Great hall Wifi

第三个文本:

Git-gud,-32
OptimusPrime,-32
gg-wp,-53
Hogwarts Great hall Wifi,-67

当我尝试用第三个文件的网络创建列表时,出现了错误

我不知道怎么了

def redes(contenido, guardadas):
    redes=[]
    i=0
    while i<len(contenido):
        j=0
        while j<len(guardadas):
            if contenido[i][0]==guardadas[j]:
                redes.append(contenido[i])
            j=j+1
        i=i+1
    return redes

当我启动代码时,出现这个错误

Traceback (most recent call last):
  File "C:/Users/basty/Desktop/all/Guia y soluciones/textos/Wi-Fi/1.py", line 66, in <module>
    disponibles=redes(redesOrdenadas, guardadas)
TypeError: 'list' object is not callable

这是我的密码

#Wi-Fi
#Función que lee los archivos
def leer(texto):
    texto=texto+'.txt'
    archivo= open(texto,'r')
    contenido= []
    for linea in archivo:
        contenido.append(linea.strip('\n'))
    archivo.close
    return contenido
#Función quitar las comas
def sinComas(contenido):
    i=0
    sinComas=[]
    while i <len(contenido):
        sinComas = sinComas + [contenido[i].split(',')]
        i=i+1
    return sinComas
#Función ordenar por señal
def ordenar(contenido):
    i=0
    while i<len(contenido):
        j=i+1
        while j<len(contenido):
            if int(contenido[i][1])<int(contenido[j][1]):
                aux=contenido[i]
                contenido[i]=contenido[j]
                contenido[j]=aux
            j+=1
        i+=1
    return contenido
#Función guardar redes disponibles para conectar
def redesDisponibles(contenido, guardadas):
    redes=[]
    i=0
    while i<len(contenido):
        j=0
        while j<len(guardadas):
            if contenido[i][0]==guardadas[j]:
                redes.append(contenido[i])
            j=j+1
        i=i+1
    return redes
#Función agregar comas
def agregarComas(redes):
    i=0
    conComas=''
    escribir=[]
    while i<len(redes):
        j=0
        while j<len(redes[i]):
            conComas=','.join(redes[i])
            j=j+1
        escribir.append(conComas+'\n')
        i=i+1
    return escribir
#Función escribir
def escribir(texto):
    return True
#Bloque Principal
#Entrada
redesEncontradas=leer('signal-strenght')
guardadas= leer('networks')
#Proceso
sinComas=sinComas(redesEncontradas)
redesOrdenadas=ordenar(sinComas)
disponibles=redes(redesOrdenadas, guardadas)
conComas=agregarComas(disponibles)


Tags: 文件lenreturndefappendwhiletextoredes
1条回答
网友
1楼 · 发布于 2024-05-01 21:25:52

mikescotty指出了您的主要问题:用与方法相同的方法命名var。我还建议你列一张这样的清单:

return [x for x in contenido if x in guardadas]

不需要命名变量。你知道吗

如果提供了文本输入,我可以简单地执行以下操作:

t1 = '''Git-gud,-32
Hogwarts Great hall Wifi,-67
God is my rock,-56
Interwebz,-75
OptimusPrime,-32
gg-wp,-53
UdeS-Alumnos,-90'''

以及

t2 = '''Que-sucede
Get-off-my-lawn
Git-gud
gg-wp
All the pancakes
My-name-is-lucifer
Optimus-prime
Hogwarts Great hall Wifi'''

那么

result = [x for x in t1.split('\n') if x.split(',')[0] in t2.split('\n')]

结果如下:

['Git-gud,-32', 'Hogwarts Great hall Wifi,-67', 'gg-wp,-53']

相关问题 更多 >