Bucle for

frutas = ["manzana", "banana", "cereza"]
for fruta in frutas:
    print(fruta)

for contador in range(10):
    print(contador)
# range(valor) -> 0 hasta el valor -1
# range(inicio,fin) -> desde inicio hasta fin -1
# range(inicio,fin,paso) -> desde inicio hasta fin de paso en paso

for i in range(5, 12):
    print(i)
print("---------")
for i in range(0, 100, 5):  # range(inicio,fin) -> desde inicio hasta fin -1
    print(i)
print("---------")
for i in range(10, 1, -1):  # range(inicio,fin) -> desde inicio hasta fin -1 en este caso paso negativo
    print(i)

suma = 0
for i in range(101):
    suma += i
print(suma)

for letra in "hola que tal":
    print(letra)

letraABuscar = "a"
contador = 0
cadena = "tal"
for letra in cadena:
    if letra == letraABuscar:
        contador += 1
print("En '", cadena, "' hay", contador, "letras", letraABuscar)

notas = [5, 8, 1, 3, 6, 9]
aprobados = 0
for nota in notas:
    if nota >= 5:
        aprobados += 1
print("Hay", aprobados, "aprobados")

Soluciones ejercicios bucles while

# Escribir un programa que nos muestre una cuenta atrás desde 10
# 10   9   8  ...

cuenta = 10
while cuenta > 0:
    print(cuenta)
    cuenta -= 1

# Escribir un programa que muestre los cuadrados pares de los números del 1 al 100
# 4,16,36....
contador = 1
while contador <= 100:
    # calculo el cuadrado
    cuadrado=contador**2
    # compruebo si es par
    if (cuadrado % 2 == 0):
        # imprimo
        print(cuadrado)
    contador += 1


Otro ejemplo de renderizar listas

function Alumnos() {
    let lista = [{ id: 1, nombre: "Ana", nota: 7 },
    { id: 2, nombre: "Eva", nota: 5 },
    { id: 3, nombre: "Pep", nota: 8 }
    ]
    return (<ul>
        {
            lista.map((valor) => <li key={valor.id}>{valor.nombre + " : " + valor.nota}</li>)
        }
    </ul>)
}

export default Alumnos;

Ejemplo estados complejos

import React, { useState } from 'react';
import Numero from './Numero'
const Contador = () => {
    // Quiero variables dentro de una página de react tengo que utilizar estado
    const [contador, setContador] = useState({ valor: 0, historial: [] });
    const [cadena, setCadena] = useState("")


    const incrementarContador = () => {
        setContador({ valor: contador.valor + 1, 
                    historial: contador.historial.concat("I") });
        setCadena("")
        console.log(contador)
    };
    const decrementarContador = () => {
        if (contador.valor > 0) {
            setContador({ valor: contador.valor - 1, 
                historial: contador.historial.concat("D") });

        } else {
            setCadena("No puedes poner número negativos")
        }

    };
    const resetearContador = () => {
        setContador({ valor: 0, 
            historial: [...contador.historial,"R"] });
        setCadena("")
    };
    return (
        <div>
            <Numero numero={contador.valor} resetear={resetearContador} />
            <p> {cadena}</p>
            <button onClick={incrementarContador}>Incrementar</button>
            <button onClick={decrementarContador}>Decrementar</button>
            <button onClick={resetearContador}>Reset</button>
        </div>
    );
};
export default Contador;

Interacción estados padres e hijos

import React, { useState } from 'react';
import Numero from './Numero'
const Contador = () => {
    // Quiero variables dentro de una página de react tengo que utilizar estado
    const [contador, setContador] = useState(0);
    const [cadena, setCadena] = useState("")
  
    
    const incrementarContador = () => {
        setContador(contador + 1);
        setCadena("")
    };
    const decrementarContador = () => {
        if (contador>0) {
            setContador(contador - 1);
            
        }else{
            setCadena("No puedes poner número negativos")
        }
        
    };
    const resetearContador = () => {
        setContador(0);
        setCadena("")
    };
    return (
        <div>
            <Numero numero={contador} resetear={resetearContador}/>
            <p> {cadena}</p>
            <button onClick={incrementarContador}>Incrementar</button>
            <button onClick={decrementarContador}>Decrementar</button>
            <button onClick={() => setContador(0)}>Reset</button>
        </div>
    );
};
export default Contador;
import './Numero.css'

function Numero({ numero, resetear }) {
    return <h1 onClick={resetear}>{numero}</h1>
}

export default Numero;

Ejemplo de estados con contador y texto

import React, { useState } from 'react';

const Contador = () => {
    // Quiero variables dentro de una página de react tengo que utilizar estado
    const [contador, setContador] = useState(0);
    const [cadena, setCadena] = useState("")
  
    
    const incrementarContador = () => {
        setContador(contador + 1);
        setCadena("")
    };
    const decrementarContador = () => {
        if (contador>0) {
            setContador(contador - 1);
            
        }else{
            setCadena("No puedes poner número negativos")
        }
        
    };
    return (
        <div>
            <p>Contador: {contador}</p>
            <p> {cadena}</p>
            <button onClick={incrementarContador}>Incrementar</button>
            <button onClick={decrementarContador}>Decrementar</button>
            <button onClick={() => setContador(0)}>Reset</button>
        </div>
    );
};
export default Contador;

Solución 2

import Cabecera from './Cabecera';
import Boton from './Boton';

function Bloque({ texto }) {
    const pinchar=()=>{
        console.log("Has pinchado el botón "+texto)
    }
    // Paso el evento del padre al hijo
    return <div>
        <Cabecera texto={texto} />
        <Boton texto="Pincha aquí" evento={pinchar}/> 
    </div>;
}

export default Bloque;
function Boton({ texto,evento }) {

    return <button onClick={evento}>{texto}</button>;
}

export default Boton;

Solución 1 evento botón

Pasar la información del padre al hijo
En bloque pasamos el texto al botón

import Cabecera from './Cabecera';
import Boton from './Boton';

function Bloque({ texto }) {

    // Paso la información del padre al hijo
    return <div>
        <Cabecera texto={texto} />
        <Boton texto="Pincha aquí" bloque={texto}/> 
    </div>;
}

export default Bloque;
function Boton({ texto,bloque }) {

    return <button onClick={()=>pinchar(bloque)}>{texto}</button>;
}
const pinchar=(texto)=>{
    console.log("Has pinchado el botón "+texto)
}
export default Boton;

Ejemplos

# Bucle es repetir algo varias veces
# while condicion: ejecutamos algo

contador = 0
while contador < 5:  # mientras contador valga menos de 10 ejecuta el siguiente código
    contador += 1  # dentro del while
    print(contador)  # dentro del while
print("Proceso acabado")  # fuera del while

contador = 1
while contador < 100 and contador % 7 != 0:
    contador += 1  # dentro del while
    print(contador)  # dentro del while

# suma los números del 1 al 100

contador = 1
suma = 0
while contador <= 100:
    suma += contador
    contador += 1

print("Los numeros del 1 al 100 suman ", suma)

# imprime por la consola los cuadrados de los números del 1 al 10

contador = 1
while contador <= 10:
    print(contador ** 2)
    contador += 1

cadena=""
while len(cadena)<10:
    cadena+="*"
    print(cadena)

contador=0
while contador<100:
    contador+=7
    print(contador)