for i in range(3):
print(i)
0
1
2
for()
, Ejercicios, TareaClase 12
for()
En python, la instrucción for()
permite recorrer estructuras, elemento por elemento.
Ejemplo 1
En el ejemplo 1, la instrucción for()
recorre la estructura range(3)
, que generará números comanzando desde 0 hasta 2, pero no incluirá el número 3. En otras palabras, range(3)
es [0,1,2]
. Luego la instrucción for()
recorre cada elemento y los imprime en líneas separadas.
Ejemplo 2
En el ejemplo 2, la instrucción for()
recorre la estructura acotada range(1,3)
. Esta estructura acotada sigue el principio “inicio incluyente, final excluyente”. Esto es, generará números comenzando desde 1 hasta 2, pero no incluirá el número 3. Entonces el rango generado será [1,2]
Ejemplo 3
largo string: 9
L
u
i
s
Y
a
n
e
z
En el ejemplo 3, la instrucción for()
recorre la cadena de caracteres cadena
, imprimiendo cada letra en el recorrido. También se utiliza la función len()
, que permite contar la candidad de elementos (letras) dentro de la cadena de caracteres
Generar un código que muestre en pantalla la siguiente imagen:
ej01.py
print("PROMEDIO DE NOTAS")
numNotas = int(input("ingrese el numero de notas: "))
sumNotas = 0
for i in range(numNotas):
nota = float(input(f"ingrese la nota {i+1}: "))
sumNotas = sumNotas + nota
promedio = sumNotas / numNotas
print("Promedio 1: ", promedio)
print("Promedio 2: ", round(promedio))
print("Promedio 3: ", round(promedio,1))
print(f"Promedio 4: {promedio:.2f}")
Generar un código que muestre en pantalla la siguiente imagen:
Generar un código que valide el dígito RUT. Debe seguir las instrucciones de la imagen.
rut.py
print()
print('------------------------------')
print('Operación de validación de rut')
print('------------------------------')
print()
rut = input('Ingrese rut: ')
print()
print('Rut:', end=' ')
# eliminar '.'
aux = ''
for i in rut:
if (i != '.'):
aux += i
print(i,end=' ')
# eliminar '-'
digito = ''
for i in aux:
digito = digito + i if (i != '-') else digito
# eliminar num verificador y conv. a entero
digito = int(digito[:-1])
# multiplicar 'digito invertida' por factor 2,...,7,2,...,7 y sumarlas
suma = 0
factor = 2
print() #restaurar a modo salto linea
print() #salto linea
while (digito > 0):
print(f'{digito%10} * {factor} = {digito%10 * factor}')
suma += (digito % 10) * factor
digito = int(digito / 10)
factor = 2 if (factor == 7) else factor + 1
print()
print('SUMA:',suma)
# división por 11
print()
print(f'DIVISION: {suma} / 11 = {suma/11}')
# tomar solo decimales
digito = (suma/11) - int(suma/11)
# despejar 'digito'
print()
print(f'Dígito: ( 11 - ( 11 * ({digito}) ) )')
print(f'Dígito: ( 11 - ({11 * digito}) )')
print(f'Dígito: ({11-(11 * digito)})')
print(f'Dígito: {round(11-(11 * digito))}')
digito = round(11-(11 * digito))
# caso especial: 'digito = 10 o 11'
digito = 'K' if (digito == 10) else 0 if (digito == 11) else digito
print(f'Dígito: {digito}') if digito in ['K',0] else None
print()
print('------------------------------')
print('Operación de validación de rut')
print('------------------------------')
print()
#rut = input('Ingrese rut: ')
#print()
print('Rut:', end=' ')
# eliminar '.'
aux = ''
for i in rut:
if (i != '.'):
aux += i
print(i,end=' ')
# eliminar '-'
digito = ''
for i in aux:
digito = digito + i if (i != '-') else digito
# eliminar num verificador y conv. a entero
digito = int(digito[:-1])
# multiplicar 'digito invertida' por factor 2,...,7,2,...,7 y sumarlas
suma = 0
factor = 2
print() #restaurar a modo salto linea
print() #salto linea
while (digito > 0):
print(f'{digito%10} * {factor} = {digito%10 * factor}')
suma += (digito % 10) * factor
digito = int(digito / 10)
factor = 2 if (factor == 7) else factor + 1
print()
print('SUMA:',suma)
# división por 11
print()
print(f'DIVISION: {suma} / 11 = {suma/11}')
# tomar solo decimales
digito = (suma/11) - int(suma/11)
# despejar 'digito'
print()
print(f'Dígito: ( 11 - ( 11 * ({digito}) ) )')
print(f'Dígito: ( 11 - ({11 * digito}) )')
print(f'Dígito: ({11-(11 * digito)})')
print(f'Dígito: {round(11-(11 * digito))}')
digito = round(11-(11 * digito))
# caso especial: 'digito = 10 o 11'
digito = 'K' if (digito == 10) else 0 if (digito == 11) else digito
print(f'Dígito: {digito}') if digito in ['K',0] else None
------------------------------
Operación de validación de rut
------------------------------
Rut: 3 4 3 3 4 4 4 - 7
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
3 * 5 = 15
3 * 6 = 18
4 * 7 = 28
3 * 2 = 6
SUMA: 103
DIVISION: 103 / 11 = 9.363636363636363
Dígito: ( 11 - ( 11 * (0.3636363636363633) ) )
Dígito: ( 11 - (3.9999999999999964) )
Dígito: (7.0000000000000036)
Dígito: 7
print()
print('------------------------------')
print('Operación de validación de rut')
print('------------------------------')
print()
#rut = input('Ingrese rut: ')
#print()
print('Rut:', end=' ')
# eliminar '.'
aux = ''
for i in rut:
if (i != '.'):
aux += i
print(i,end=' ')
# eliminar '-'
digito = ''
for i in aux:
digito = digito + i if (i != '-') else digito
# eliminar num verificador y conv. a entero
digito = int(digito[:-1])
# multiplicar 'digito invertida' por factor 2,...,7,2,...,7 y sumarlas
suma = 0
factor = 2
print() #restaurar a modo salto linea
print() #salto linea
while (digito > 0):
print(f'{digito%10} * {factor} = {digito%10 * factor}')
suma += (digito % 10) * factor
digito = int(digito / 10)
factor = 2 if (factor == 7) else factor + 1
print()
print('SUMA:',suma)
# división por 11
print()
print(f'DIVISION: {suma} / 11 = {suma/11}')
# tomar solo decimales
digito = (suma/11) - int(suma/11)
# despejar 'digito'
print()
print(f'Dígito: ( 11 - ( 11 * ({digito}) ) )')
print(f'Dígito: ( 11 - ({11 * digito}) )')
print(f'Dígito: ({11-(11 * digito)})')
print(f'Dígito: {round(11-(11 * digito))}')
digito = round(11-(11 * digito))
# caso especial: 'digito = 10 o 11'
digito = 'K' if (digito == 10) else 0 if (digito == 11) else digito
print(f'Dígito: {digito}') if digito in ['K',0] else None
------------------------------
Operación de validación de rut
------------------------------
Rut: 1 3 7 7 0 5 0 6 - 0
6 * 2 = 12
0 * 3 = 0
5 * 4 = 20
0 * 5 = 0
7 * 6 = 42
7 * 7 = 49
3 * 2 = 6
1 * 3 = 3
SUMA: 132
DIVISION: 132 / 11 = 12.0
Dígito: ( 11 - ( 11 * (0.0) ) )
Dígito: ( 11 - (0.0) )
Dígito: (11.0)
Dígito: 11
Dígito: 0
print()
print('------------------------------')
print('Operación de validación de rut')
print('------------------------------')
print()
#rut = input('Ingrese rut: ')
#print()
print('Rut:', end=' ')
# eliminar '.'
aux = ''
for i in rut:
if (i != '.'):
aux += i
print(i,end=' ')
# eliminar '-'
digito = ''
for i in aux:
digito = digito + i if (i != '-') else digito
# eliminar num verificador y conv. a entero
digito = int(digito[:-1])
# multiplicar 'digito invertida' por factor 2,...,7,2,...,7 y sumarlas
suma = 0
factor = 2
print() #restaurar a modo salto linea
print() #salto linea
while (digito > 0):
print(f'{digito%10} * {factor} = {digito%10 * factor}')
suma += (digito % 10) * factor
digito = int(digito / 10)
factor = 2 if (factor == 7) else factor + 1
print()
print('SUMA:',suma)
# división por 11
print()
print(f'DIVISION: {suma} / 11 = {suma/11}')
# tomar solo decimales
digito = (suma/11) - int(suma/11)
# despejar 'digito'
print()
print(f'Dígito: ( 11 - ( 11 * ({digito}) ) )')
print(f'Dígito: ( 11 - ({11 * digito}) )')
print(f'Dígito: ({11-(11 * digito)})')
print(f'Dígito: {round(11-(11 * digito))}')
digito = round(11-(11 * digito))
# caso especial: 'digito = 10 o 11'
digito = 'K' if (digito == 10) else 0 if (digito == 11) else digito
print(f'Dígito: {digito}') if digito in ['K',0] else None
------------------------------
Operación de validación de rut
------------------------------
Rut: 1 0 0 6 6 6 1 2 - K
2 * 2 = 4
1 * 3 = 3
6 * 4 = 24
6 * 5 = 30
6 * 6 = 36
0 * 7 = 0
0 * 2 = 0
1 * 3 = 3
SUMA: 100
DIVISION: 100 / 11 = 9.090909090909092
Dígito: ( 11 - ( 11 * (0.09090909090909172) ) )
Dígito: ( 11 - (1.0000000000000089) )
Dígito: (9.999999999999991)
Dígito: 10
Dígito: K