Python - TypeError: function() takes exactly 2 arguments (0 given)

 
Vista:
sin imagen de perfil
Val: 5
Ha disminuido su posición en 19 puestos en Python (en relación al último mes)
Gráfica de Python

TypeError: function() takes exactly 2 arguments (0 given)

Publicado por César Santiago (3 intervenciones) el 12/04/2020 17:16:14
Buenas tardes:

En el siguiente ejercicio que me tira este error, ya cambie el código muchas veces, ya pobre en mi IDE (geany) y el código me funciona, hace lo que me piden en ejercicio. El problema es en la pagina, probe en poner un solo argumento pero donde dice "N args" se pone una cruz roja y me dice que la función debe tener 2 argumentos, y cuando pongo dos argumentos, bueno me tira el error que se ve en la imagen. Alguien tiene alguna idea de porque pasa esto? porque en mi IDE si funciona y en la pagina no? ya realice muchos ejercicios y siempre que coincide en mi IDE también en la pagina (como debería pasar).

Bueno si alguno tiene alguna idea de porque pasa esto, o como hacer para solucionar se lo agradecería mucho.

Desde ya muchas gracias y felices pascuas!


Captura
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

TypeError: function() takes exactly 2 arguments (0 given)

Publicado por tincopasan (1082 intervenciones) el 12/04/2020 20:32:20
hola:
hay un montón de cosas que veo, probalas en el ide así ves a lo que me refiero
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#-*- coding: utf -8 -*-
 
'''Escribí una función que devuelva una lista con todos los cuadrados de los números entre 1 y 30 (incluidos)'''
 
#para mí esta sería la solución más correcta
 
def mi_cuadrados():  #no veo en el planteo la parte que dice que hay que pasarlos como argumentos ya están declarados
    Lista_cuadrados =[x **2 for x in range(1,31)]
    return Lista_cuadrados
 
#--------------------------------------------------------------
#ahora, bien supongamos que hay que pasar los argumentos:
 
def cuadrado(a,b): #le estás pasando argumentos a la función y nunca los usas como corresponde
    lista_cuadrados = []
    for i in range(31): #acá esta incluido el 0 y dice desde 1,  range(1,31)
    # for i in range(a,b) sino para que estan los argumentos
        num_cua = i ** 2 #esto sobra, aunque no es que esté mal
        lista_cuadrados.append(num_cua)  #se puede declarar directamente lista_cuadrados.append(i**2)
        a = lista_cuadrados  #que se supone que significa esto?
        b = a
        if a == b:
            return a                   #hasta acá no entiendo la lógica
 
#tu codigo corregido en función a usar argumentos
 
def cuadrado_corregido(a=1,b=31):
    lista_cuadrados = []
    for i in range(a,b):
        lista_cuadrados.append(i**2)
    return lista_cuadrados
 
#por supuesto esto sin usar comprension de listas como en el primer ejemplo
 
 
print(mi_cuadrados())
print(cuadrado_corregido()) #acá uso los valores por defecto
print(cuadrado_corregido(3,8))  #acá le paso otros valores a la función

espero se entienda.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil
Val: 765
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

TypeError: function() takes exactly 2 arguments (0 given)

Publicado por dario (185 intervenciones) el 13/04/2020 04:43:51
Hola, como dice Tincopasan, en el enunciado no dice que sea pasando dos argumentos.
Que pagina usas.
Salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

TypeError: function() takes exactly 2 arguments (0 given)

Publicado por natalia (1 intervención) el 30/12/2022 16:26:56
#Hola, la solución no debe recibir argumentos, te recomiendo lo siguiente:

1
def cuadrado()
1
2
return [indice**2  for indice in range(1,31)]/code]
[code] cuadrado()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar