[ Foro de Python ]

Duda muy principiante

25-Nov-2019 19:26
Gonzalo Mora
4 Respuestas

Buenas, tengo una duda con el siguiente script:


hola = False
chau = False
prueba = hola or chau

print (prueba)

hola = True
print(prueba)

prueba = hola or chau
print (prueba)


Cuando lo corro tira:
False
False
True
¿No deberían ser las últimas dos True? ¿Por qué prueba se vuelve True recién cuando la vuelvo a asignar valores (que son los mismos que tenía antes)? No lo entiendo

Muchas gracias


26-Nov-2019 13:47
Nacho Cabanes (+83)

No, el comportamiento es el esperable: si no "recalculas" el valor de "prueba", los cambios en "hola" o en "chau" no se reflejarán en "prueba", no están enlazadas, sino que se toma su valor puntual en un instante concreto.


26-Nov-2019 16:11
Gonzalo Mora

Gracias por responderme.
Imaginé que el programa realizaba lo esperable y el error era mío, recién estoy empezando. Por tu respuesta entonces voy a reformular: no deberían quedar enlazadas automáticamente? ¿Por qué no lo hacen? Y, más importante, se pueden enlazar? Con saber qué función sirve me ayudaría mucho, no tengo problema en seguir buscando información una vez que sepa cómo hacerlo. Muchas gracias  


26-Nov-2019 16:22
Nacho Cabanes (+83)

No se pueden enlazar. En una hoja de cálculo, los valores de las celdas se recalculan cuando modificas alguna de las casillas de las que dependen. Pero en un programa no: si haces suma = x+y, se toman los valores de las variables x e y en ese instante, pero si x cambia, no se recalcula el valor de suma, a no ser que tú la vuelvas a calcular explícitamente en una orden posterior.

Con las funciones, el comportamiento cambia, sí se calculan cada vez que las llamas, pero si estás empezando, imagino que aún no habrás llegado a estudiar nada de funciones.

Como imagino que ya sabes, en estas páginas  también tienes un tutorial de introducción a Python:

https://aprendeaprogramar.com/cursos/ver.php?id=7
 


27-Nov-2019 00:55
Gonzalo Mora

En efecto, recién estoy empezando, las funciones todavía me cuestan, más que nada usar bien el return. Pero si sirven para hacer eso entonces pronto podré encontrarle la vuelta. Muchas gracias por la ayuda, realmente se valora :)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)