Python - duda de principiante en funciones

 
Vista:
sin imagen de perfil

duda de principiante en funciones

Publicado por Deibyt (1 intervención) el 02/08/2020 09:03:05
Lo que pasa es que estoy aprendiendo a programar en Python y necesito saber porque me ocurre esto con las funciones donde una si me funciona específicamente al nombrar los parámetros con el nombre de num1 y num2 o cuando agrego más de dos parámetros como por ejemplo num3 ahí ya deja de funcionar o también deja de funcionar si a dos primeros parámetros con nombre diferente a num1 o num2 , no sé si sea el entorno que estoy usando que es Colaboratory, de seguro la pregunta es tonta pero no supe cómo resolverlo, perdón

1
2
3
4
5
6
#este si me funciona
def suma(num1,num2):
    num1 =int(input("ingrese numero:"))
    num2 =int(input("ingrese numero:"))
    print(num1+num2)
suma(num1,num2)

1
2
3
4
5
6
#este ya no me funciona
def suma(x1,x2):
    x1 =int(input("ingrese numero:"))
    x2 =int(input("ingrese numero:"))
    print(x1+x2)
suma(x1,x2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#y este tampoco me funciona
def suma(num1,num2,num3):
    num1 =int(input("ingrese numero:"))
    num2 =int(input("ingrese numero:"))
    num3 =int(input("ingrese numero:"))
    print(num1+num2+num3)
suma(num1,num2,num3)
#Este es el error que me arroja
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-126-550d0625613d> in <module>()
      4     num3 =int(input("ingrese numero:"))
      5     print(num1+num2+num3)
----> 6 suma(num1,num2,num3)
 
NameError: name 'num3' is not defined

Agradezco si me pueden ayudar
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: 215
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

duda de principiante en funciones

Publicado por salvamn (52 intervenciones) el 02/08/2020 09:38:28
tambien soy mas o menos nuevo pero prueba no pasandole parametros a las funciones ya que cuando la llamas ya hay una funcion pidiendoles los numeros
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
sin imagen de perfil
Val: 215
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

duda de principiante en funciones

Publicado por salvamn (52 intervenciones) el 02/08/2020 21:30:16
si quieres pasarle parametros esto tambien te puede servir

1
2
3
4
def suma(num1, num2):
    print(num1 + num2)
 
suma(int(input("Numero1: ")), int(input("Numero2: ")))
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
Imágen de perfil de joel
Val: 2.332
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

duda de principiante en funciones

Publicado por joel (518 intervenciones) el 02/08/2020 11:53:38
Hola Deibyt, la verdad es que tu código creo que no tiene mucho sentido... intento explicarme

1
2
3
4
5
6
#este si me funciona
def suma(num1,num2):
    num1 =int(input("ingrese numero:"))
    num2 =int(input("ingrese numero:"))
    print(num1+num2)
suma(num1,num2)

A esta función suma, le pasa dos parámetros y luego esos parámetros son sobreescritor por los input... entonces no es necesario pasar los parámetros, o hay que solicitar los datos fuera de la función...

O es así:
1
2
3
4
5
6
#este si me funciona
def suma():
    num1 =int(input("ingrese numero:"))
    num2 =int(input("ingrese numero:"))
    print(num1+num2)
suma()

O así:
1
2
3
4
5
6
#este si me funciona
def suma(num1,num2):
    print(num1+num2)
num1 =int(input("ingrese numero:"))
num2 =int(input("ingrese numero:"))
suma(num1,num2)

No se si se me entiende bien.
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

duda de principiante en funciones

Publicado por yoyyo (1 intervención) el 02/08/2020 11:53:58
hola:
no tengo idea que es Colaboratory , así que no puedo decir nada sobre eso.
Ahora, no me parece buena la lógica de programación, sobre todo porque veo que repetís la misma función con distintos argumentos, primero 2, después 3, imaginate que quieras llegar a 8 números, ¿harías 8 funciones?
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
#-*- coding: utf -8 -*-
 
#1 forma
def suma(lista):
    return sum(lista)
 
lista = []
for x in range(3): #acá podrías agregar todos los números que quieras, probá con 8
    num1 =int(input("ingrese numero:"))
    lista.append(num1)
 
print(suma(lista)) #simplemente pasamos la lista a la función
 
 
#2 forma, me gusta menos
def otrasuma(*args):
    return sum(args)
 
num1 =int(input("ingrese numero:"))
num2 =int(input("ingrese numero:"))
num3 =int(input("ingrese numero:"))
#acá podrías agregar todos los números que quieras, probá con 8, pero es más código
 
print(otrasuma(num1,num2,num3)) #simplemente pasamos cada valor a la función
 
 
#las funciones por lo general retornan un valor que le pasamos.

ahora bien, con respecto a tu código, me extraña que alguno ande, las variables solo existen en la función, así que deberías declararlas también fuera de ellas, algo así:

1
2
3
4
5
6
7
8
9
10
def suma(num1,num2,num3):
    num1 =int(input("ingrese numero:"))
    num2 =int(input("ingrese numero:"))
    num3 =int(input("ingrese numero:"))
    print(num1+num2+num3)
 
num1= 0
num2 = 0
num3 = 0
suma(num1,num2,num3)

que si bien debe funcionar, llegamos a que no te permite variar el número de parámetros.

Saludos
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