Beruflich Dokumente
Kultur Dokumente
5.1 Analice el siguiente código. ¿El recuento <100 siempre es verdadero, siempre es falso, o
algunas veces es verdadero o a veces falso en el punto A, el punto B y el punto C?
count = 0
# Punto A
count += 1
# Punto B
# Punto C
Rpta:
Punto A: siempre menor que 100 porque el punto a solo ocurrirá si se cumple la condición del
bucle.
Punto B: puede ser 100, es decir, no menos de 100 para el caso cuando el bucle se está
ejecutando por última vez y terminará a medida que el conteo se convierta en 100 en el punto b,
por lo que a veces es verdadero o falso.
Punto C: el conteo tendrá un valor de conteo después de que el bucle se termine, es decir, por lo
tanto, siempre es falso.
5.2 ¿Qué está mal si se inicializa a 0 en la línea 8 del Listado 5.3?
Rpta:
Si la conjetura se inicializa a cero, es posible que el número de la variable tenga un valor cero y, en
ese caso, la condición del bucle while se evaluará como falsa, en el caso de que el código no le pida
al usuario que adivine el número.
5.3 ¿Cuántas veces se repiten los siguientes cuerpos de bucle? ¿Cuál es la visualización de cada
bucle?
i = 1
while i < 10:
if i % 2 == 0:
print(i)
i = 1
while i < 10:
if i % 2 == 0:
print(i)
i += 1
----------------------------------------------------------------------------------------------------------------------
i = 1
while i < 10:
if i % 2 == 0:
print(i)
i += 1
Rpta:
En los casos (a) y (b), el bucle while se repite infinitas veces ya que el valor de la variable i nunca se
incrementa. En el caso (c), se repite 9 veces (para el valor de i = 1 a 9). La salida en el caso (c) id
número par 2,4,6 y 8
count = 0
while count < 100:
print(count)
count = 0
while count < 100:
print(count)
count -= 1
count = 0
while count < 100:
count += 1
Rpta:
while number != 0:
number = eval(input("Ingrese un entero: "))
if number > max:
max = number
print("máximo es", max)
print("número", number)
rpta:
5.6 Suponga que la entrada es 2 3 4 5 0 (un número por línea). ¿Cuál es la salida del siguiente
código?
number = 0
sum = 0
for count in range(5):
number = eval(input("Ingrese un entero: "))
sum += number
rpta:
5.7 ¿Se puede convertir cualquier bucle for a un bucle while? Listar las ventajas de usar
bucles for.
Rpta:
Sí, cualquier bucle for se puede convertir en un bucle while.
5.8 Convertir la siguiente instrucción de bucle for a un bucle while:
sum = 0
for i in range(1001):
sum = sum + i
rpta:
sum, i = 0,0
sum = sum + 1
i=i+1
5.9 ¿Puedes convertir siempre cualquier bucle while en un bucle for? Convertir el siguiente bucle
while en un bucle for.
i = 1
sum = 0
rpta:
No, un tiempo no siempre se puede convertir en un bucle for. En el ejemplo dado, el valor de
incremento sigue cambiando dentro del bucle. Mientras que el rango de funciones () toma la
entrada como constante.
count = 0
while count < n:
count += 1
----------------------------------------------------------------------------
for count in range(n):
print(count)
----------------------------------------------------------------------------
count = 5
while count < n:
count += 1
----------------------------------------------------------------------------
count = 5
while count < n:
count = count +3
rpta:
(a) n iteraciones
(b) n iteraciones
(c) n-5 iteraciones
(d) (n-5) / 3 iteraciones
5.11 Muestre la salida de los siguientes programas. (Sugerencia: Dibuje una tabla y liste las variables
en columnas para el seguimiento de estos programas)
5.12 Si piensa que un divisor para un número n1 no puede ser mayor que n1 / 2, puede intentar mejorar el programa util
el siguiente bucle:
k = 2
while k <= n1 / 2 and k <= n2 / 2:
if n1 % k == 0 and n2 % k == 0:
gcd = k
k += 1
La condición correcta no debe ser (k> n1 / 2 y k> n2 / 2). Necesitamos finalizar el bucle cuando k es mayor que la mitad de
ambos números. En el código dado, si n1 = 5 y n2 = 10, entonces el código dirá que gcd es 1, lo cual es incorrecto.
5.13 ¿Para qué es la palabra clave break? ¿Para qué es la palabra clave continue?
¿Será para en seguida terminar el programa? Si es así, da la salida.
balance = 1000
while True:
if balance < 9:
break
balance = balance - 9
print("Balance es", balance)
-------------------------------------------------------------------------------
balance = 1000
while True:
if balance < 9:
continue
balance = balance - 9
print("Balance es", balance)
rpta:
Puede utilizar la palabra clave break en un bucle para terminar inmediatamente un bucle. También puede uti
palabra clave continue en un bucle. Cuando se encuentra, finaliza la iteración actual y el control del program
final del cuerpo del bucle.
En el caso (a) la salida es "El saldo es 1". En el caso (b), el programa nunca terminará.
5.14 El bucle for que sigue se convierte en el bucle while más abajo.
¿Que es lo incorrecto? Corrígelo.
for i in range(4):
if i % 3 == 0:
continue
sum += i
Rpta:
(a)
for i in range(1, 4):
for j in range(1, 4):
if i * j > 2:
break
print(i * j)
print(i)
-------------------------------------------------------------------------------
(b)
for i in range(1, 4):
for j in range(1, 4):
if i * j > 2:
continue
print(i * j)
print(i)
rpta: