Blog

WSQ 13

Desarrollar un programa que obtenga los promedios especificados de un texto dado:


print("WSQ-13")
na = 'C:/Users/Hector Santillan/Desktop/python/93cars.txt'
a = open(na,'r')
l = a.readlines()
l = l[0::2]
ac = 0
ah = 0
ap = 0
s = ""
for element in lines:
s = element[52] + element[53]
ac = ac + int(s)
s = element[55] + element[56]
ah = ah + int(s)
s = element[42] + element[43] + element[44] + element[45]
ap = ap + float(s)
pc = ac / len(lines)
ph = ah / len(lines)
pp = ap / len(lines)
a.close()
print("El promedio de consumo de combustible en la ciudad es de ",pc)
print("El promedio de kilometraje de gas en la carretera es de ",ph)
print("El promedio de precio de los vehículos es de ",pp)

view raw

wsq13.py

hosted with ❤ by GitHub

En este caso al estar todas las cantidades especificadas en las mismas columnas del texto sólo repetimos el contador especificando que sea en estas. Para ahorrar tiempo ponemos el nombre del archivo ya incluido en el programa en vez de preguntar por el.

WSQ-11

Desarrollar una función que reciba el nombre de un archivo e indique el número de veces que aparece «banana» en el texto, sin importar mayúsculas o minúsculas, o si está pegado a otra palabra o no.


def find_bananas(nombre):
abierto = open(nombre,'r')
t = 0
for line in abierto:
print("looking at: ",line)
line = line.lower()
index = line.find('banana')
while index > -1:
t = t + 1
index = line.find("banana",index+1)
return t
#main program below
print("Problema 9 (Examen)")
nombre = input("Ingresa el nombre del archivo ")
print("Banana está escrita ",find_bananas(nombre)," veces en el archivo")

view raw

wsq11.py

hosted with ❤ by GitHub

Para desarrollar este programa me basé en mis conocimientos previos.

Clases en Python 2


class Humano:
def __init__(self,edad):
self.edad = edad
def conversar(self,mensaje):
print (mensaje)
class ISC(Humano):
def __init__(self):
print("Hola")
def programar(self,lenguaje):
print("Voy a programar en ",lenguaje)
class LED(Humano):
def resolvercaso(self,ley):
print("Debo resolver el caso de",ley)
Héctor = ISC()
Juan = LED(91)
Héctor.programar("Python")
Juan.resolvercaso("Alphabet")
Héctor.conversar("Hola")
Juan.conversar("Hola")

view raw

class2.py

hosted with ❤ by GitHub

Continuaré de acorde al tutorial que estoy viendo mi clase en Python. En esta ocasión corregimos el anterior error que imprimia la edad en la conversación y metemos dos subclases que son la ISC y LED (estudiante de Sistemas Computacionales y de Derecho) además de añadir unas conversaciones referente a su profesión cómo «debo programar en Python» o «Debo resolver el caso de Alphabet». Debido a las sublistas sólo si el objeto es ISC dirá algo referido a programación y sólo si es LED dirá algo referido a derecho.

Para realizar este programa me basé en el siguiente tutorial:

Quiz 11

1: Desarrollar una función que obtenga la distancia entre dos puntos en un plano cartesiano.


from math import sqrt
def distance (x1,x2,y1,y2):
distancia1 = sqrt(x1*x1 + y1*y1)
distancia2 = sqrt(x2*x2 + y2*y2)
tupla = (distancia1, distancia2)
return tupla
#main program below
print("Problema 1")
print("Ingresa x1")
x1 = float(input())
print("Ingresa x2")
x2 = float(input())
print("Ingresa y1")
y1 = float(input())
print("Ingresa y2")
y2 = float(input())
a = distance (x1,x2,y1,y2)[0]
b = distance (x1,x2,y1,y2)[1]
print("La distancia entre X1 y Y1 es de %1f y entre X2 y Y2 es de %1f " %(a,b))

view raw

pe1.py

hosted with ❤ by GitHub

Muy simple, sólo debemos de pedir los cuatro números y calcular su distancia con un teorema de pitágoras. Luego imprimimos su resultado.

2: Desarrollar una función que imprima un triángulo acorde al número ingresado:


def triangulo(t):
z = ""
a = 0
n = t
while t>0:
l.append(t)
t = t – 1
pass
for element in l:
a = a + 1
z = a * "T"
print (z)
a = n
for element in l:
a = a – 1
z = a * "T"
print(z)
#main program below
print("Problema 2 (Examen)")
l = []
t = int(input("Ingresa un número"))
triangulo(t)

view raw

pe2.py

hosted with ❤ by GitHub

Se desarrolla la función y se crean los contadores, el primero para que vaya incrementando la impresión de ‘T’ y cuando alcance el número ingresado, creamos un segundo contador que lo decrezca hasta que alcance 0.

3: Se desarrolla una función que retorne el factorial de un objeto.


def factorial(x):
a = x
while a > 1:
a = a – 1
x = x * a
return x
#main program below
print("Problema 3 (Examen)")
x = int(input("Ingresa un número"))
b = factorial(x)
print(b)

view raw

pe3.py

hosted with ❤ by GitHub

También muy sencillo. Sólo pedimos el número y la función desarrolla un contador que va decreciendo el número para que este se multiplique por si mismo menos uno y al final retorne el factorial.

4: Desarrollar una función que devuelva el promedio de una lista.


def promedio_lista(l):
p = 0
for i in l:
p = p + i
t = p/x
return t
#main program below
l = []
print("Problema 4 (Examen)")
x = int(input("Ingresa el número de valores que quieres que existan en tu lista "))
for i in range(x):
n = float(input("Ingresa un número "))
l.append(n)
a = promedio_lista(l)
print("El promedio de tu lista es de ",a)

view raw

pe4.py

hosted with ❤ by GitHub

De nueva cuenta es un programa sencillo. Primero ingresamos el tamaño de la lista y le creamos un contador para que se ingresen todos los números que el usuario quiere ingresar. Luego la función tiene otro contador que sumará todos los números de la lista y los dividirá entre la cantidad de ellos para obtener su promedio.

5: Desarrollar una función que devuelva el número menor de una lista:


def smallest_of_four(l):
m = min(l)
return m
#main program below
print("Problema 5(Examen)")
ñ = 4
l = []
for i in range(ñ):
v = float(input("Ingresa un número"))
l.append(v)
a = smallest_of_four(l)
print("El número menor de tu lista es ",a)

view raw

pe5.py

hosted with ❤ by GitHub

Creamos el contador para la lista y luego la función simplemente contendrá un ‘min’ que nos devolverá el número menor de la lista considerando números positivos y negativos.

6: Desarrollar una función que devuelva el número pedido de la lista de Fibonacci:


def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
f = (fibonacci(n-1))+(fibonacci(n-2))
return f
#main program below
print("Problema 6 (Examen)")
n = int(input("Ingresa el número de Fibonacci que quieres encontrar"))
print("El número ",n, " de la serie de Fibonacci es ", fibonacci (n))

view raw

pe6.py

hosted with ❤ by GitHub

Utilizamos el método de recursión para simplificar la función. Especificamos que si es 0 nos retorne 0 y que si es 1 devuelva 1 y la recursión finalmente desarrollara el procedimiento (n-1)+(n-2) a cada número que se vaya obteniendo para así sumar todos los 1 y 0 que queden al final y obtener el número buscado.

7: Desarrollar una función que sume los cuadrados de una lista:


def sumsquares_list(l):
t = 0
for i in l:
i = i * i
t = t + i
return t
#main program below
print("Problema 7 (Examen)")
l = []
x = int(input("Ingresa el número de valores que tendrá tu lista "))
for i in range(x):
y = int(input("Ingresa un número "))
l.append(y)
print("La suma de los cuadrados de los números de tu lista es de ",sumsquares_list(l))

view raw

pe7.py

hosted with ❤ by GitHub

Muy sencillo. Hacemos el contador para la lista y la lista va multiplicando todos sus números al cuadrado y añade los resultados a un contador que se mostrará al final.

8: Desarrollar una función que calcule la raíz cuadrada de un número por el método babilónico:


def Babilonia(n):
a = n
b = 0
while b > (n-.00001) or b < (n+.00001):
a = n/a
b = a*a
if b > (n-.00001) and b < (n+.00001):
return a
else:
a = (n/a+a)/2
b = a*a
return a
#main program below
print("WSQ-10")
n = float(input("Ingresa un número "))
f = Babilonia(n)
print("La raíz cuadrada de ",n, "es aproximadamente de ",f)

view raw

pe8.py

hosted with ❤ by GitHub

Lo único complicado de esto es pasar el método a la función. Nuestro margen de error será de .00001 para ser lo más exactos posibles y ponemos el conjunto de operaciones; a = n/a, su resultado al cuadrado, sino es la raíz ahora a = (n/a+a)/2 y si no es raiz cuadrada todavía se multiplica y así sucesivamente. Tendrá un pequeño rango de fallas para los números enteros, pues no nos dará la raíz cerrada.

9: Desarrollar una función que identifique las veces que aparece ‘banana’ en un texto:


def find_bananas(nombre):
abierto = open(nombre,'r')
t = 0
for line in abierto:
print("looking at: ",line)
line = line.lower()
index = line.find('banana')
while index > -1:
t = t + 1
index = line.find("banana",index+1)
return t
#main program below
print("Problema 9 (Examen)")
nombre = input("Ingresa el nombre del archivo ")
print("Banana está escrita ",find_bananas(nombre)," veces en el archivo")

view raw

pe9.py

hosted with ❤ by GitHub

Pedimos el nombre del archivo, lo ejecutamos y convertimos cada linea en minusculas para que se acomode a la palabra que buscamos. Luego iniciamos un index que se reiniciara cada vez que encuentre banana y nos proporcionará ver cuantas veces aparece en el texto incluso si la palabra buscada esta repetida varias veces sin un espacio de por medio.

10: Desarrollar una función que encuentre al máximo común divisor entre dos números:


def gcd (x,y):
r = 0
while y > 0:
r = y
y = x%y
x = r
return x
#main program below
print("Problema 10 (Examen)")
x = int(input("Ingresa un número entero positivo "))
while x < 0:
x = int(input("Ingresaste un número negativo. Ingresa uno positivo "))
y = int(input("Ingresa un número entero positivo "))
while y < 0:
y = int(input("Ingresaste un número negativo. Ingresa uno positivo "))
print("El mayor común divisor de ambos números es ",gcd (x,y))

view raw

pe10.py

hosted with ❤ by GitHub

Pedimos los números (y ejecutamos un while para asegurarnos de que ambos son positivos) y creamos la función. Mientras y sea mayor a 0, r = y, luego y = x%y al final x = r. retornará x pero es necesario que y sea mayor que 0 para que esto suceda.

Para desarrollar este programa me apoye en compañeros de clase, el profesor y en las siguientes paginas:

http://www.lawebdelprogramador.com/codigo/Python/3152-Calcular-el-maximo-comun-divisor-de-dos-numeros.html

http://pensamiento-matematico.blogspot.mx/2013/05/metodo-babilonico-de-resolucion-de.html

http://elclubdelautodidacta.es/wp/2012/11/python-mayusculas-minusculas-y-viceversa/

Clases en Python 1

En esta ocasión desarrollé con apoyo de un tutorial mi primera clase, y por ende, mis primeros objetos en Python.


class Humano:
def __init__(self,edad):
self.edad = edad
def conversar(self,mensaje):
print (self.edad)
print (mensaje)
Héctor = Humano(19)
Juan = Humano(91)
print("Hola, soy Héctor y tengo",Héctor.edad, "años de edad")
print("Yo soy Juan y tengo",Juan.edad,"años de edad, ¡nuestras edades son inversas!")
Héctor.conversar("Que raro")
Juan.conversar("Sí, muy raro")

view raw

class1.py

hosted with ❤ by GitHub

Empezamos por crear la clase, la cual en este caso será de humano.Ponemos su función inicial, y marcamos que la edad sea variable acorde al objeto. Luego creamos la función conversación en la cual marcaremos que vuelva a imprimir la edad a pesar de que no es necesario, pero en este caso lo hacemos para asegurarnos de que si tome la edad cómo una variable que siempre deberá de repetir.

Al final ingresamos la conversación y ejecutamos el programa. Cuando este se ejecute repetirá las edades antes de las conversaciones de los renglones 15 y 17. si bien en la vida real esto sería ilógico, se debe a que esta es mencionada como principal en las funciones. El programa sólo imprime las líneas 12, 13,15 y 17 y tiene dos objetos, que son Héctor y Juan

Para realizar este programa me basé en el siguiente tutorial: https://www.youtube.com/watch?v=VYXdpjCZojA