Introducción
Hay un ejercicio que aunque no es tan difícil sí que es entretenido. Se trata de contar los baches en un camino y diagnosticar si nuestro auto (suponiendo que tenemos uno) podrá llegar sano y salvo a casa.
El problema dice algo así:
Suponiendo que tenemos un auto y el amortiguador de éste sólo soporta pasar sobre 15 baches antes de romperse, escribir una función que reciba el camino como una cadena (ya veremos más adelante cómo es) y devuelva “Woohoo!” si llegaremos sanos a casa o “Car Dead” en caso contrario.
El camino es representado por _ o n, es decir, guiones bajos y letras ene. Si es un guión bajo entonces el camino está “plano” pero si encontramos una n significa que hay un bache.
Un ejemplo del camino podría ser: __n__ en donde hay 1 bache. En cambio, este: ___nn_nnn_n_n tiene 7 baches y este: _________ no tiene baches.
Solución
Muy fácil, contamos cuántas veces aparece n dentro de la cadena que recibimos. Si el conteo es menor o igual a 15, regresamos “Woohoo!” y en caso de que no, “Car Dead”. Así:
def bumps(road): return "Woohoo!" if road.count("n") <= 15 else "Car Dead"
Está un poco resumido, pero podría expandirse así:
def bumps(road): conteo = road.count("n") if conteo <= 15: return "Woohoo!" else: return "Car Dead"
Y para probar podemos hacer esto:
print(bumps("___n_n_n______________n"))# Woohoo!, pues sólo hay 4 print(bumps("n__nnnn__nn___nnnnnnnnnn________"))# Car Dead, porque hay 17 print(bumps("____nnnn___________nnnnn_______n_n_n_n_"))# Wohoo! porque hay 13
Con estos resultados: