String frase="En un lugar de la mancha de cuyo nombre";
// Dividimos la cadena por espacio
// Los espacios no se incluyen
// Obtenemos un array con los elementos resultantes
String[] palabras=frase.split(" ");
System.out.println(Arrays.toString(palabras)); //[En, un, lugar, de, la, mancha, de, cuyo, nombre]
frase="1,2,3,4,5,6";
palabras=frase.split(",");
System.out.println(Arrays.toString(palabras)); //[1, 2, 3, 4, 5, 6]
frase="En un lugar de la mancha de cuyo nombre";
palabras=frase.split(" ");
String masLarga="";
// Recorro el array con foreach
for(String palabra:palabras) {
// Si la palabra en la que estoy es más larga
// Que la que ya tenía la sustituyo
if (palabra.length()>masLarga.length()) {
masLarga=palabra;
}
}
System.out.println("La palabra más larga es "+masLarga);
Más ejemplos Arrays
public static void main(String[] args) {
// tipo[] nombredelarray=new tipo[tamaño] o {valores,...}
// Con tamaño
int[] cuadrados = new int[10];
// Con valores
int[] notas = { 6, 3, 8, 9, 7 };
// Un tipo string
String[] alumnos = { "Ana", "Eva", "Pep", "Juan" };
// recorro el array usando un for normal
for (int i = 0; i < alumnos.length; i++) {
System.out.println(alumnos[i]);
}
// recorro el array usando el foreach (solo valoes)
for (String alumno : alumnos) {
System.out.println(alumno);
}
// Recorro el array y lo modifico porque tengo el índice
for (int i = 1; i <= cuadrados.length; i++) {
cuadrados[i - 1] = i * i;
}
System.out.println(Arrays.toString(cuadrados)); // [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
// Modifico la posición 1 del array
alumnos[1] = "Federica";
System.out.println(Arrays.toString(alumnos)); // [Ana, Federica, Pep, Juan]
// Suma de los cuadrados que hemos generado antes
int suma = 0;
// Utilizo foreach porque solo quiero los valores
for (int cuadrado : cuadrados) {
suma += cuadrado;
}
System.out.println(suma);
// Creo un array de un tamaño fijo
Scanner sc = new Scanner(System.in);
System.out.println("¿De qué tamaño quieres la lista");
int tamanyo = sc.nextInt();
// EL tamaño puede venir de una variable
int[] lista = new int[tamanyo];
// Relleno el array pidiendo valores al usuario
for (int i = 0; i < lista.length; i++) {
System.out.println("Dime el número " + (i + 1) + ":");
lista[i] = sc.nextInt();
}
sc.close();
System.out.println(Arrays.toString(lista));
int total = sumaArray(lista);
System.out.println(total); // Imprimirá la suma de los número del usuario
}
// Creo una función que me suma todos los números
// Del array que le pasemos
static int sumaArray(int[] numeros) {
int total = 0;
// Uso el foreach nunca se modifica el array
for (int numero : numeros) {
total += numero;
}
return total;
}
Arrays ejemplos
public static void main(String[] args) {
// Defino una variable como entero
// almacena 1 valor entero
int edad = 5;
// Para almacenar más de un valor del mismo tipo
// se usan los arrays
int[] edades = new int[5];
edades[0] = 20;
edades[1] = 70;
edades[2] = 8;
edades[3] = 90;
edades[4] = 65;
for (int i = 0; i < edades.length; i++) {
System.out.println(edades[i]);
}
int[] precios = { 20, 30, 50, 18 };
System.out.println(precios[2]);
precios = new int[5];
int[] fibonacci = new int[10];
fibonacci[0] = 1;
fibonacci[1] = 1;
for (int i = 2; i < fibonacci.length; i++) {
fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
}
System.out.println(Arrays.toString(fibonacci));
// foreach
for (int numero : fibonacci) {
System.out.println(numero);
}
System.out.println(fibonacci);
printArray(fibonacci);
int[] inverso=reverseArray(fibonacci);
System.out.println(Arrays.toString(inverso));
int[] otro=printArrayDuplicado(fibonacci);
System.out.println(Arrays.toString(fibonacci));
int a=90;
int b=a;
a=25;
int[] pepe=fibonacci.clone();
int[] nuevo=Arrays.copyOf(fibonacci,fibonacci.length);
System.out.println(doble(a));
System.out.println(a);
}
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
public static int[] reverseArray(int[] arr) {
int[] result = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
result[i] = arr[arr.length - i - 1];
}
return result;
}
public static int[] printArrayDuplicado(int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i]*=2; // NO HACER NUNCA
}
return arr;
}
public static int doble(int numero) {
numero*=2;
return numero;
}
Más ejercicios cadenas resueltos
static int contarLetra(String cadena, char letra) {
int total = 0;
for (int i = 0; i < cadena.length(); i++) {
if (cadena.charAt(i) == letra) {
total++;
}
}
return total;
}
static int contarVocales(String cadena) {
cadena = quitarAcentos(cadena.toLowerCase());
String vocales = "aeiou";
int total = 0;
for (int i = 0; i < vocales.length(); i++) {
total += contarLetra(cadena, vocales.charAt(i));
}
return total;
}
static String sinEspacios(String cadena) {
cadena = cadena.trim();
while (cadena.indexOf(" ") != -1) {
cadena = cadena.replace(" ", " ");
}
return cadena;
}
static int contarChar(String cadena, char letra) {
int total = 0;
for (int i = 0; i < cadena.length(); i++) {
if (cadena.charAt(i) == letra) {
total++;
}
}
return total;
}
static String eliminar(String cadena, String cadenaEliminar) {
return cadena.replace(cadenaEliminar, "");
}
static String cambiar(String cadena, char antiguo, char nuevo) {
return cadena.replace(antiguo, nuevo);
}
Ejercicios cadenas resueltos
public static void main(String[] args) {
// Escribir una función que invierta el orden de los caracteres
// de una cadena dada. invertir("hola")–>"aloh"
String alreves=invertirCadena("cacahuete");
System.out.println(alreves);
if (esPalindromo("Isaac no ronca así")) {
System.out.println("Es palindromo");
}
System.out.println(quitarAcentos("áéíóúàèìòùäëïöü"));
// Saber si una cadena es un palíndromo
// Se lee lo mismo al derecho que al revés
// dabalearrozalazorraelabad
// dabalearrozalazorraelabad
// Sé dar la vuelta: Lo acabo de hacer
// Sé quitar espacios: replace(" ", "")
// quitar acentos que nos sustituya vocales acentuadas
// por vocales sin acento
// puedo reemplazar cada vocal acentuada por la sin acentuar
// Tengo un problema: hay que encontrar el algoritmo
// ¿Cómo lo hago yo?
// Divide y vencerás: El problema grande se convierte
// En problemas más pequeños
}
public static String quitarAcentos(String cadena) {
String acentos="áéíóúàèìòùäëïöü";
String sinacentos="aeiou";
for(int i=0;i<acentos.length();i++) {
cadena=cadena.replace(acentos.charAt(i),
sinacentos.charAt(i%5)); // Aritmética modular
}
return cadena;
}
public static boolean esPalindromo(String cadena) {
cadena=cadena.replace(" ","");
cadena=quitarAcentos(cadena);
return cadena.equalsIgnoreCase(invertirCadena(cadena));
}
public static String invertirCadena(String cadena) {
// cacahuete -> eteuhacac
// empiezo por el final, voy letra a letra y escribo cada letra
// ¿Se empezar e ir letra a letra? Sí con un for
// Se añadir esas letras a un resultado: sí, concatenando
String res="";
for(int i=cadena.length()-1;i>=0;i--) {
res+=cadena.charAt(i);
}
return res;
}
Strings en Java
// Definir cadenas
String nombre="Ana";
String departamento="marketing";
System.out.println(nombre+" "+ departamento);
nombre="Eva";
System.out.println(nombre+" "+ departamento);
// Estas tres cadenas valen lo mismo
String alumno1="Ana";
String alumno2=alumno1;
String alumno3="Ana";
Scanner sc=new Scanner(System.in);
String alumno4=sc.next();
if (alumno1==alumno2) {
System.out.println("Alumno 1 es igual al 2");
}
if (alumno1==alumno3) {
System.out.println("Alumno 1 es igual al 3");
}
if (alumno1==alumno4) {
System.out.println("Alumno 1 es igual al 4");
}
// Todo este rollo es para que enendáis que si quiero
// comprobar que dos cadenas son iguales
// Tengo que usar equals
if (alumno1.equals(alumno4)) {
System.out.println("Alumno 1 es igual al 4");
}
// en un tipo primitivo el nombre es una caja
// En la que meto el valor
int edad=5;
//En los que no son primitivos (casi todos)
// El nombre es una caja donde está la
// posición de memoria donde está el valor
String aula="Mates";
System.out.println("Dime tu ciudad");
String ciudad=sc.next();
// Comprobar si una cadena es igual a otra
// siempre uso equals
if (ciudad.equals("barcelona")) {
System.out.println("Eres de Barcelona");
}
// length es una de las muchas funciones
// de la clase string
System.out.println(ciudad.length());
// charAt(posicion) el caracter en esa posición
String referencia="ABCDE";
System.out.println(referencia.charAt(0)); // La A
// Esto me recorre todas las letras de la cadena
for (int i=0;i<referencia.length();i++) {
System.out.println(referencia.charAt(i));
}
System.out.println(referencia.charAt(referencia.length()-1));// Último caracter
for (int i=0;i<referencia.length();i++) {
System.out.println(referencia.charAt(referencia.length()-i-1));
}
// Obtener subcadenas de una cadena
// substring(int beginIndex, int endIndex)
for (int i=0;i<referencia.length();i++) {
System.out.println(referencia.substring(i));
}
for (int i=0;i<referencia.length();i++) {
System.out.println(referencia.substring(0,i+1));
}
// Buscar una cadena dentro de otra
// Si la encuentra nos devuelve la posición
// Si no la encuentra nos devuelve -1
String quijote="En un lugar de la mancha de cuyo nombre no quiero acordarme";
System.out.println(quijote.indexOf(" mancha")); // 18
System.out.println(quijote.indexOf("messi")); // -1 porque no lo ha encontrado
System.out.println(quijote.indexOf("de")); // 12
System.out.println(quijote.indexOf("de",13)); // 25
int pos1=quijote.indexOf("de"); //12
int pos2=quijote.indexOf("de", pos1+1); //25
// Me busca todas las apariciones de la cadena buscar
// Dentro de quijote
String buscar="de";
int pos=quijote.indexOf(buscar);
while(pos!=-1) {
System.out.println(pos);
pos=quijote.indexOf(buscar, pos+1);
}
// Reemplazar una cadena por otra
// replace(CharSequence target, CharSequence replacement)
String censura=quijote.replace("mancha", "###");
System.out.println(censura);
String noespacios=quijote.replace(" ", "");
System.out.println(noespacios);
// Convertir a mayúsculas y a minúsculas
// toUpperCase() y toLowerCase()
System.out.println(quijote.toUpperCase());
System.out.println(quijote.toLowerCase());
ciudad=" barcelona";
if (ciudad.trim().toLowerCase().equals("barcelona")) {
System.out.println("Eres de Barcelona");
}
if (ciudad.equalsIgnoreCase("barcelona")) {
System.out.println("Eres de Barcelona");
}
ciudad.endsWith("a"); //Acaba en la letra a
ciudad.startsWith("a"); // Empieza con a
ciudad.trim(); // Elimina los espacios del principio y del final
Librería JS para hacer juegos vintage
Mas diccionarios
coche1={"marca":"Tesla","tipo":"Electrico","autonomía":500,"precio":40000}
coche2={"marca":"Citroen","tipo":"Gasolina","autonomía":2500,"precio":10000}
empleado1={"departamento":"contabilidad","sueldo":3000,"nombre":"Ana Pi"}
empleado2={"departamento":"marketing","sueldo":2000,"nombre":"Eva Buj"}
# sueldo del emppleado 1
print(empleado1['sueldo'])
# aumento el sueldo un 10% al empleado 1:
empleado1['sueldo']*=1.1
print(empleado1['sueldo'])
concesionario=[{"marca":"Tesla","tipo":"Electrico","autonomía":500,"precio":40000},
{"marca":"Citroen","tipo":"Gasolina","autonomía":2500,"precio":10000},
{"marca": "Ford", "tipo": "Gasolina", "autonomía": 3500, "precio": 20000},
{"marca": "Ferrari", "tipo": "Gasolina", "autonomía": 5500, "precio": 120000},
{"marca": "Seat", "tipo": "Electrico", "autonomía": 700, "precio": 10000},
{"marca": "Skoda", "tipo": "Gasolina", "autonomía": 3500, "precio": 7000},
]
for coche in concesionario:
print(coche)
# Cual es el coche más caro
def coche_mas_caro(concesionario):
caro=concesionario[0]
for coche in concesionario:
if coche['precio']>caro['precio']:
caro=coche
return caro
# media de precios
def media_precios_coche(concesionario):
total=0
for coche in concesionario:
total+=coche['precio']
return total/len(concesionario)
def coches_con_autonomia(concesionario, autonomia):
res=[]
for coche in concesionario:
if coche['autonomía']>=autonomia:
res.append(coche['marca']) # res+=[coche]
return res
print("Mas caro",coche_mas_caro(concesionario))
print(media_precios_coche(concesionario))
for coche in coches_con_autonomia(concesionario,2000):
print(coche)
empleados=[{"departamento":"contabilidad","sueldo":3000,"cantidad":3},
{"departamento":"marketing","sueldo":2000,"cantidad":2},
{"departamento":"ceo","sueldo":12000,"cantidad":1},
{"departamento":"administracion","sueldo":1500,"cantidad":5}]
# ¿Cuanto gasta la empresa en sueldos al mes?
def total_sueldos(empresa):
total=0
# ¿Qué recorro? UNA LISTA
for empleado in empresa:
total+=empleado['sueldo']*empleado['cantidad']
return total
print(total_sueldos(empleados))
Ejemplos diccionarios
[Python]
# Pares clave:valor
# nombre del alumno y la nota
alumnos=[«Ana»,»Pep»,»Eva»]
notas=[6,7,2]
alumno1={«nombre»:»Ana»,»nota»:6,»email»:»ana@ana.com»,»telefono»:»666999666″}
alumno2={«nombre»:»Pep»,»nota»:7}
alumno3={«nombre»:»Eva»,»nota»:2}
clase=({«nombre»:»Ana»,»nota»:6,»email»:»ana@ana.com»,»telefono»:»666999666″},
{«nombre»:»Pep»,»nota»:7},
{«nombre»:»Eva»,»nota»:2})
print(alumno1[‘nombre’])
# recorremos el diccionario, por defecto son las claves (nombre, nota…)
for clave in alumno1:
print(clave, alumno1[clave])
# recorremos solo los valores del diccionario («Ana»,6,…)
for valor in alumno1.values():
print(valor)
# recorremos las dos cosas, la clave y el valor desempaquetando los items
for clave,valor in alumno1.items():
print(clave,valor)
# bucle anidado para recorrer la lista de alumnos y después sus valores
for alumno in clase: # Primero obtengo el alumno
print(alumno)
for clave, valor in alumno.items(): #para cada alumno recorro sus valores
print(clave, valor)
# Función para calcular la media de notas de una clase
def mediaNotas(clase):
total=0
for alumno in clase: # recorro la lista de alumnos
total+=alumno[‘nota’] # accedo directamente al valor del diccionario que me hace falta
# no hace falta un bucle anidado
return total/len(clase)
print(mediaNotas(clase))
[/Python]
Ejemplos bucles anidados y otros
# bucle anidado: bucle dentro de otro bucle
def palabrascon2A(cadena):
res=[]
for palabra in cadena.split():
cont=0
for i in palabra:
if i == "a":
cont+=1
if (cont==2):
res.append(palabra)
return res
print(palabrascon2A("hola que tal hacia mañana"))
def contarLetra(palabra,letra):
cont=0
for l in palabra:
if l==letra:
cont+=1
return cont
def palabrasConLetrasContadas(cadena,letra,cantidad):
res=[]
for palabra in cadena.split():
if contarLetra(palabra,letra)==cantidad:
res+=[palabra]
return res
print(palabrasConLetrasContadas("ojo con los monstruos horrososo","o",2))