Estoy aprendiendo a programar y estoy usando "cómo pensar como un informático". La pregunta anterior es un ejercicio. Este es el programa sin una función.
fruit = "banana"
index = 0
while index < len(fruit):
letter = fruit[index]
print(letter)
index = index + 1
Quiero poner eso en una función como
def tranversal(fruit):
index = 0
while index < len(fruit):
letter = fruit[index]
return letter
index += 1
print(tranversal("apple"))
Sin embargo, esto solo está imprimiendo la primera letra de "manzana" y si uso la declaración de impresión en lugar de la devolución, obtendré Ninguno. Estoy muy confundido y necesito ayuda !!
6 respuestas
Parece que no entendiste el propósito de la declaración de devolución dentro de una función. Es posible que desee leer esta respuesta primero para aclarar las cosas.
Una vez que comprenda la diferencia entre print()
y return
, debe definir qué debe hacer su función. ¿Necesita devolver la respuesta o está imprimiéndola en la pantalla lo suficiente?
Suponiendo lo último, dado que las cadenas son iterables, una forma más pitónica de hacerlo sería:
def transversal(fruit):
for letter in fruit:
print(letter)
Tenga en cuenta que dado que la función no devuelve explícitamente un valor si intenta algo como:
foo = transversal("banana")
La variable foo
mantendrá el valor None
.
Si desea que su función devuelva la respuesta y no la imprima, puede agregar cada letra a una cadena result
vacía, con separadores para cada nueva línea y, una vez que haya terminado con eso, simplemente devuelva result
. Podría ser un buen ejercicio, así que deberías probarlo :).
Si usa print en la función, no necesita usar print cuando llame a la función.
def tranversal(fruit):
index = 0
while index < len(fruit):
letter = fruit[index]
print(letter)
index += 1
tranversal("apple")
Si usa una declaración return dentro del ciclo while, inmediatamente abandonará la función (y devolverá la primera letra), y el ciclo while no se ejecutará para índices más altos.
Con el fin de comprender, quería hacer ese ejercicio con una función, mientras bucle y obtengo un valor de retorno. Recibí ayuda y aprecio a todos, aquí está mi código:
def `tranversal`(fruit):
result = ""
length = int(len(fruit))
index = 0
while index < length:
result += fruit[index]
index += 1
if index == length:
return "\n".join(result)
print(tranversal("string"))
Debe ejecutar la declaración utilizando la función fuera de la función. Simplemente cambie return tranversal("apple")
fuera de la función transversal
así:
def transversal(fruit):
index = 0
letters = ''
while index < len(fruit):
letters += fruit[index] + '\n'
index += 1
return letters
print(transversal("apple"))
Gracias @MykolaZotko por señalar un error en el código que causó que solo imprimiera la primera letra.
Una solución simple:
print(*'banana', sep='\n')
Salida:
b
a
n
a
n
a
Con la ayuda del operador estrella *
puede dividir una lista o una cadena en partes y pasarlas como argumentos múltiples para que funcionen. Entonces la expresión print(*'abc')
es equivalente a print('a', 'b', 'c')
.
Puedes usar este fragmento de código
def printAllChar(s):
for i in s:
print(i,end='\n')
//calling here...
printAllChar("ProgRank")
//output here...
P
r
o
g
R
a
n
k
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.