PyQuiz 21 – upper() y count() en Python
El reto
texto = 'hola mundo'
print(texto.upper().count('O'))
¿Cuál es el resultado?
- a) 2
- b) 0
- c) 1
Piensa tu respuesta antes de seguir leyendo…
Concepto: upper() y count()
En Python los métodos de cadena son encadenables: como cada método devuelve una nueva cadena, puedes llamar al siguiente método directamente sobre el resultado, sin necesidad de variables intermedias. Esto se llama method chaining.
El método upper() devuelve una nueva cadena con todos los caracteres en mayúsculas. El método count(subcadena) cuenta cuántas veces aparece una subcadena dentro de la cadena. La comparación es sensible a mayúsculas y minúsculas: 'O' y 'o' son caracteres distintos.
Al encadenar texto.upper().count('O'), primero se convierte todo a mayúsculas y después se cuenta la letra 'O' (mayúscula). Esto garantiza contar tanto las ‘o’ originalmente minúsculas como las mayúsculas.
Paso a paso
texto = 'hola mundo'— cadena en minúsculas con dos vocales ‘o’: una en ‘hola’ y otra en ‘mundo’.texto.upper()— devuelve una nueva cadena:'HOLA MUNDO'. Ahora hay dos letras ‘O’: en ‘HOLA’ y en ‘MUNDO’.'HOLA MUNDO'.count('O')— Python busca la subcadena'O'(mayúscula). La encuentra en la posición 1 (‘HOLA’) y en la posición 6 (‘MUNDO’). Resultado:2.print(...)— se imprime2.
Solución
Respuesta correcta: A) 2
upper() convierte a 'HOLA MUNDO'. Hay 2 letras 'O'.
Sabías que…
El encadenamiento de métodos puede hacerse tan largo como necesites. Algunos métodos útiles para limpiar y transformar texto:
texto = ' Hola, Mundo! '
# Encadenamiento múltiple
resultado = texto.strip().lower().replace(',', '').replace('!', '')
print(resultado) # 'hola mundo'
# count con subcadenas de más de un carácter
frase = 'el pythonista aprende python con python'
print(frase.count('python')) # 2 (minúscula)
print(frase.upper().count('PYTHON')) # 3 (incluye el primero)
# Caso práctico: contar vocales ignorando mayúsculas
vocales = 'aeiou'
texto = 'ElPythonista'
total = sum(texto.lower().count(v) for v in vocales)
print(f'Vocales: {total}') # 5
Prueba tú mismo
¿Cuántas veces aparece la letra ‘a’ (sin distinguir mayúsculas) en 'ElPythonista Aprende Python'? Usa upper() y count().
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: Cadenas de caracteres en Python
