Soluciones variables

import datetime

ahora = datetime.datetime.now()

anio_actual=ahora.year
anio_actual=2025
anio_nacimiento=int(input("Dime tu año de nacimiento"))

print(f"Este año tendrás {anio_actual-anio_nacimiento} años")

# Calcular el área de un triángulo
base=float(input("Dime la base"))
altura=float(input("Dime la altura"))
area=base*altura/2
print("El área es ",area)
# saber hacer esto es importante porque puede ser que queramos
# almacenar el valor, no imprimirlo
print("El área es "+str(area))
print(f"El área es {area}")

# Pido el número
numero=int(input("Dime un numero del 10 al 99"))
decenas=numero//10
unidades=numero%10
suma=decenas+unidades
print("La suma es ",suma)

# Pido los minutos
total_minutos=int(input("Dime cuantos minutos"))

# calculo horas y minutos
horas=total_minutos//60
minutos=total_minutos%60

# muestro
print(f"{horas} horas y {minutos} minutos")



Probemos el if… y todo lo demás

Cread un script de JS que nos pida (con prompt) la edad al usuario y la altura en centímetros

Si la edad es mayor de 16 o la altura mayor de 150 que muestre un mensaje que diga ‘Puedes pasar’

¿Qué pasa si el usuario no pone ningún valor (ya sabemos como son)?

Recopilación ejercicios de cadenas

 

Una función que nos ponga una cadena en minúsculas y la primera y última letra en mayúsculas. Ejemplo: flupper(“HOLA”)->”HolA” flupper(“cacahauete”)->”CacahuetE”

 

Crear una función ToTitleCase que nos ponga la primera letra de cada palabra en mayúsculas
ToTitleCase(“hoLA que TAL”)=>”Hola Que Tal”

Una función que ponga las vocales en minúsculas y las consonantes en mayúsculas

Una función que devuelva true si la cadena que le pasamos empieza y acaba con la misma letra, independientemente de mayúsculas y minúsculas. Ejemplo iniciofin(“hola”)->false iniciofin(“alubia”)->true iniciofin(“Alava”)->true;

Una función que nos quite los n primeros caracteres de una cadena. recortar(“En un lugar de la mancha”,2)->” un lugar de la mancha”

Una función que nos devuelva el centro de una cadena. El centro es, si la longitud de la cadena es impar, la letra que está en el medio. Si la longitud de la cadena es par, las dos letras del medio. centro(“mar”)->”a” centro(“casa”)->”as”;

Crear una función InternalTrim que elimine espacios de más DENTRO de una cadena.
InternalTrim(“Hola      que    tal”)=>”Hola que tal”

Crear una función contarCaracter que nos cuente cuantas veces aparece un caracter en una cadena sin tener en cuenta mayúsculas o minúsculas
contarCaracter(“Hola que tal. A mi plim”,”a”)->3

Crear una función quitarAcentos que nos cambie las vocales acentuadas por vocales sin acentuar:
quitarAcentos(“Camión molón”)->”Camion molon”

Crear una función VocalsCount que nos diga las vocales que hay en una cadena

VocalsCount(“Hola que tal”)=>5

Lo mismo pero teniendo en cuenta acentos

Vamos a crear una función cuantasPalabras a la que le pasamos una cadena y un caracter y nos dice cuantas palabras en esa cadena contienen ese caracter
cuantasPalabras(“hola que tal”,”a”)->2

Vamos a crear una funcion que nos devuelva True si hay dos letras iguales repetidas
repetidas(“hola que tal”)->False
repetidas(“viva sevilla”)->True (hay dos l)
repetidas(“mi carro me lo robaron”)->True (hay dos r)

Escribir una función que invierta el orden de los caracteres de una cadena dada. invertir(“hola”)–>”aloh”

Crear una función esPalindromo que nos diga si una cadena es palíndroma:

boolean esPalindromo(String cadena)

esPalindromo(“Viva la paella”)->false
esPalindromo(“Sara Baras”)->true

Función Leet: Nos convierte una cadena a https://es.wikipedia.org/wiki/Escritura_leet
Usad la tabla más simple:
a 4  e 3    g 6    i |    l 1     o 0     s 5      t 7      z 2

Crear una función repetirPad que le pasemos una cadena, una longitud y nos devuelva una cadena repetida tantas veces como haga falta para alcanzar longitud (pero sin pasarse) y después, si todavía falta para llegar a longitud, lo rellene con ‘#’. Veamos ejemplos:
repetirPad(“hola”,10)->”holahola##”
repetirPad(“adios”,18)->”adiosadiosadios###”

 

Vamos a crear una función mezclar a la que le pasamos una cadena y nos crea otra con  la primera parte las letras pares y la segunda las impares, con unos ejemplos lo vemos mejor:
mezclar(“abcdefg”)->”acegbdf” mezclar(“12345678″)->”13572468” mezclar(“ababcdcd”)->”aaccbbdd”

Ejemplo imagen docker


# Utilizar una imagen base de Ubuntu
FROM ubuntu:20.04

# Establecer el directorio de trabajo
WORKDIR /usr/share/nginx/html

# Instalar Nginx
RUN apt-get update && apt-get install -y nginx

# Copiar un archivo HTML personalizado al contenedor
COPY index.html /var/www/html/index.html

# Exponer el puerto 80
EXPOSE 80

# Iniciar Nginx
CMD ["nginx", "-g", "daemon off;"]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Hola que tal</h1>
</body>
</html>

Comprensión de listas en Python: ejemplos

# eliminar elementos
nums = ["Ana", "Eva", "Pep", "Iu", "Juan", "Rosa", "Iu", "Iu"]

print(nums)

nums.pop(2)  # elimino el que está en la posición 2
print(nums)
nums.remove("Iu")  # Busca 'Iu' y lo elimina
print(nums)

print(nums)

for numero in nums:
    print(numero)

# for x in lista es el núcleo de la comprensión de listas
# la parte izquierda es la transformación del elemento
nueva = ["@" + elemento for elemento in nums]
print(nueva)

notas = [1, 2, 3, 4, 5, 7, 8, 9]
transformada = [nota * 2 for nota in notas]
print(transformada)
trans2 = [nota for nota in notas]
print(trans2)
trans3 = [7 for nota in notas]
print(trans3)

trans2 = [nota for nota in notas if nota % 2 == 0]
print(trans2)

nueva = [elemento for elemento in nums if len(elemento) > 3]
print(nueva)

precios = [10, 20, 15, 70, 32, 40]
pvp = [precio * 1.21 for precio in precios if precio >= 20]
print(pvp)

edad = 16

# Operador ternario
print("Mayor de edad" if edad >= 18 else "Menor de edad")

aprobar = [5 if nota < 5 else nota for nota in notas]
print(aprobar)


def cuadrado(num):
    return num ** 2

cuad = [cuadrado(num) for num in notas]
print(cuad)

Ámbito (scope) de las variables

//Esto está mal
let importe=1000;
if(importe>500){
    let descuento=.1;
    console.log(descuento);
}
console.log(importe*descuento);

// Esto está bien

let importe=1000;
let descuento=0;
if(importe>500){
    descuento=.1;
}
console.log(importe*descuento);

Ejercicio Cartas


package com.trifulcas.cartas;

public abstract class Carta {
	private String palo;

	private int numero;

	
	public Carta(String palo, int numero) {
		this.palo = palo;
		this.numero = numero;
	}

	protected String getPalo() {
		return palo;
	}

	protected void setPalo(String palo) {
		this.palo = palo;
	}

	public int getNumero() {
		return numero;
	}

	protected void setNumero(int numero) {
		this.numero = numero;
	}
	
	public abstract int getValor();

	@Override
	public String toString() {
		return getNumero()+" de "+getPalo();
	}
	
}


package com.trifulcas.cartas;

public class Espanyola extends Carta {

	
	public Espanyola(String palo, int numero) {
		super(palo, numero);
		// TODO Auto-generated constructor stub
	}

	@Override
	public int getValor() {
		return getNumero()<10?getNumero():10;
	}

}


package com.trifulcas.cartas;

public class Francesa extends Carta {

	
	public Francesa(String palo, int numero) {
		super(palo, numero);
		// TODO Auto-generated constructor stub
	}

	@Override
	public int getValor() {
		// TODO Auto-generated method stub
		return getNumero();
	}

}

package com.trifulcas.cartas;

import java.util.ArrayList;
import java.util.Collections;

public abstract class Baraja {
	protected ArrayList<Carta> baraja = new ArrayList<>();
	
	public Baraja() {
		/*
		baraja.add(new Espanyola("oros",1));
		baraja.add(new Espanyola("oros",2));
		baraja.add(new Espanyola("oros",3));
		baraja.add(new Espanyola("oros",4));
		baraja.add(new Espanyola("copas",7));
		*/
	}
	public void desordenar() {
		Collections.shuffle(baraja);
	}

	public Carta repartir() {
		if (baraja.isEmpty()) {
			return null;
		} else {
			return baraja.removeFirst();
		}
	}
	@Override
	public String toString() {
		return "Baraja [baraja=" + baraja + "]";
	}

	public abstract void crearMazo();
}

package com.trifulcas.cartas;

import java.util.ArrayList;
import java.util.Arrays;

public class BarajaEspanyola extends Baraja {
	
	@Override
	public void crearMazo() {
		ArrayList<Integer> numeros=new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,10,11,12));
		ArrayList<String> palos=new ArrayList<>(Arrays.asList("Oros","Copas","Espadas","Bastos"));
		
		baraja.clear();
		for(int numero: numeros) {
			for(String palo: palos) {
				baraja.add(new Espanyola(palo,numero));
			}
		}
		
	}

}

package com.trifulcas.cartas;

import java.util.ArrayList;
import java.util.Arrays;

public class BarajaFrancesa extends Baraja {
	
	@Override
	public void crearMazo() {
		ArrayList<Integer> numeros=new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9,10,11,12,13));
		ArrayList<String> palos=new ArrayList<>(Arrays.asList("Picas","Tréboles","Corazones","Diamantes"));
		
		baraja.clear();
		for(int numero: numeros) {
			for(String palo: palos) {
				baraja.add(new Francesa(palo,numero));
			}
		}
		
	}

}


package com.trifulcas.cartas;

import java.util.ArrayList;

public class Jugador {
	private String nombre;
	private ArrayList<Carta> mano;
	public Jugador(String nombre) {
		super();
		this.nombre = nombre;
		mano=new ArrayList<>();
	}
	protected String getNombre() {
		return nombre;
	}
	protected void setNombre(String nombre) {
		this.nombre = nombre;
	}
	protected ArrayList<Carta> getMano() {
		return mano;
	}
	protected void setMano(ArrayList<Carta> mano) {
		this.mano = mano;
	}
	protected void setMano(Carta carta) {
		this.mano.add(carta);
	}
	@Override
	public String toString() {
		return "Jugador [nombre=" + nombre + ", mano=" + mano + "]";
	}
	
	
	
}

package com.trifulcas.cartas;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;

public class Poquer {
	ArrayList<Jugador> jugadores;
	BarajaFrancesa baraja;
	
	public Poquer(ArrayList<Jugador> jugadores) throws Exception {
		if (jugadores.size()>10 || jugadores.size()<2) {
			throw new Exception("Número de jugadores incorrecto");
		}
		this.jugadores=jugadores;
		baraja=new BarajaFrancesa();
		baraja.crearMazo();
	}
	
	public Jugador jugar() {
		baraja.desordenar();
		for(Jugador j:jugadores) {
			for(int i=0;i<5;i++) {
				j.setMano(baraja.repartir());
			}
		}
		return getGanador();
	}
	public Jugador getGanador() {
		// poker: 4 cartas iguales 
		// full: 3 cartas iguales y dos iguales
		// trio: 3 cartas iguales
		// doble pareja: 2 y 2
		// pareja: 2 cartas iguales
		for (Jugador j:jugadores) {
			System.out.println(j);
			System.out.println(contarCartas(j.getMano()));
		}
		return jugadores.get(0);
		
	}
	public HashMap<Integer,Integer> contarCartas(ArrayList<Carta> cartas){
		HashMap<Integer,Integer> res=new HashMap<Integer,Integer>();
		
		for(Carta c:cartas) {
			res.put(c.getValor(), Collections.frequency(cartas.stream().map(Carta::getValor).toList(), c.getValor()));
		}
		
		return res;
	}
}
package com.trifulcas.cartas;

import java.util.ArrayList;

public class ProbarCartas {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		Baraja miBaraja=new BarajaFrancesa();
		miBaraja.crearMazo();
		System.out.println(miBaraja);
		Carta c=miBaraja.repartir()	;
		Jugador j=new Jugador("Ana");
		System.out.println(j);
		System.out.println(c);
		System.out.println(miBaraja);
		miBaraja.desordenar()	;
		ArrayList<Jugador> jugadores=new ArrayList<>();
		jugadores.add(j);
		jugadores.add(new Jugador("Eva"));
		try {
			Poquer test=new Poquer(jugadores);
			test.jugar();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		System.out.println(miBaraja);
	}

}