Está en la página 1de 31

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN

FACULTAD DE INGENIERÍA

ESCUELA PROFESIONAL DE MINAS

TRABAJO DE PYTHON

INTEGRANTES: Ander Alex Quenta Feliciano 2017-101016

Gustavo Juan Alay Quenta 2022-101001

SEMESTRE: TERCER SEMESTRE

TACNA – PERÚ

2022
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

Punto A: siempre es 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?


Si la conjetura se inicializa en cero, es posible que el número de la variable
tenga un valor de 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
----------------------------------------------------------------------------------------------------------------------

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) incluye los números pares 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
------------------------------------------------------------------------------------------------------

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

number = eval(input("Ingrese un entero: "))


Ingrese un entero: 2
max = number

while number != 0:
number = eval(input("Ingrese un entero: "))
if number > max:
max = number
Ingrese un entero: 3
Ingrese un entero: 4
Ingrese un entero: 5
Ingrese un entero: 0

print(“máximo es”,max)

máximo es 5

print(“número”,number)

número 0

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)

number = 0
sum = 0

for count in range(5):


number = eval(input("Ingrese un entero: "))
sum += number

Ingrese un entero:2
Ingrese un entero:3
Ingrese un entero:4
Ingrese un entero:5
Ingrese un entero:0

print("La suma es", sum)


La suma es 14

print("La cuenta es", count)


La cuenta es 4

5.7 ¿Se puede convertir cualquier bucle for a un bucle while? Listar las
ventajas de usar bucles for.
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
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

No, un bucle while 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

(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 vari
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
-------------------------------------------------------------------------------
print( j, end= “ “)
print(“***”)
i+=1
****
****

2 ****

3 2 ****

4 3 2 ****

i= 5

while i>=1:

num=1

for j in range(1, i+1):

print(num, end=”xxx”)
num *=2

print()

i-=1

1xxx2xxx4xxx8xxx16xxx

1xxx2xxx4xxx8xxx

1xxx2xxx

1xxx

5.12 Si piensa que un divisor para un número n1 no puede ser mayor que n1 / 2, puede intentar
mejorar
el programa utilizando 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?

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)
-------------------------------------------------------------------------------

Puede utilizar la palabra clave break en un bucle para terminar inmediatamente un bucle.
También puede utilizar la palabra clave continue en un bucle. Cuando se encuentra,
finaliza la iteración actual y el control del programa va al 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
-------------------------------------------------------------------------------

i=0
while i<4:
if i%3==0:
i+=1
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.

sum=0
number=0
while number<20 and sum<100:
number+=1
sum +=number
print(“El número es”, number)
print(“La suma es”, sum)

sum=0
number 0
while number<20:
number+=1
if not(number==10 or number==11):
sum +=number
print(“La suma es”, sum)

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)
-------------------------------------------------------------------------------

for i in range(1,4):

for j in range(1,4):

if i*j>2:

break

print(i*j)

print(i)

2
1

for i in range(1,4):

for j in range(1,4):

if i*j>2:

continue

print(i*j)

print(i)

3
PROBLEMAS
5.1 (Contar números positivos y negativos y calcular el promedio de los
números) Escribir un programa que lea un número no especificado de
números enteros, determine cuántos valores positivos y negativos se han leído
y calcula el total y el promedio de los valores de entrada (sin contar los ceros).
Su programa termina con la entrada 0. Muestre el promedio como un número
de punto flotante. Aquí hay una ejecución de muestra:

5.2 (Repita las sumas) El Listado 5.4, SubtractionQuizLoop.py, genera cinco


preguntas de resta aleatorias. Revise el programa para generar diez preguntas
de suma al azar para dos números enteros entre 1 y 15. Muestre la cuenta
correcta y el tiempo de prueba.
5.3 (Conversión de kilogramos a libras) Escriba un programa que muestre la
siguiente tabla (tenga en cuenta que 1 kilogramo son 2,2 libras):
Kilograms Pounds

3 6.6
1
... 2.2
197 433.4
199 437.8
5.4 (Conversión de millas a kilómetros) Escriba un programa que muestre la
siguiente tabla (tenga en cuenta que 1 milla son 1,609 kilómetros):
Miles Kilometers

2 3.218
1
... 1.609
9 15.481
10 16.090
5.5 (Conversión de kilogramos a libras y de libras a kilogramos) Escriba un
programa que muestre las siguientes dos tablas una al lado de la otra (tenga en
cuenta que 1 kilogramo son 2,2 libras y que 1 libra son 0,45 kilogramos):
Kilograms Pounds | Pounds Kilograms

3 6.6 | 25 11.36
1
... 2.2 | 20 9.09
197 433.4 | 510 231.82
199 437.8 | 515 235.09
5.6 (Conversión de millas a kilómetros y de kilómetros a millas) Escriba un
programa que muestre las siguientes dos tablas una al lado de la otra (tenga en
cuenta que 1 milla es 1,609 kilómetros y que 1 kilómetro es 0,621 millas):
Miles Kilometers | Kilometers Miles

2 3.218 | 25 15.538
1
... 1.609 | 20 12.430
9 15.481 | 60 37.290
10 16.090 | 65 40.398
5.7 (Utilice funciones trigonométricas) Imprima la siguiente tabla para mostrar
el valor del seno y el coseno de los grados de 0 a 360 con incrementos de 10
grados. Redondee el valor para mantener cuatro dígitos después del punto
decimal.
Degree Sin Cos

10 0.1736 0.9848
0
... 0.0000 1.0000
350 -0.1736 0.9848
360 0.0000 1.0000
5.8 (Use la función math.sqrt) Escriba un programa que imprima la siguiente
tabla usando la función sqrt en el módulo de matemáticas.
Number Square Root

0 0.0000
2 1.4142
...
18 5.2426
20 5.4721

5.9 (Aplicación financiera: calcular la matrícula futura) Suponga que la


matrícula de una universidad es de $10 000 este año y aumenta un 5% cada
año. Escriba un programa que calcule la matrícula en diez años y el costo total
de la matrícula de cuatro años a partir de diez años a partir de ahora.
5.10 (Encuentre el puntaje más alto) Escriba un programa que solicite al
usuario que ingrese el número de estudiantes y el puntaje de cada estudiante, y
muestre el puntaje más alto. Suponga que la entrada se almacena en un
archivo llamado score.txt y el programa obtiene la entrada del archivo.
5.11 (Encuentre los dos puntajes más altos) Escriba un programa que solicite
al usuario que ingrese el número de estudiantes y el puntaje de cada
estudiante, y muestre el puntaje más alto y el segundo más alto.

5.12 (Encuentre números divisibles por 5 y 6) Escriba un programa que


muestre, diez números por línea, todos los números del 100 al 1000 que son
divisibles por 5 y 6. Los números están separados por exactamente un espacio.
5.13 (Encuentre números divisibles por 5 o 6, pero no ambos) Escriba un
programa que muestre, diez números por línea, todos los números del 100 al
200 que son divisibles por 5 o 6, pero no ambos. Los números están separados
por exactamente un espacio.
5.14 (Encuentre el n más pequeño tal que n2 7 12,000) Use un ciclo while
para encontrar el entero más pequeño n tal que n2 sea mayor que 12,000.
5.15 (Encuentre el mayor n tal que n3 6 12,000) Use un bucle while para
encontrar el mayor entero n tal que n3 sea menor que 12,000.

5.16 (Calcule el máximo común divisor) Para el Listado 5.8, otra solución
para encontrar el máximo común divisor de dos enteros n1 y n2 es la
siguiente: Primero encuentre que d sea el mínimo de n1 y n2, y luego
verifique si d, d - 1 , d - 2, ..., 2, o 1 es un divisor tanto para n1 como para n2
en este orden. El primer divisor común de este tipo es el máximo común
divisor de n1 y n2.
5.17 (Mostrar la tabla de caracteres ASCII) Escriba un programa que muestre
los caracteres en la tabla de caracteres ASCII de ! a ~. Muestra diez caracteres
por línea. Los caracteres están separados por exactamente un espacio.
5.18 (Encuentre los factores de un número entero) Escriba un programa que
lea un número entero y muestre todos sus factores más pequeños, también
conocidos como factores primos. Por ejemplo, si el entero de entrada es 120,
la salida debería ser la siguiente:

2, 2, 2, 3, 5
5.19 (Mostrar una pirámide) Escriba un programa que solicite al usuario que
ingrese un número entero del 1 al 15 y muestre una pirámide, como se muestra
en la siguiente ejecución de muestra:

5.20 (Muestre cuatro patrones usando bucles) Use bucles anidados que
muestren los siguientes patrones en cuatro programas separados:
A

B
C

5.21 (Mostrar números en un patrón piramidal) Escriba un bucle for anidado


que muestre el siguiente resultado:
5.22 (Muestre los números primos entre 2 y 1000) Modifique el Listado 5.13
para mostrar todos los números primos entre 2 y 1000, inclusive. Muestra
ocho números primos por línea.

También podría gustarte