Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/01/2013, 19:28
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: ejercicio dar una medalla segun puntacion de participante.

El problema esta en la condición de tu if.

Código Python:
Ver original
  1. if a and b and c >3:

La razón es que no hace lo que tu piensas que hace. Que seria: "Si a y b y c mayor a tres.", bueno pues eso no hace.

Lo que realmente hace es:
Si a es verdadero y b es verdadero y c es mayor a tres entonces ...

¿En python que es verdadero?
Esto depende del tipo de dato que estés usando. Por ejemplo para un entero si es 0 es falso y para cualquier otro valor es verdadero. Para una lista, si esta vacía es falsa y si tiene algo es verdadera. Lo mismo para las cadenas, tuplas y diccionarios.

Ejemplos:
Código Python:
Ver original
  1. a = 10
  2. print bool(a) # True
  3. a = 0
  4. print bool(a) # False
  5. a = 1
  6. print bool(a) # True
  7. a = -1
  8. print bool(a) # True

Si quieres verificar que a, b y c sean mayores a tres lo puedes hacer explicitamente.

Código Python:
Ver original
  1. a > 3 and b > 3 and c > 3

Puedes mejorar esto si lees un poco mejor: Minimo de 4 puntos por cada prueba
Código Python:
Ver original
  1. min(a, b, c) > 3
Con un poco de lógica es fácil hacer la siguiente deducción:
Si el mínimo de (a, b, c) > 3 entonces a > 3, b > 3 y c > 3