Autor
|
Tema: DuDas sobre funciones Python" (Leído 4,702 veces)
|
Itzhack
Desconectado
Mensajes: 10
|
Hola, acabo de acabar dos pequeños programas, pero tengo una duda para cada uno: Primero: def factores(nb): print ("Los factores positivos de un numero entero." ) nb = int(input("Entra un numero entre 1 y 20: ")) res = [] i = 1 while i <= nb: if nb % i == 0: res.append(i) i += 1 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 am por engel lex »
|
En línea
|
|
|
|
GonzaFz
|
¿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 am por GonzaFz »
|
En línea
|
|
|
|
Itzhack
Desconectado
Mensajes: 10
|
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. def afficher_sablier(dimension): print ("Afficher un sablier de N lignes et N colonnes") dimension = int(input("Entrez s.v.p. un nombre entre 3 et 59: ")) if dimension % 2 == 0: return "***Dimension invalide, Entrez un nombre impair***" else: i = 0 j = 0 while i < int((dimension + 1)/2): print ("-"*i + "*"*(dimension - 2*i) + "-"*(i)) i += 1 while j < int((dimension - 1)/2): print ("-"*(i - 2) + "*"*(3 + 2*j) + "-"*(i - 2)) j += 1 i -= 1
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
|
Ahh entonces si, podes usar un string para almacenar los números. Los vas concatenando y listo 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
|
|
|
En línea
|
|
|
|
Itzhack
Desconectado
Mensajes: 10
|
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!!!
|
|
|
En línea
|
|
|
|
GonzaFz
|
Te dejo una idea y con esto te alcanza para hacer lo que necesitas: Concatenación de dos strings # Creamos dos strings hola = "Hola" mundo = "Mundo!" # Los concatenamos concatenar = hola + mundo # Es lo mismo que 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): # Creamos dos strings hola = "Hola\n" # Observa el \n mundo = "Mundo!" # Los concatenamos 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
Mensajes: 10
|
Muchas Gracias GonzaFZ!!! Sos Grande!!!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Duda Python+TK] Sobre variables y funciones
Scripting
|
xassiz_
|
3
|
4,149
|
4 Marzo 2010, 21:21 pm
por xassiz_
|
|
|
Dudas generales sobre Python!
Scripting
|
Eleкtro
|
4
|
6,769
|
9 Febrero 2012, 13:21 pm
por Eleкtro
|
|
|
[C] proyecto sobre scrabble en mente, dudas sobre la "IA"
Programación C/C++
|
Traxza
|
4
|
3,696
|
14 Mayo 2013, 23:58 pm
por amchacon
|
|
|
Dudas sobre las funciones void en C
« 1 2 »
Programación C/C++
|
niñoAtómico
|
11
|
5,626
|
11 Octubre 2013, 22:41 pm
por vangodp
|
|
|
MOVIDO: DuDas sobre funciones Python"
Programación General
|
Eleкtro
|
0
|
1,706
|
9 Febrero 2015, 15:36 pm
por Eleкtro
|
|