Números romanos canónicos
Convierte un entero del 1 al 3999 en un número romano canónico en mayúsculas.
def roman_numeral(n):
if type(n) is not int or not 1 <= n <= 3999:
raise ValueError("roman.range")
values = [(1000,"M"),(900,"CM"),(500,"D"),(400,"CD"),
(100,"C"),(90,"XC"),(50,"L"),(40,"XL"),
(10,"X"),(9,"IX"),(5,"V"),(4,"IV"),(1,"I")]
parts = []
for value, symbol in values:
count, n = divmod(n, value)
parts.append(symbol * count)
return "".join(parts)| Proyecto | Comprueba formas sustractivas como 4 y 900, rechazando cero, números fuera del intervalo y valores no enteros. |
|---|---|
| Revisa antes de aplicar | Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios. |
| Modelos | Configura un endpoint compatible con OpenAI o Anthropic usando la URL base y, si hace falta, una clave API. Prueba la conexión. Un servidor local debe estar en ejecución; las herramientas remotas pueden enviar datos por separado. |
def roman_numeral(n):
if type(n) is not int or not 1 <= n <= 3999:
raise ValueError("roman.range")
values = [(1000,"M"),(900,"CM"),(500,"D"),(400,"CD"),
(100,"C"),(90,"XC"),(50,"L"),(40,"XL"),
(10,"X"),(9,"IX"),(5,"V"),(4,"IV"),(1,"I")]
parts = []
for value, symbol in values:
count, n = divmod(n, value)
parts.append(symbol * count)
return "".join(parts)Define para el formateador un contrato fiable para el código que lo llama
NumeralHaven ofrece un entorno de programación para Windows en el que analizar detalles de implementación con un modelo de IA conectado. El trabajo de formato es un buen punto de partida porque una función pequeña puede contener reglas visibles del producto. Describe las entradas admitidas y la salida exacta antes de solicitar cambios e incluye el código que presenta el resultado al usuario.
El ejemplo de proyecto proporcionado es un formateador de números romanos. Puedes pedir al asistente que revise el intervalo numérico admitido y las formas sustractivas, y después explique cómo debe gestionar los valores rechazados el código que lo llama. El objetivo es desarrollar tu propio código con expectativas claras, sin presuponer que el entorno proporciona un servicio terminado de conversión de numerales.
Una vez definido el contrato, inspecciona si la modificación sugerida cambia la escritura de la salida, los tipos admitidos o el comportamiento ante fallos. Ejecuta casos de prueba cercanos a los límites del intervalo y formas sustractivas representativas con las herramientas del proyecto. Comprueba también el proceso de visualización para que un valor no válido no se convierta en un espacio vacío sin explicación o en una etiqueta engañosa en la interfaz.
Para trabajar con asistencia de un modelo, conecta un servicio compatible con OpenAI o Anthropic y proporciona credenciales cuando sean necesarias. Un modelo de IA sin filtros es una opción si el servicio lo ofrece. Su capacidad de contexto, las herramientas disponibles y las restricciones de respuesta siguen dependiendo del servidor y del modelo seleccionados; la revisión sigue formando parte del desarrollo.
Antes de cambiar un formateador de valores
¿Por qué incluir en la solicitud el código que llama al formateador?
Ese código determina cómo llega a la interfaz un valor rechazado o una cadena formateada. Incluye ese recorrido para que el asistente pueda explicar el efecto de cambiar un valor de retorno o una excepción, además de la conversión interna.
¿Qué ejemplos precisan un requisito de formato?
Proporciona valores admitidos con sus cadenas exactas esperadas, además de valores que deban rechazarse. Para los números romanos, incluye los límites del intervalo y las formas sustractivas. Esos casos de prueba hacen visibles las convenciones de salida antes de proponer una implementación.
¿Debe un formateador aceptar silenciosamente texto numérico?
Solo si el contrato de tu aplicación exige esa conversión. Indica explícitamente los tipos admitidos y revisa dónde corresponde interpretar el texto. Una conversión automática práctica dentro del formato puede ocultar un fallo del código que lo llama o cambiar cómo llegan los valores no válidos al usuario.
¿Puede otro modelo cambiar la salida exigida al formateador?
Cambiar el modelo conectado no debería cambiar tus requisitos establecidos. Mantén los mismos casos de prueba y reglas de aceptación al comparar propuestas. Evalúa cada modificación según esas reglas, sin considerar autoritativa la convención preferida de un modelo.
NumeralHaven · Actualizado 2026-10-25