elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  DuDas sobre funciones Python"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: DuDas sobre funciones Python"  (Leído 2,374 veces)
Itzhack

Desconectado Desconectado

Mensajes: 10


Ver Perfil
DuDas sobre funciones Python"
« en: 9 Febrero 2015, 04:39 »

Hola, acabo de acabar dos pequeños programas, pero tengo una duda para cada uno:

Primero:

Código
  1. def factores(nb):
  2.  
  3.    print ("Los factores positivos de un numero entero." )
  4.    nb = int(input("Entra un numero entre 1 y 20: "))
  5.    res = []
  6.    i = 1
  7.    while i <= nb:
  8.        if nb % i == 0:
  9.            res.append(i)
  10.        i += 1
  11.  
  12.    return "Los factores de {} son: {}".format(nb, res)

(Aquí para afichar los resultados utilizo una lista, pero yo busco otro metodo en el que pueda afichar los factores, pero no como lista)


Segundo:

Cuando hago una funcion, y no le pongo return sino print, me aparece mi resultado, pero también "None". Como hago para que no me salga "None"?. Ojo, mi correcto resultado de varios valores me sale con print, si pongo return, me muestra solo un resultado.

Uso python 3.4

Saludos mis amigos y desde ya gracias por su ayuda!!!  ;-)

Mod: Usa etiquetas GeSHi cuando publiques codigo


« Última modificación: 9 Febrero 2015, 08:29 por engel lex » En línea

GonzaFz

Desconectado Desconectado

Mensajes: 69


Ver Perfil WWW
Re: DuDas sobre funciones Python"
« Respuesta #1 en: 9 Febrero 2015, 05:03 »

¿Por que razón no quieres almacenar los resultados en una lista?
No tienes otra forma, a menos que sepas la cantidad de elementos que quieras almacenar y crees una variable para cada uno.
Lo que vos necesitas es referenciar a un objeto que te permita acceder a un numero variable de referencias de otros objetos y ese es el rol que cumple una lista.
Existen variantes de listas, como pilas o colas, pero al final siguen siendo lo mismo. Podrías usar un diccionario pero también estarías cayendo en las listas nuevamente, y encima necesitarías definir una clave para cada elemento.
Quizás me equivoque pero que yo sepa no hay forma de hacer esto si no es con una lista..
EDITO: Podrías almacenarlos en un string poniendo alguna marca para después saber donde termina cada elemento, pero no tiene mucho sentido.

Y con respecto a lo segundo, pon el codigo así es mas facil saber que es lo que pasa,

PD: cuando pongas codigos, tenes que ponerlo entre etiquetas. Las de python son: [ code=python][/ code] (sin los espacios).



« Última modificación: 9 Febrero 2015, 05:06 por GonzaFz » En línea

Itzhack

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: DuDas sobre funciones Python"
« Respuesta #2 en: 9 Febrero 2015, 12:11 »

Hola GonzaFZ,

Muchas gracias por la rápida respuestas. Lo de la listas, pasa que llevo un curso a distancia en programacion en Python, y el profe dejo como tarea eso, hacer un programa que pida un número y retorne sus factores. (pero como aun no vemos listas, dejo una nota: "Prohibido utilizar listas, diccionarios u otro que aun no hayamos visto en clase:". Bueno, voy a seguir intentando a ver si hay otra manera.

Con respecto a mi segunda pregunta. En la misma tarea, no pide hacer de introducir un numero impar y que no devuelva una figura de un reloj de arena, solo con los simbolos "-" y " *".

Aquí lo que logré hasta ahora (puedo ver el reloj y todo, pero como no acabo con ´return´, en mi resultado me arroja NONE.

Código
  1. def afficher_sablier(dimension):
  2.  
  3.    print ("Afficher un sablier de N lignes et N colonnes")
  4.    dimension = int(input("Entrez s.v.p. un nombre entre 3 et 59: "))
  5.  
  6.    if dimension % 2 == 0:
  7.        return "***Dimension invalide, Entrez un nombre impair***"
  8.  
  9.    else:
  10.        i = 0
  11.        j = 0
  12.        while i < int((dimension + 1)/2):
  13.            print ("-"*i + "*"*(dimension - 2*i) + "-"*(i))
  14.            i += 1
  15.  
  16.        while j < int((dimension - 1)/2):
  17.            print ("-"*(i - 2) + "*"*(3 + 2*j) + "-"*(i - 2))
  18.            j += 1
  19.            i -= 1
  20.  

El curso lo llevo en francés, por eso las entradas en este idioma, pero creo se entiende.  :)

Y de nuevo Gracias!!!

Itzhack
En línea

GonzaFz

Desconectado Desconectado

Mensajes: 69


Ver Perfil WWW
Re: DuDas sobre funciones Python"
« Respuesta #3 en: 9 Febrero 2015, 13:24 »

Ahh entonces si, podes usar un string para almacenar los números. Los vas concatenando y listo  :D

Y por lo que entiendo en la segunda pregunta, ¿La figura la tenes que devolver o imprimir?
Si solo lo tienes que imprimir desde la función que hiciste, entonces no debe devolver nada, es decir, va a devolver None (debido a que si no escribís return, implícitamente devuelven None, creo...)
Ahora, si necesitas que te devuelva el reloj sin imprimirlo (para que si vos haces print(afficher_sablier(5)) te lo dibuje), lo que tenes que hacer es "dibujarlo" en un string, me refiero a que en vez de imprimirlo dentro de los ciclos, vas concatenando en un string, que después al final de la función, lo devolves con el return.

Si no se entiende, preguntame de nuevo  ;D


En línea

Itzhack

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: DuDas sobre funciones Python"
« Respuesta #4 en: 9 Febrero 2015, 13:29 »

Si, te entiendo lo de concadenar los string. Pero no sé como hacerlo, me podrias dejar un ejemplo pequeño, para luego yo poder aplicarlo en mis dos programas: Por favor!!!  :silbar:
En línea

GonzaFz

Desconectado Desconectado

Mensajes: 69


Ver Perfil WWW
Re: DuDas sobre funciones Python"
« Respuesta #5 en: 9 Febrero 2015, 13:47 »

Te dejo una idea y con esto te alcanza para hacer lo que necesitas:
Concatenación de dos strings
Código
  1. # Creamos dos strings
  2. hola = "Hola"
  3. mundo = "Mundo!"
  4.  
  5. # Los concatenamos
  6. concatenar = hola + mundo
  7.  
  8. # Es lo mismo que
  9. concatenar = "Hola" + "Mundo!"
Si haces print(concatenar) va a imprimir:
HolaMundo!

(pista: en el primer problema puedes ir concatenando los numeros y dejando un espacio entre ellos, asi despues haces return "Los factores de {} son: {}".format(nb, stringDeNumeros) )

Y una ayuda para el reloj de arena (observa el \n):
Código
  1. # Creamos dos strings
  2. hola = "Hola\n" # Observa el \n
  3. mundo = "Mundo!"
  4.  
  5. # Los concatenamos
  6. concatenar = hola + mundo
Si haces print(concatenar) va a imprimir:
Hola
Mundo!

Al poner el "Escape Character" (no se el nombre en español xd) \n lo que hace es indicar que la parte que sigue ira en una nueva linea.

Creo que con eso es suficiente como para hacer esos trabajos.
Igual si tenes dudas en esta pagina hay buena informacion sobre los strings:
http://www.tutorialspoint.com/python/python_strings.htm
En línea

Itzhack

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: DuDas sobre funciones Python"
« Respuesta #6 en: 9 Febrero 2015, 14:47 »

Muchas Gracias GonzaFZ!!!

Sos Grande!!!  ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Duda Python+TK] Sobre variables y funciones
Scripting
xassiz_ 3 2,718 Último mensaje 4 Marzo 2010, 21:21
por xassiz_
Dudas generales sobre Python!
Scripting
Eleкtro 4 5,208 Último mensaje 9 Febrero 2012, 13:21
por Eleкtro
[C] proyecto sobre scrabble en mente, dudas sobre la "IA"
Programación C/C++
Traxza 4 1,733 Último mensaje 14 Mayo 2013, 23:58
por amchacon
Dudas sobre las funciones void en C « 1 2 »
Programación C/C++
niñoAtómico 11 2,639 Último mensaje 11 Octubre 2013, 22:41
por vangodp
MOVIDO: DuDas sobre funciones Python"
Programación General
Eleкtro 0 662 Último mensaje 9 Febrero 2015, 15:36
por Eleкtro
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines