CALULADORA DE GRAFICOS
a gráfica da función y=x2+3x−4. É o resultado é unha parábola ben definida e clara.
Para crear esta representación, usei Matplotlib, permítenos transformar os datos nunha imaxe visual de xeito sinxelo e con moitas opcións de personalización.
- Definimos a función: y=x2+3x−4.
- Xeramos os puntos: Calculamos os valores de y para un rango de valores de x.
- Debuxamos: Con Matplotlib, trazamos estes puntos, creando a liña azul que vedes.
- Un eixe X (horizontal) e un eixe Y (vertical) que nos indican as coordenadas.
- Unha cuadrícula de fondo que facilita a lectura dos valores.
- A lenda que identifica claramente a función que estamos a visualizar.
Esta calculadora fixema coa axuda dunha IA que me foi ecindo como podia mellorala.

Distínguense dous conxuntos de botóns por cor: os tons azuis para os díxitos e funcións de memoria (MC, MR, M+, M-, MS), e os tonos salmón para os operadores aritméticos (x2, , ÷, ×, -, +, =, etc.) e funcións avanzadas como π, log, ln, ou potencias (∧). O visor superior amosa o valor actual
Esta ferramenta incorpora, ademais das operacións fundamentais (suma, resta, multiplicación, división), un abano de funcionalidades matemáticas que inclúen:.
Fixen esta calculadora coa axuda dunha IA , claude, que me axudou a modificar e mellorar a calculadora cambiandoa de color ou añadindo máis botóns e operacions
O obxectivo primordial foi construír un xogo onde o usuario deba adiviñar un número enteiro xerado aleatoriamente dentro dun rango predefinido e nun límite de intentos. Máis alá da mecánica central, a visión estendeuse a:
- Modularidade e Escalabilidade: Deseñar o código de forma funcional para facilitar futuras expansións e mantemento.
- Adaptabilidade da Dificultade: Proporcionar niveis de dificultade configurables para acomodar distintas capacidades e preferencias dos usuarios.
- Retroalimentación Intelixente: Implementar un sistema de pistas que guíe ao xogador de forma estratéxica sen revelar a solución directamente.
- Análise de Rendemento: Ofrecer estatísticas detalladas por partida e globais para fomentar a mellora do xogador e avaliar a súa destreza.
- Robustez na Entrada de Datos: Xestionar adecuadamente as entradas do usuario para previr erros e asegurar a estabilidade da aplicación.
LINGUAXE
A elección de Python como linguaxe de desenvolvemento fundaméntase na súa notoria lexibilidade, a súa rica biblioteca estándar e a súa capacidade para prototipar rapidamente aplicacións. Para a implementación das funcionalidades mencionadas, fixéronse uso das seguintes bibliotecas internas de Python:
random
: Indispensable para a xeración do número secreto. A función random.randint(a, b)
foi empregada para obter un valor enteiro pseudo-aleatorio dentro dos límites establecidos por cada nivel de dificultade. Isto garante a imprevisibilidade e a re-xogabilidade do sistema.
time
: Utilizada para medir o tempo transcorrido durante cada partida. A función time.time()
permite rexistrar marcas de tempo que son posteriormente empregadas para calcular a duración total da rolda e, consecuentemente, influír na puntuación do xogador.
O código estrutúrase en funcións específicas, cada unha con unha responsabilidade clara, o que contribúe á modularidade e mantemento:
mostrar_titulo()
: Dedicada á presentación inicial, mellorando a interface de usuario en consola.
escoller_dificultade()
: Encargada da interacción co usuario para a selección do nivel de dificultade, incorporando validación de entrada mediante bloques try-except
para xestionar ValueError
e bucles de reintentos.
dar_pista(diferencia, numero_secreto, intento)
: Esta función exemplifica a lóxica condicional avanzada. Avalía a diferenza absoluta entre o intento do xogador e o número obxectivo para proporcionar retroalimentación cualitativa (e.g., "ARDENDO!", "QUENTE!", "TIBIO", "FRÍO!"), así como direccional (maior/menor).
mostrar_estatisticas(intentos, max_intentos, tempo_total)
: Calcula e presenta métricas de rendemento por partida, incluíndo unha puntuación derivada dos intentos e o tempo, xunto cunha clasificación textual que reflicte o desempeño.
xogo_principal()
: A función orquestradora do sistema. Contén o bucle de xogo principal, coordina as chamadas ás demais funcións, xestiona o estado da partida (intentos, historial, estatísticas globais) e administra a lóxica de fin de xogo e re-xogo. A inclusión dun historial de intentos evita que o usuario repita adiviñas.
Durante o proceso de desenvolvemento, atopáronse e solucionáronse varios desafíos técnicos:
- Xestión de Erros de Entrada: A implementación de
try-except
para ValueError
e as validacións de rango e repetición de intentos garanten que a aplicación sexa robusta fronte a entradas inesperadas do usuario.
- Deseño da Lóxica de Pistas: Equilibrouse a granularidade das pistas para que fosen informativas sen comprometer o desafío do xogo. A categorización das diferenzas ("ARDENDO", "QUENTE", etc.) é un claro exemplo disto.
- Persistencia de Estatísticas (Intra-sesión): Aínda que as estatísticas globais se manteñen só durante a execución da sesión actual, a estrutura está preparada para unha futura implementación de persistencia en ficheiros ou bases de datos.
As Ferramentas: Python e Matplotlib
- Python: A miña elección pola súa sinxeleza e a súa capacidade para manexar datos.
- Matplotlib: A biblioteca estándar para crear todo tipo de gráficos en Python, ofrecéndonos un gran control estético.
Como a fixen (o esencial do código)
-
Datos: Primeiro, definimos os anos e os valores de poboación en listas.
-
Debuxar a Liña: Usamos plt.plot()
para debuxar a liña, engadindo marcadores e cor verde.
-
Títulos e Eixes: Fundamental para que sexa comprensible.
-
Personalización: Axustamos os rangos dos eixes (plt.xticks
, plt.ylim
), engadimos unha grade (plt.grid
) e cambiamos o fondo para mellorar a estética.
-
Anotación Final: Para destacar o último valor, engadimos unha anotación.
-
Mostrar: Finalmente, plt.show()
para ver a gráfica.