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 réponses
Hola,
Dado que
Luego, te recomiendo que escribas en plural tus iterables y en singular tus iteradores, por ejemplo:
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 incrementar
Si necesitas iterar sobre dos iterables simultáneamente (que es el caso aquí, ya que deseas avanzar en
En tu caso, podrías haber escrito algo así:
El programa puede escribirse de manera aún más concisa utilizando la función
Buena suerte
Dado que
ino se incrementa, el bucle
whilese 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 incrementar
i:-)
Si necesitas iterar sobre dos iterables simultáneamente (que es el caso aquí, ya que deseas avanzar en
indicesy
lettresal mismo tiempo), puedes usar las primitivas proporcionadas por
itertoolso nativas en Python: en este caso, la que se adapta a tu situación es
zip.
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ón
str.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 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
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!
¡Que te vaya bien!
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,
Buena suerte