Python - Uso de "True" and "False"

   
Vista:

Uso de "True" and "False"

Publicado por Martín (3 intervenciones) el 11/01/2012 22:36:27
Hola.

Estoy aprendiendo a programar en Python siguiendo este manual:

http://www.lawebdelprogramador.com/cursos/Python/4463-Introduccion_a_la_programacion_con_Python.html

En el ejercicio 129 (pág. 118) me pide calcular el MCD (máximo común divisor) de dos enteros positivos ingresados por el usuario. Lo que yo escribí funciona, pero estoy en una parte que trata del uso de False and True... y yo lo hice sin eso. No me doy cuenta cómo escribir el programa utilizando esos valores lógicos.

Aquí les copio lo que hice:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
entero_uno=int(raw_input('Dame un número: '))
entero_dos=int(raw_input('Dame otro número: '))
 
if entero_uno<entero_dos:
  menor=entero_uno
  mayor=entero_dos
else:
  menor=entero_dos
  mayor=entero_uno
 
#aprovecho que el MCD no puede exceder a la mitad del menor, defino esto:
divisor = int(menor/2)
 
while mayor % divisor != 0 and menor % divisor != 0 :
  divisor+=1
 
print 'MCD=', divisor

Bueno, agradezco sugerencias.
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Uso de

Publicado por Lucas luk.s2009@live.com (2 intervenciones) el 30/01/2012 21:22:00
Mira, yo tambien estoy aprendiendo (de ese mismo libro) pero te comento. Hay numeros que no tienen mcd (excepto el 1, que con tu programa si no me equivoco subiria al divisor hasta el limite y mostraria ese numero ). Por ejemplo los numeros 3 y 4.

Con un booleano podrias controlar si se encuentra un divisor comun != 1. Por ejemplo

1
2
3
4
5
6
7
8
9
10
11
12
13
entero_uno=int(raw_input('Dame un número: '))
entero_dos=int(raw_input('Dame otro número: '))
hay_mcd = false
 
if entero_uno<entero_dos:
  menor=entero_uno
  mayor=entero_dos
else:
  menor=entero_dos
  mayor=entero_uno
 
#aprovecho que el MCD no puede exceder a la mitad del menor, defino esto:
divisor = int(menor/2)


1
2
3
4
5
6
7
8
while hay_mcd = False
     divisor+=1
     if  mayor % divisor != 0 and menor % divisor != 0:
           hay_mcd = True
           print "MCD =", divisor
     else:
          print "No hay MCD distinto a 1"
          break


No entendi muy bien eso del limite, primero pones que el divisor sea la mitad del menor y despues lo vas subiendo, creo que seria al reves.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uso de

Publicado por Martín (3 intervenciones) el 03/02/2012 03:11:34
Muchas gracias, Lucas! Sí, el programa está mal, tendría que bajar en vez de subir, pero además, eso de "la mitad..." es un disparate (12, 24 y 36, por ejemplo, tienen a 12 como el MCD, nada que ver con la mitad).
Gracias por tu ayuda!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar