1

no logro que funcione me tira error, soy nuevo en python, me pueden ayudar?

       dxs1 = [1.55, 1.56, 1.57, 1.58]
       ds1 = [1.59, 1.60, 1.61, 1.62] 
       dm1 = [1.63, 1.64, 1.65, 1.66] 
       dl1 = [1.67, 1.68, 1.69, 1.70] 
       print (dl1)
       #ingreso una medida

       n = input ("ingrese su altura :   "  )


> #a partir de esa medida me devuelva en que talle entra

       if n == dl1:
          print ("usted es talle L")
       elif  n == dm1 :
          print ("Usted es talle M") 
       elif n == (ds1):
          print ("Usted es talle S") 
       elif n == (dxs1):
          print ("Usted es talle XS")     
       else :
          print ("usted es Ees un talle especial")

no logro que ande soy nuevo me pueden ayudar se me complica para entrar un valor medida y que me devuelva lo que quiero.

Alfabravo
  • 7,352
  • 5
  • 21
  • 31

2 Answers2

1

Otra forma podría ser con diccionarios, donde cada item tendría como llave (key) el tipo de talla y como valor (value) una tupla correspondiente al rango de altura de esa talla. Esto es mucho más escalable, puedes modificar los rangos, quitar o agregar más, sin alterar el código posterior.

Como se puede observar, se inicializa su_talla como 'Especial'. Si no se cumple ningún rango dentro del for entonces esa será la talla final para el usuario.

tallas = {'XS':(1.55,1.58), 'S':(1.59,1.62), 'M':(1.63,1.66), 'L':(1.67,1.70)}
n = float(input("ingrese su altura : "))
su_talla = 'Especial'
for key, value in tallas.items():
    if value[0] <= n <= value[1]:
        su_talla = key

print("Usted es una talla {}".format(su_talla))
aeportugal
  • 7,106
  • 2
  • 9
  • 21
0

Te comento los problemas que tienes en el código:

  • Cuando usas input, el resultado es texto, un string. Por tanto no puedes compararlo con un número. Esto lo puedes arreglar así:

    n = float(input ("ingrese su altura :   "))
    
  • Aunque ya tengas un número, tienes el problema de que quieres compararlo con una lista, cuando lo que realmente quieres es saber si el número está en la lista:

    if n in dl1:
        ...
    
  • De todos modos, sabiendo los problemas que los números con coma flotante dan problemas, podrías hacer lo siguiente, sin necesidad de usar listas:

    dl_min = 1.67
    dl_max = 1.70
    
    if dl_min < n < dl_max:
        print ("usted es talle L")
    
Pablo Lozano
  • 45,934
  • 7
  • 48
  • 87