La solicitud

De Jordan Reyes, Director de Marketing
Tu objetivo
Asigna a result un str con la forma "Dana Whitfield: silver": el nombre sin los espacios de alrededor y con cada palabra capitalizada, dos puntos y un espacio, y después el nivel en minúsculas. Reglas de nivel: 'gold' si spend es al menos 1000 y orders es al menos 5; en otro caso 'silver' si spend es al menos 500 o orders es al menos 10; en otro caso 'bronze'.
- Guarda un texto (str) en
resultpendiente
Tu código
Cargando el editor…
Solución de referencia
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Lo que recibe Jordan, y por qué
La lección
and, or y el orden de las ramas
and es verdadero solo cuando ambos lados lo son. or es verdadero cuando al menos un lado lo es. Oro
usa and y plata usa or, y esa diferencia decide el nivel de Dana:
spend >= 1000 and orders >= 5 # True and False -> False
spend >= 500 or orders >= 10 # True or False -> True
Una cadena if/elif/else se detiene en la primera rama verdadera, así que el orden importa. Pon primero
el nivel más exigente. Si plata fuera primero, un cliente con $3,000 y 20 pedidos coincidiría con plata
y la rama de oro nunca se ejecutaría.
if spend >= 1000 and orders >= 5:
tier = "gold"
elif spend >= 500 or orders >= 10:
tier = "silver"
else:
tier = "bronze"
Un cliente con $200 gastados y 12 pedidos cae en plata por el lado de los pedidos del or. Un cliente
con $480 y 3 pedidos pasa a bronce.
Cuando una regla mezcla and y or en una línea, añade paréntesis para que la agrupación sea obvia
para el siguiente lector: (spend >= 1000 and orders >= 5) or vip. Python evalúa and antes que or,
pero nadie debería tener que recordarlo para revisar una regla de negocio. Las condiciones cortas y
explícitas también son mucho más fáciles de probar una a una cuando un cliente pregunta por qué acabó
en el nivel equivocado.
Limpiar el texto antes de mostrarlo
Los nombres escritos en un CRM llegan con espacios sueltos y mayúsculas al azar. Los métodos de string devuelven un string nuevo y limpio, y se pueden encadenar:
" dana WHITFIELD ".strip() # 'dana WHITFIELD'
" dana WHITFIELD ".strip().title() # 'Dana Whitfield'
.title() pone en mayúscula la primera letra de cada palabra y el resto en minúscula. Sirve para la
mayoría de los nombres, pero no es perfecto: “mcallister” se convierte en “Mcallister”, no en
“McAllister”. Para una etiqueta rápida suele ser aceptable; para un envío postal querrías una fuente
más limpia.
Construir la etiqueta
Un f-string mete valores en el texto. Todo lo que está entre llaves se evalúa, incluidas las llamadas a métodos:
f"{name.strip().title()}: {tier}" # 'Dana Whitfield: silver'
Errores comunes
- Intercambiar
andyorentre los niveles. Las palabras de la política («y», «o») se corresponden directamente con las palabras clave de Python, así que cópialas con cuidado. - Usar
>cuando la regla dice «al menos». $1,000 exactos ya son territorio oro, así que la prueba es>=. - Poner plata antes que oro.
- Llamar a
.title()pero olvidar.strip(), lo que deja espacios al principio de la etiqueta.
¡Linterna encendida!
Practicaste: if elif elseand orstringsf strings
- Resuelto
- Sin pistas
- Al primer intento
