gerdm / python_uma

Repositorio de código para clases de Python impartidas en la Universidad Marista
0 stars 16 forks source link

Duda scope de la función / declaración de parámetros #5

Closed JVilchis18 closed 6 years ago

JVilchis18 commented 6 years ago

Hola profesor tengo la duda de ¿puedo meter un diccionario a una funcion? y¿ si lo puedo meter el diccionario puede afectar a la función que desarrolle?

leonardo0529 commented 6 years ago

Hola profesor buenas noches, una pregunta ¿Cómo podemos meter un string dentro de una funcion? yo lo estoy poniendo de esta forma pero creo que no es la correcta def palabras(x): frase=(" ")

LpavonPe commented 6 years ago

@JVilchis18 Hola, no soy Gerardo pero espero poder ayudar. Si te refieres a que si podemos usar un diccionario que definimos antes en nuestra function, la respuesta es sí. Se vería de la siguiente manera:

user_pass = {'usr503': '2vu2bo', 'usr085': 'geeaa', 'usr406': 'xqzbiy',
                       'usr182': 'jbngo0', 'usr168': 'qih6e', 'usr900': '6ynym',
                       'usr542': '7p6mnd', 'usr847': 'ruqq6y', 'usr629': '9qs9g5',
                       'usr418': 'f15lg'} 

def usuario(n):
    return user_pass[n]

Nos da como resultado:

usuario(2)
'usr406'

Si te refieres a que si podemos definir un diccionario dentro de nuestra función y usarlo, también se puede, por ejemplo:

def usuario2(n):
    user_pass2 = {'usr503': '2vu2bo','usr085': 'geeaa',
                             'usr406': 'xqzbiy',
                             'usr182': 'jbngo0',
                             'usr168': 'qih6e',
                             'usr900': '6ynym',
                             'usr542': '7p6mnd',
                             'usr847': 'ruqq6y',
                             'usr629': '9qs9g5',
                             'usr418': 'f15lg'}
   return user_pass[n] 

Esto tambien nos daria el mismo resultado, la diferencia sería que podemos usar el diccionario "user_pass" fuera de nuestra función pero el diccionario "user_pass2" no porque lo definimos dentro de una función. Creo que también hay diferencia en el uso de memoria de la computadora pero en este punto no estoy muy seguro.

En resumen, sí puedes meter un diccionario dentro de una función, ya sea que lo definas afuera de está o dentro de la función, dependiendo de que necesites y si usas el diccionario en la función entonces sí altera el resultado. Espero haber ayudado en algo.

LpavonPe commented 6 years ago

@leonardo0529 Hola, no soy Gerardo pero espero poder ayudar. Si quieres que el argumento de tu función sea un string entonces no tienes que hacer nada más que tratarlo como string dentro de tu función ya que los argumentos pueden ser cualquier objeto. Complementando tu ejemplo:

def palabra(x):
   return x.upper()

Esta función nos daría como resultado:

palabra("Hola")
"HOLA"

Ahora que si lo que quieres es definir un string distinto a tu argumento dentro de tu función para usarlo para algo entonces lo que estas haciendo esta casi bien, en este caso como estas definiendo una variable no son necesarios los (), seria: frase= " " aunque con los () también está bien, solo recordando que para que este dentro de la función tiene que estar con un Tab de margen). Espero haber ayudado en algo.

Lesly112504 commented 6 years ago

Buenas noches, profe tengo una duda en el ejercicio de fibonacci, ya tengo mi código completo, solo que al correrlo me hace falta el 0 al inicio de cada lista: Mi resultado es [1, 1, 2, 3, 5, 8, 13, 21, 34] y debería de ser [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

¿Qué podría poner para que se ingrese el 0? Lo había intentado ponerlo cuando defino la función: def fibonacci (0, n) Pero me marca error

gerdm commented 6 years ago

Hola @Lesly112504, si solo te falta agregar un elemento. Puedes crear la lista sobre la que estarás guardando objetos con un elemento inicial. En tu caso, 0.

De otra manera, recuerda que las listas tienen el método insert que nos permiten agregar un elemento a una lista en la posición que deseemos. Este podría ser un paso final para agregar el 0 en tu lista.

Cualquiera de estas dos maneras es valido.

gerdm commented 6 years ago

Chicos, recuerden que pueden abrir nuevos issues para cada duda que tengan. No es necesario estar comentando sobre uno mismo. De esta manera es fácil hacer referencia a otros problemas que hayan tenido.

No se preocupen, pueden agregar los que sean.