Ejercicio 22

Ejercicio 22

de SANCHEZ BUSSO, Tomas Bautista -
Número de respuestas: 1

Realice el ejercicio 22 del modulo 2 y en el editor online funciona perfectamente, pero al momento de comprobarlo en el TP2, los datos ingresados por el LEV no entran en mi programa por ende me da error.

El programa es: 

print "Piense un numero entre 0 y 31. Le hare unas preguntas y sabre cual es el numero que penso"

Cont=0

print "Es ese numero <16?"

N1= raw_input()

if N1=='No':

  print "Es ese numero < 24?"

  Cont = Cont+2**4

  N2 = raw_input()

  if N2=='No':

    Cont = Cont+2**3

    print "Es ese numero < 28?"

    N18= raw_input()

    if N18== 'No':

      Cont = Cont+2**2

      print "Es ese numero < 30?"

      N19= raw_input()

      if N19== 'No':

        Cont = Cont+2**1

        print "Es ese numero < 31?"

        N20= raw_input()

        if N20=='No':

          Cont=Cont+1

          print  "El numero que eligio es %d " %(Cont)

        if N20== 'Si':

          print  "El numero que eligio es %d " %(Cont)

      if N19== 'Si':

        print "Es ese numero < 29?"

        N20= raw_input()

        if N20== 'No':

          Cont=Cont+1

          print "El numero que eligio es %d " %(Cont)

        if N20== 'Si':

          print "El numero que eligio es %d " %(Cont)

    if N18== 'Si':

      print "Es ese numero < 26?"

      N21= raw_input()

      if N21== 'No':

        Cont=Cont+2**1

        print "Es ese numero < 27?"

        N22= raw_input()

        if N22 == 'No':

          Cont=Cont+1

          print "El numero que eligio es %d " %(Cont)

        if N22 == 'Si':

          print "El numero que eligio es %d " %(Cont)

      if N21== 'Si':

        print "Es ese numero < 25?"

        N23= raw_input()

        if N23== 'No':

          Cont=Cont+1

          print "El numero que eligio es %d " %(Cont)

        if N23 == 'Si':

          print "El numero que eligio es %d " %(Cont)

  if N2== 'Si':

    print "Es ese numero < 22?"

    N24=raw_input()

    if N24=='No':

      print "Es ese numero < 23?"

      N25= raw_input()

      if N25== 'No':

        Cont=Cont+2**3-1

        print "El numero que eligio es %d " %(Cont)

      if N25== 'Si':

        Cont= Cont+2**2+2**1

        print "El numero que eligio es %d " %(Cont)

    if N24== 'Si':

      print "Es ese numero < 20?"

      N26=raw_input()

      if N26== 'No':

        Cont=Cont+2**2

        print "Es ese numero < 21?"

        N27= raw_input()

        if N27== 'No':

          Cont=Cont+1

          print "El numero que eligio es %d " %(Cont)

        if N27== 'Si':

          print "El numero que eligio es %d " %(Cont)

      if N26== 'Si':

        print "Es ese numero < 18?"

        N28=raw_input()

        if N28 == 'No':

          Cont=Cont+2**1

          print "Es ese numero < 19?"

          N29=raw_input()

          if N29 == 'No':

            Cont=Cont+1

            print "El numero que eligio es %d " %(Cont)

          if N29 == 'Si':

            print "El numero que eligio es %d " %(Cont)

        if N28 == 'Si':

          print "Es ese numero < 17?"

          N30=raw_input()

          if N30== 'No':

            Cont=Cont+1

            print "El numero que eligio es %d " %(Cont)

          if N30== 'Si':

            print "El numero que eligio es %d " %(Cont)

  

if N1=='Si':

  print "Es ese numero < 8?"

  N2 = raw_input ()

  if N2== 'No':

    Cont=Cont+2**3

    print "Es ese numero < 12?"

    N11 = raw_input()

    if N11== 'Si':

      print "Es ese numero < 10?"

      N12= raw_input()

      if N12== 'Si':

        print "Es ese numero < 9?"

        N13= raw_input()

        if N13== 'Si':

          print "El numero que eligio es %d " %(Cont)

        if N13== 'No':

          Cont=Cont+1

          print "El numero que eligio es %d " %(Cont)

      if N12== 'No':

        Cont=Cont+2**1

        print "Es ese numero < 11?"

        N14= raw_input()

        if N14== 'Si':

          print "El numero que eligio es %d " %(Cont)

        if N14== 'No':

          Cont=Cont+1

          print "El numero que eligio es %d " %(Cont)

        

    if N11== 'No':

      Cont=Cont+2**1

      print "Es ese numero < 14?"

      N15= raw_input()

      if N15== 'Si':

        print "Es ese numero <13?"

        N16= raw_input()

        if N16== 'Si':

          Cont=Cont+2

          print "El numero que eligio es %d " %(Cont)

        if N16== 'No':

          Cont=Cont+2**1+1

          print "El numero que eligio es %d " %(Cont)

      if N15== 'No':

        Cont=Cont+2**2

        print "Es ese numero < 15?"

        N17 = raw_input()

        if N17== 'Si':

          print "El numero que eligio es %d " %(Cont)

        if N17== 'No':

          Cont=Cont+1

          print "El numero que eligio es %d " %(Cont)

  if N2=='Si':

        print "Es ese numero < 4?"

        N3 = raw_input()

        if N3== 'Si':

          print "Es ese numero < 2?"

          N5 = raw_input()

          if N5 == 'Si':

            print "Es ese numero < 1?"

            N6 =raw_input()

            if N6 == 'No':

              print "El numero que eligio es 1" 

            if N6 == 'Si':

              print "El numero que eligio es %d " %(Cont)

          if N5=='No':

            Cont=Cont+2**1

            print "Es ese numero < 3?"

            N10= raw_input()

            if N10=='Si':

              print "El numero que eligio es %d " %(Cont)

            if N10== 'No':

              Cont=Cont+1

              print "El numero que eligio es %d " %(Cont)

          

        if N3 == 'No':

          Cont=Cont+2**2

          print "Es ese numero < 6?"

          N4 = raw_input()

          if N4 == 'Si':

            print "Es ese numero < 5?"

            N7= raw_input()

            if N7 == 'Si':

              print "El numero que eligio es %d " %(Cont)

              if N7 == 'No':

                Cont=Cont+1

                print "El numero que eligio es %d " %(Cont)

                if N4 =='No':

                  Cont=Cont+2**1

                  print "Es ese numero <7?"

                  N8= raw_input()

                  if N8== 'No':

                    Cont=Cont+1

                    print "El numero que eligio es %d " %(Cont)

                    if N8== 'Si':

                      print  "El numero que eligio es %d " %(Cont)

En respuesta a SANCHEZ BUSSO, Tomas Bautista

Re: Ejercicio 22

de MADOERY, PABLO GUSTAVO -
Hola Tomás.

Parece ser que no se están tomando bien las indentaciones cuando pegas el programa.

Mas allá de eso, la solución que planteaste, si bien es correcta, resuelve el problema de una forma que prueba todas las combinaciones posibles y termina siendo muy extensa y propensa a errores.
Hay una forma mas simple de pensar esto y te la comparto en la siguiente imagen para que trates de reescribir un programa mas corto.
La idea básica es que tenes un numero x que elige el usuario (por ej 21) y que se usa la respuesta de las preguntas Si/No para determinar que bits estan en 1 y cuales en 0. 

Fijate el pseudocodigo de abajo y avisame si se entiende.

d
y asi sucesivamente hasta llegar al bit 0