Comparación de Cadenas
Las comparaciones de cadenas en Python distinguen entre mayúsculas y minúsculas por defecto. Si la entrada del usuario puede variar en capitalización o incluir espacios adicionales, normalizar primero y luego comparar. Una práctica sencilla y confiable es recortar los espacios en blanco y estandarizar el uso de mayúsculas/minúsculas antes de realizar comprobaciones de igualdad o de prefijo/sufijo.
Sensible a mayúsculas/minúsculas vs insensible
Por defecto, "Apple" == "apple" es False. Para ignorar mayúsculas/minúsculas, normalizar ambos lados.
123a = "Hello" b = "heLLo" print(a.lower() == b.lower()) # True
casefold() es una variante más robusta y compatible internacionalmente de lower(), y es una mejor opción predeterminada para comparaciones insensibles a mayúsculas y minúsculas.
123s1 = "straße" s2 = "STRASSE" print(s1.casefold() == s2.casefold()) # True
Recortar y comparar
Los usuarios suelen agregar espacios por accidente. Eliminar los espacios en blanco al inicio y al final antes de comparar.
123raw = " admin " role = "ADMIN" print(raw.strip().casefold() == role.casefold()) # True
Comprobaciones de prefijo y sufijo
Utilizar startswith y endswith. Para comprobaciones que no distingan entre mayúsculas y minúsculas, normalizar primero.
1234fname = "Report_Final.PDF" print(fname.lower().endswith(".pdf")) # True prefix = "rep" print(fname.strip().casefold().startswith(prefix.casefold())) # True
Proceso de normalización consistente
Elija un orden simple y repetible:
- Elimine los espacios en blanco exteriores con
.strip(); - Estandarice el uso de mayúsculas y minúsculas con
.casefold()(o.lower()si lo prefiere); - Luego utilice
==,in,startswith,endswithu otras comprobaciones.
1. ¿Qué línea realiza correctamente una comprobación de igualdad sin distinguir mayúsculas y minúsculas?
2. Dado s = " Hello ", ¿qué expresión devuelve True para una comprobación de igualdad sin distinguir mayúsculas y minúsculas con "hello" ignorando los espacios circundantes?
3. ¿Cuál afirmación es más precisa para una comparación robusta sin distinción entre mayúsculas y minúsculas?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Can you explain the difference between `lower()` and `casefold()` in more detail?
Are there any situations where `casefold()` might not be appropriate?
Can you show more examples of normalizing user input before comparison?
Awesome!
Completion rate improved to 5
Comparación de Cadenas
Desliza para mostrar el menú
Las comparaciones de cadenas en Python distinguen entre mayúsculas y minúsculas por defecto. Si la entrada del usuario puede variar en capitalización o incluir espacios adicionales, normalizar primero y luego comparar. Una práctica sencilla y confiable es recortar los espacios en blanco y estandarizar el uso de mayúsculas/minúsculas antes de realizar comprobaciones de igualdad o de prefijo/sufijo.
Sensible a mayúsculas/minúsculas vs insensible
Por defecto, "Apple" == "apple" es False. Para ignorar mayúsculas/minúsculas, normalizar ambos lados.
123a = "Hello" b = "heLLo" print(a.lower() == b.lower()) # True
casefold() es una variante más robusta y compatible internacionalmente de lower(), y es una mejor opción predeterminada para comparaciones insensibles a mayúsculas y minúsculas.
123s1 = "straße" s2 = "STRASSE" print(s1.casefold() == s2.casefold()) # True
Recortar y comparar
Los usuarios suelen agregar espacios por accidente. Eliminar los espacios en blanco al inicio y al final antes de comparar.
123raw = " admin " role = "ADMIN" print(raw.strip().casefold() == role.casefold()) # True
Comprobaciones de prefijo y sufijo
Utilizar startswith y endswith. Para comprobaciones que no distingan entre mayúsculas y minúsculas, normalizar primero.
1234fname = "Report_Final.PDF" print(fname.lower().endswith(".pdf")) # True prefix = "rep" print(fname.strip().casefold().startswith(prefix.casefold())) # True
Proceso de normalización consistente
Elija un orden simple y repetible:
- Elimine los espacios en blanco exteriores con
.strip(); - Estandarice el uso de mayúsculas y minúsculas con
.casefold()(o.lower()si lo prefiere); - Luego utilice
==,in,startswith,endswithu otras comprobaciones.
1. ¿Qué línea realiza correctamente una comprobación de igualdad sin distinguir mayúsculas y minúsculas?
2. Dado s = " Hello ", ¿qué expresión devuelve True para una comprobación de igualdad sin distinguir mayúsculas y minúsculas con "hello" ignorando los espacios circundantes?
3. ¿Cuál afirmación es más precisa para una comparación robusta sin distinción entre mayúsculas y minúsculas?
¡Gracias por tus comentarios!