|
Mostrar Temas
|
Páginas: [1] 2 3
|
2
|
Programación / Scripting / Objetos imprimen None
|
en: 10 Enero 2023, 01:08 am
|
Buenas, una duda, resulta que estoy intentando diseñar una clase en Python pero cada vez que imprimo los objetos se me agrega un None que no consigo ver de dónde sale... Todo está en un mismo archivo Por cierto, estoy empezando en este lenguaje por lo tanto tal vez ignore alguna práctica que sea más recomendable... La clase es la siguiente y abajo el main. class Producto: contador_productos = 0 def __init__(self,nombre: str, precio: float): self._id = Producto._generar_id() self._nombre = nombre self._precio = self._verificar_precio(precio) @staticmethod def _generar_id(): Producto.contador_productos += 1 return Producto.contador_productos def obtener_id(self): return self._id def obtener_nombre(self): return self._nombre def obtener_precio(self): return self._precio def _verificar_precio(self,precio): if precio > 0: return precio else: return -1 def imprimir_producto(self): print(f'{self._id}, {self._nombre}, {self._precio}')
def main(): a = Producto("Mouse",1700) b = Producto("Teclado",8000) c = Producto("Monitor",15000) print(a.obtener_id(), a.obtener_nombre(), a.obtener_precio()) print(b.obtener_id(), b.obtener_nombre(), b.obtener_precio()) print(c.obtener_id(), c.obtener_nombre(), c.obtener_precio()) print(a.imprimir_producto()) print(b.imprimir_producto()) print(c.imprimir_producto()) if __name__ == '__main__': main()
salida: 1 Mouse 1700 2 Teclado 8000 3 Monitor 15000 1, Mouse, 1700 None 2, Teclado, 8000 None 3, Monitor, 15000 None
|
|
|
3
|
Foros Generales / Dudas Generales / qué es preferible múltiples returns o un solo return?
|
en: 3 Enero 2023, 21:52 pm
|
Buenas estimados, que opinan al respecto de esto? Me he encontrado con profesores de programación que son partidarios de un solo return en una función o método, sin embargo, también he encontrado que utilizan varios sentencias return en un bloque de código. Tengo que decir que soy más partidario de un solo return por función. ejemplo la función factorial: def factorial(n): rta = 0 if n == 0: rta = 1 else: rta = n * factorial(n-1) return rta
def factorial(n): if n == 0: return 1 else: return n * factorial(n-1)
|
|
|
4
|
Programación / Desarrollo Web / posicionar menú navegación
|
en: 16 Diciembre 2022, 18:40 pm
|
Buenas estimados, hace poco empiezo con HTML5 y CSS3, y tengo una duda que tal vez me puedan aclarar. La idea seria armar un menú navegación de esta manera: https://imgur.com/a/bzWYJDzosea un menú de navegación a la izquierda. Lo pude implementar pero no sé si lo estoy haciendo de la manera más optima, convendria hacerlo utilizando solo cajas flexibles o en este caso solo se puede utilizar la propiedad float? Saludos <!DOCTYPE html> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href = "./css/estilos.css" rel = "stylesheet"/> <header> </header> <nav> </nav> <section> </section> <footer> Pagina hecha por SFK© </footer> </body> </html>
body { height: 100%; max-width: 100%; background-color: #e5dada; color: #02040f; margin: 0%; } header { margin: 0% 0% 1% 0% ; display: flex; border: 1px solid black; } nav { float: left; margin: 1% 1%; display: flex; flex-direction: column; border: 1px solid black; } section { flex-direction: column; margin: 1% 1%; display: flex; border: 1px solid black; } footer { clear: both; border: 1px solid black; }
|
|
|
5
|
Programación / Programación C/C++ / Extraer palabras de un texto leido en un archivo (en C)
|
en: 21 Noviembre 2022, 14:42 pm
|
Buenas a todos, resulta que estoy teniendo un error con este codigo, tal vez no estoy viendo algo o me falta un concepto. La idea seria leer un texto por usuario y guardarlo en un archivo binario, segundo, mostrarlo por consola, y lo mas importante extraer todas y cada una de las palabras del texto ingresado por usuario. Ahora bien, tengo entendido que los archivos binarios son mejores para guardar registros ( estructuras) y los archivos txt para texto. Lamentablemente, me piden que sean archivos binarios... Cosa que no le veo mucho sentido. El error es que si ingreso un texto de mas de 3 o 4 palabras aveces algunas palabras se muestran con basura. Por ejemplo si ingreso "la casa roja y el perro blanco" no hay problema. Si ingreso "la raiz cuadrada de una potencia" entonces la palabra "cuadrada" muestra basura tambien. Esto por poner algunos ejemplos. Este el codigo, (por cierto mucho que mejorar) gracias, saludos. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define ARCH0 "arch0.bin" #define TAM_MAX 1000 void crearArchivo() { FILE * pfile = fopen(ARCH0 , "wb"); char texto[TAM_MAX]; if( pfile ) { printf("\nIngrese el texto:\n"); fwrite(&texto ,sizeof(texto ),1,pfile ); } } void mostrarArchivo() { FILE * pfile = fopen(ARCH0 , "rb"); char texto[TAM_MAX]; if( pfile ) { fread(&texto , sizeof(texto ),1,pfile ); } } void limpiarArreglo(char a[],int j) { while( j - 1 >= 0 ) { a[j] = 0; j--; } } void archivoToDic() { FILE * pfile = fopen(ARCH0 ,"rb"); char texto[TAM_MAX]; int i = 0; /**contador texto*/ char aux[30]; /**para guardar cada termino del texto*/ int j = 0; /**contador string aux*/ if( pfile ) { fread(&texto , sizeof(texto ),1,pfile ); { { /*copia cada letra leida distinta de espacio a la cadena auxiliar*/ aux[j] = texto[i]; j++; i++; } /*tras salir del while, aux contiene 1 palabra del texto, es decir, los caracteres hasta el primer espacio encontrado*/ /*limpiar el arreglo y volver el contador j a 0*/ while( j - 1 >= 0 ) { aux[j] = 0; j--; } j = 0; /*el proceso sigue con todos los terminos*/ i++; } } } int main() { crearArchivo(); printf("\nContenido Archivo:\n"); mostrarArchivo(); archivoToDic(); return 0; }
Por ultimo decir que pense como solucion utilizar memoria dinamica de manera que solo se guarden en el archivo estrictamente los caracteres del texto ingresado y no otra basura que me pueda estar guardando. qué opinan al respecto?
|
|
|
6
|
Programación / .NET (C#, VB.NET, ASP) / Aprender .net recomendaciones?
|
en: 17 Noviembre 2022, 05:30 am
|
Buenas a todos, una consultita, resulta que me interesa aprender la plataforma .net. Tengo entendido que utiliza una serie de lenguajes tanto para crear aplicaciones de escritorio, como de consola o webs. Me decidí por aprender C# con el libro "Cómo programar c# 2da edición" de Deitel. El libro es del año 2005 eso sí, lo ven como un buen material para empezar? Conocen algún otro material? Luego para codear los ejemplos del libro, instalé microsoft Visual studio community 2022, el cual me resulta un poco lento ya que cada vez que quiero codear un ejemplo nuevo, creo un proyecto nuevo y por alguna razón tarda bastante en crearse. Creen conveniente otra alternativa de IDE? Por cierto qué tal notepad++ para C#? Saludos gracias
|
|
|
7
|
Programación / Programación C/C++ / funcion limpiar buffer de teclado
|
en: 6 Octubre 2021, 16:51 pm
|
Buenas a todos, Tengo una duda con la siguiente función... la saqué de un libro de texto. Y es una solución para limpiar buffer de entrada de teclado (sin usar el vaciado de fflush() ) en C, antes de leer un string. Solo que cuando la utilizo en la consola, tengo que oprimir dos veces salto de linea, una vez cuando ingreso el dato y otra vez mas para que salte de linea. A diferencia de ingresar el dato y oprimir salto de linea "enter", y que se guarde el dato de inmediato. Alguien sabe una alternativa a esta función ? Saludos void limpiarBuffer() { char c; do { }while( c != '\n' ); }
|
|
|
8
|
Programación / Programación C/C++ / Libros de Win32 API en C/C++
|
en: 26 Agosto 2021, 02:57 am
|
Buenas gente, no sé si esta será la categoría más adecuada...
Estoy aprendiendo lo que es la interfaz de Win32 en C para programar cosas simples que me surgan. Estoy leyendo el libro "Programming Windows 5th edition " de Charles Petzold . El tema es que es un libro del año 98. De momento los ejemplos de codigo me funcionan perfecto. Creen que no habría problema al aprender con este libro? Conocen algun otro más que sea accesible en la red?
gracias, saludos
|
|
|
9
|
Foros Generales / Dudas Generales / Existe material que trate el diseño de un sistema operativo simple?
|
en: 23 Agosto 2021, 18:47 pm
|
Hola a todos. Bueno la cuestión es la siguiente, para un proyecto final una materia de programación en C ( donde vemos lo que es programación estructurada incluyendo estructuras dinámicas), tengo ganas de hacer algún programa que simule ser un sistema operativo, algo que sea simple pero que vaya por ese lado . He visto también en algún libro un ejercicio para crear un "lenguaje máquina" propio y luego diseñar una especie de compilador, pero no trata muy a fondo el tema...
Saben de material que trate sobre esta clase de proyectos especificamente para obtener alguna idea ?
gracias, saludos.
|
|
|
10
|
Programación / Programación C/C++ / Error de printeo con puntero triple
|
en: 21 Agosto 2021, 21:33 pm
|
Hola genios. Bueno resulta que estoy practicando el manejo de punteros y arreglos, pero estoy teniendo problemas: no se muestran los valores desde main. Alguien puede notar algo? Si nadie se quiere molestar lo entiendo porque puede parecer complejo... gracias saludos. //la funcion crearArreglo maneja la creacion del arreglo, primero guarda //la memoria necesaria y luego le copia los valores. //crearArreglo recibe un puntero a entero y la dimension. //Luego le pasa el puntero a puntero //a otra funcion asignarMemoria. Luego le pasa el puntero a puntero //a copiarValores, donde se asignan numeros random. #include <stdio.h> #include <stdlib.h> #include <time.h> void crearArreglo(int**punteroApuntero, int dim); void asignarMemoria(int***punteroTriple, int dim ); void copiarValores(int ***punteroTriple, int dim); int main() { int *pArreglo = NULL; int dim = 0; //dimension printf("\nIngrese la dimension del arreglo: "); srand(time(NULL )); //para obtener valores random en copiarValores() crearArreglo(&pArreglo,dim); //se le pasa el puntero a puntero y la dimension printf("\nPrimer elemento desde main: %d\n",*pArreglo ); //printea un valor erroneo return 0; }// fin main void crearArreglo(int **punteroApuntero, int dim) { asignarMemoria(&punteroApuntero, dim); copiarValores(&punteroApuntero, dim); }// fin funcion crearArreglo void asignarMemoria(int ***punteroTriple, int dim) { (**punteroTriple ) = (int *) malloc ( dim * sizeof(int) ); if( (**punteroTriple) == NULL ) { printf("\nError en asignacion de memoria.\n"); }//fin if else { printf("\nAsignacion de memoria exitosa.\n"); } // fin else } // fin funcion asignarMemoria void copiarValores(int ***punteroTriple, int dim) { int i = 0; while( i < dim ) { (***punteroTriple ) = rand() % 10; printf("Elemento %d : %d\n",i ,***punteroTriple ); (**punteroTriple)++; //dudas aca i++; }// fin while } // fin funcion copiarValores
|
|
|
|
|
|
|