RA05- tarea - Python
|
|
Título del Test:
![]() RA05- tarea - Python Descripción: RA05- tarea |



| Comentarios |
|---|
NO HAY REGISTROS |
|
input devuelve siempre texto Lee este código: nombre = input("Nombre: ") tipo = type(nombre). tipo será str porque input siempre devuelve texto. tipo será int porque el usuario puede escribir números. tipo será float porque input intenta convertir a decimal. tipo dependerá de lo que escriba la persona usuaria. strip y entradas vacías Observa: usuario = input("Usuario: ").strip() if not usuario: print("Vacío"). Solo se considera vacío si no se pulsa ninguna tecla. Se detecta vacío aunque la persona escriba solo espacios. Nunca se imprimirá "Vacío". strip borra también letras, no se debe usar. conversión a int con try except Código: texto = input("Edad: ").strip() try: edad = int(texto) except ValueError: edad = 0. Si el usuario escribe hola, el programa se detiene con error. Si escribe 20, edad será una cadena. Si el usuario escribe hola, edad valdrá 0. Siempre se asigna 0 a edad. bucle amable para enteros Código: def pedir_entero(): while True: s = input("Número: ").strip() try: return int(s) except ValueError: print("Introduce un entero válido"). Solo pregunta una vez y luego termina. Acepta decimales como válidos. Nunca llega a salir del bucle. Repite la pregunta hasta recibir un entero correcto. rango de enteros Código: def pedir_entero_en_rango(minimo, maximo): while True: s = input("Nota: ").strip() try: n = int(s) except ValueError: print("Tiene que ser un entero") continue if not (minimo <= n <= maximo): print("Fuera de rango") continue return n. Solo devuelve valores dentro del rango incluido entre minimo y maximo. Acepta cualquier entero y nunca comprueba el rango. Lanza error si el usuario escribe letras. No permite volver a intentar la entrada. sí o no robusto Código: def pedir_si_no(): while True: r = input("¿Continuar? ").strip().casefold() if r in {"s", "si", "sí", "y", "yes"}: return True if r in {"n", "no"}: return False print("Responde con sí o no"). Solo acepta la letra s exactamente. Acepta varias formas de sí y de no ignorando mayúsculas. Solo acepta si con tilde. Termina en la primera respuesta aunque sea inválida. varias entradas en una línea Código: linea = input("Tres enteros: ") a_str, b_str, c_str = linea.split() a = int(a_str) b = int(b_str) c = int(c_str). Acepta cualquier cantidad de valores. Convierte directamente a float sin usar int. Espera exactamente tres valores separados por espacios. No funciona si hay espacios entre los números. map y manejo de errores Código: try: a, b, c = map(int, input("Tres enteros: ").split()) except ValueError: print("Entrada incorrecta"). Acepta texto mezclado con números sin problema. Ignora los errores y sigue como si nada. unca entra en el except. Muestra mensaje de error si no hay exactamente tres enteros. reemplazar coma por punto Código: texto = input("Precio: ").strip().replace(",", ".") precio = float(texto). Permite escribir 3,50 o 3.50 como precio. Solo permite punto decimal, no coma. Convierte cualquier texto en cero. Lanza siempre un error de conversión. manejar KeyboardInterrupt y EOFError Código: try: dato = input("Escribe algo: ") except KeyboardInterrupt: print("Cancelado por la persona usuaria") dato = None except EOFError: print("Entrada finalizada") dato = None. Ignora completamente Ctrl C y Ctrl D. Evita que el programa se rompa si se pulsa la combinación de cancelación. Provoca un error mayor al capturar la excepción. Solo funciona en programas gráficos. getpass para contraseñas Código: from getpass import getpass usuario = input("Usuario: ") clave = getpass("Contraseña: "). La contraseña se muestra igual que con input normal. getpass sirve para cifrar la contraseña en disco. La contraseña no se muestra en pantalla mientras se escribe. No se puede usar en la consola, solo en interfaces gráficas. separar pedir de procesar Código: def pedir_precio(): s = input("Precio: ").strip().replace(",", ".") try: return float(s) except ValueError: return None def calcular_total(precios): return sum(precios). Mezclamos entrada y cálculo en una sola función. calcular_total también pide datos al usuario. pedir_precio devuelve siempre cero. Separamos la entrada de datos de la lógica de cálculo. uso básico de print con sep y end Código: print("A", "B", "C", sep="-", end="!") print("FIN"). Muestra A-B-C!FIN en una sola línea. Muestra A B C FIN en líneas separadas. Muestra A-B-C y luego hace un salto de línea automático. No se puede cambiar el separador ni el final de línea. f strings y formato numérico Código: nombre = "Ana" puntos = 1234.567 print(f"Hola, {nombre}. Puntos: {puntos:.2f}"). Muestra todos los decimales sin cambiar nada. Muestra los puntos con dos decimales redondeados. No se pueden usar variables dentro de f strings. El formato genera siempre un error de sintaxis. alineación en tablas de texto Código: for prod, ud, precio in [("Pan", 3, 1.1), ("Leche", 1, 0.9)]: print(f"{prod:<10}{ud:>3}{precio:>7.2f}"). Todo se alinea a la izquierda sin formato. No se puede alinear texto con f strings. Alinea el texto a la izquierda y los números a la derecha. El ancho de las columnas siempre es fijo e igual para todas. abrir ficheros con with Código: with open("datos.txt", "w", encoding="utf-8") as f: f.write("Hola"). Es obligatorio llamar luego a f close manualmente. El uso de with impide escribir en el fichero. No se puede indicar codificación en open. El fichero se cierra automáticamente al salir del bloque. modo de apertura w y a Supón que tienes un archivo log.txt existente. Caso 1: with open("log.txt", "w", encoding="utf-8") as f: f.write("Linea") Caso 2: with open("log.txt", "a", encoding="utf-8") as f: f.write("Linea"). En el caso w se borra el contenido previo y en a se añade al final. Ambos modos siempre borran el contenido previo. Ambos modos siempre añaden al final sin borrar. Ninguno de los dos crea el archivo si no existe. ectura línea a línea Código: with open("apuntes.txt", "r", encoding="utf-8") as f: for linea in f: print(linea.rstrip()). Lee todo el archivo de golpe siempre. Lee el archivo línea a línea sin cargarlo entero en memoria. Solo funciona si el archivo tiene una única línea. No se puede iterar sobre un fichero en Python. uso de pathlib para rutas Código: from pathlib import Path base = Path("datos") ruta = base / "notas.txt" ruta.write_text("Hola", encoding="utf-8"). Solo funciona en Windows pero no en otros sistemas. No se pueden combinar rutas con el operador barra. Construye la ruta de forma portable y escribe el archivo. pathlib solo sirve para leer, no para escribir. creación de directorios con parents Código: from pathlib import Path p = Path("informes/2025/12") p.mkdir(parents=True, exist_ok=True). Solo crea la última carpeta y falla si faltan las anteriores. Borra la carpeta si ya existía. No se pueden crear varias carpetas de una sola vez. Crea toda la cadena de carpetas sin fallar si ya existe. |




