Vous êtes sur la page 1sur 8

CUESTIONARIO CAPITULO 5

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

while count < 100:

# Punto A

print("La Programación es divertida!")

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

5.4 Mostrar el error en los siguientes códigos:

count = 0
while count < 100:
print(count)
count = 0
while count < 100:
print(count)
count -= 1
count = 0
while count < 100:
count += 1

Rpta:

(a) Se ejecuta en un bucle infinito ya que el valor de conteo no se incrementa.


(b) Nuevamente, se ejecuta en un bucle infinito ya que estamos disminuyendo el conteo y no
incrementándolo.
(c) Dará error de sintaxis debido a una sangría incorrecta
5.5 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 = eval(input("Ingrese un entero: "))


max = number

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

print("La suma es", sum)


print("La cuenta es", count)

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

while i < 1001:

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

while sum < 10000:


sum = sum + i
i += 1

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.

5.10 Cuente el número de iteraciones en los siguientes bucles:

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)

for i in range(1, 5):


j= 0
while j < i:
print(j, end = “ “)
j += 1
----------------------------------------------------------------------------
I = 0
while i < 5:
for j in range(I, 1, -1):
print(j, end = “ “)
print (“****”)
i += 1
-------------------------------------------------------------------------------
i = 5
while i >= 1:
num = 1
for j in range(1, i + 1):
print(num, end = "xxx")
num *= 2
print()
i -= 1
-------------------------------------------------------------------------------
i = 1
while i <= 5:
num = 1
for j in range(1, i + 1):
print(num, end = "G")
num += 2
print()
i += 1
-------------------------------------------------------------------------------
Rpta:

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

Esta revisión es incorrecta. ¿Puedes encontrar la razón?


Rspta.

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

Convertida Incorrecta Conversión


i = 0
while i < 4:
if i % 3 == 0:
continue
sum += i
i += 1
-------------------------------------------------------------------------------
5.15 Reescriba los programas TestBreak y TestContinue en los listados 5.11 y 5.12
sin usar las palabras break y continue.

Rpta:

5.16 Después de que la instrucción break en


(a) se ejecute en el siguiente bucle, ¿que sentencias son ejecutadas? Mostrar la salida.
Después de que la instrucción continue en
(b) se ejecute en el siguiente bucle, ¿que sentencia se ejecuta? Mostrar la salida.

(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:

(a) La siguiente sentencia ejecutada es print i


(b) La siguiente sentencia ejecutada es la sentencia if

Vous aimerez peut-être aussi