Corrección de Python
Resuelto
Bonjour,
Je bloque en un ejercicio de pix. Tengo que corregir el siguiente código para que funcione:
El único problema que he identificado con mi nivel mini es que falta el comando print al final.
Si alguien pudiera ayudarme sería genial para que pueda entender.
Arcadi
Je bloque en un ejercicio de pix. Tengo que corregir el siguiente código para que funcione:
El único problema que he identificado con mi nivel mini es que falta el comando print al final.
indice = "vbpewfdwaz" letras = "}_v^yk[~jo" i = 0 tutu = '' while i < len(indice): if ord(indice[i]) < 109: tutu=tutu+chr(ord(lettres[i])+10) else: tutu=tutu+chr(ord(lettres[i])-10) i += 1 print(tutu)
Si alguien pudiera ayudarme sería genial para que pueda entender.
Arcadi
2 respuestas
-
Hola,
Dado quei
no se incrementa, el buclewhile
se repetirá indefinidamente.
Luego, te recomiendo que escribas en plural tus iterables y en singular tus iteradores, por ejemplo:
for element in elements: ...
Además, usar índices en este caso no es muy pythonic. A diferencia del lenguaje C, puedes iterar directamente sobre los caracteres de una cadena. Esto también te evitará olvidar incrementari
:-)
Si necesitas iterar sobre dos iterables simultáneamente (que es el caso aquí, ya que deseas avanzar enindices
ylettres
al mismo tiempo), puedes usar las primitivas proporcionadas poritertools
o nativas en Python: en este caso, la que se adapta a tu situación eszip
.
En tu caso, podrías haber escrito algo así:
indices = "vbpewfdwaz" letras = "}_v^yk[~jo" tutu = "" for (indice, letra) in zip(indices, letras): if ord(indice) < 109: tutu = tutu + chr(ord(letra) + 10) else: tutu = tutu + chr(ord(letra) - 10)
El programa puede escribirse de manera aún más concisa utilizando la funciónstr.join
:
indices = "vbpewfdwaz" letras = "}_v^yk[~jo" tutu = "".join( chr(ord(letra) + 10) if ord(indice) < 109 else chr(ord(letra) - 10) for (indice, letra) in zip(indices, letras) )
Buena suerte-
Hola, tengo exactamente el mismo problema, así que copié la respuesta pero no funciona. También intenté print "tutu", quitar las "S" de "lettres", etc., pero absolutamente nada funciona, en
repl.it cuando leo mi programación obtengo python3 main.py
¡AYUDA!
Hola Belinda,
- El código de arriba funciona, acabo de verificarlo. Puedes hacer print(tutu) y ver que tut contiene bien la cadena de caracteres "silhouette".
- Si el problema persiste, por favor abre un nuevo hilo de discusión, reportando el código que ejecutaste y copiando y pegando el mensaje de error exacto.
- En general, evita escribir en un hilo de discusión resuelto. Si es necesario, proporciona el enlace a la discusión a la que te refieres.
Buena suerte
-
-
Hola Mamiemando,
Muchas gracias por su respuesta. Voy a estudiar todo no solo para hacer, sino sobre todo para entender. Su respuesta completa me ayuda mucho.
En cuanto a las reglas éticas de redacción, esta parte es realmente la que me fue proporcionada.
Atentamente,
Arcadi-
Gracias por tu respuesta. En cuanto a los consejos de programación, lo verás con el tiempo :-) También puedes consultar la norma PEP-8 si deseas perfeccionarte.
¡Que te vaya bien!
-