martes, 13 de marzo de 2018

¿CÓMO CALCULAR VOLÚMENES DE FIGURAS GEOMÉTRICAS EN PYTHON?

Hola a todos, en esta nueva entrada dejaré un ejercicio para el cálculo del volúmen de figuras geométricas utilizando el lenguaje de programación Python. En una entrada anterior se hizo un ejercicio para calcular áreas que puedes consultar en el siguiente link.

Si consideras que este blog y la información contenida en el es de gran interés, ayudame a seguir creciendo. si tienes aportes que puedas compartir serán bienvenidos. También tengo un canal en Youtube donde se demuestra el funcionamiento de los códigos: pythoninicios

Para este ejercicio vamos a calcular las siguientes figuras:

1. Cubo.
2. Esfera.
3. Cilindro.
4. Pirámide.
5. Cono.
6. Cono truncado.

Para lo anterior se describirá la fórmula utilizada para calcular los volúmenes de las figuras.


volumen.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import math

def volumen_cubo(lado):
    volumen=lado**3
    return volumen

def volumen_esfera(radio):
    volumen=(4/3)*math.pi*radio**3
    return volumen

def volumen_cilindro(radio,altura):
    volumen=math.pi*radio**2*altura
    return volumen

def volumen_piramide(lado1, lado2,altura):
    volumen=lado1*lado2*altura/3
    return volumen
    
def volumen_cono(radio,altura):
    volumen=(math.pi*radio**2*altura)/3
    return volumen

def volumen_cono_truncado(radio1,radio2,altura):
    volumen=math.pi*altura*(radio1**2+radio2**2+radio1*radio2)
    return volumen

Para calcular el volúmen de cada figura se debe llamar la función, Ejemplo:

>>> volumen_piramide(2,3,4)
8

>>> volumen_cubo(3)
27

>>> volumen_cilindro(3,6)
169.64600329384882

>>> volumen_esfera(4)
201.06192982974676


lunes, 12 de marzo de 2018

TRATAMIENTO CADENAS DE TEXTO EN PYTHON (PARTE II)

Hola a todos esta entrada incluye las funciones y un ejemplo de funcionamiento de cada una de ellas.

  • capitalize(): pone en mayúscula la primera letra de una cadena y el resto en minúsculas.
h="hola a todos"
H=h.capitalize()
print H
Hola a todos 

h="HOLA A TODOS"
H=h.capitalize()
print H
Hola a todos
  • lower(): Convierte toda la cadena a letras minúsculas.
h="HOLA A TODOS"
H=h.lower()
print H
hola a todos 

h="Hola a todos"
H=h.lower()
print H 

hola a todos
  • upper(): Covierte toda la cadena a letras mayúsculas.
h="Hola a todos"
H=h.upper()
print H
HOLA A TODOS
  • swapcase(): Convierte de mayúsculas a minúsculas y viceversa.
 h="Hola a todos"
H=h.swapcase()
print H
hOLA A TODOS
  • count(): Cuenta el número de apariciones de un caracter o cadena de caracteres, dentro de otra cadena de caracteres. 
h="Hola a todos"
H=h.count("o")
print H
3
  • isalnum(): Identifica si la cadena es alfanumérica (contiene letras A-Z,a-z y números 0-9).
h="Hola a todos"
H=h.isalnum()
print H
False 

h="Holaatodos"
H=h.isalnum()
print H
True
  • isalpha(): Si la cadena es alfabética, A-Z y a-z. 
h="Hola a todos"
H=h.isalpha()
print H
False

h="Holaatodos"
H=h.isalpha()
print H 

True
  • isdigit(): Si la cadena es numérica. 
h="Holaatodos"
H=h.isdigit()
print H
False

h="345553"
H=h.isdigit()
print H

True
  • islower(): si la cadena contiene minúsculas combinando con espacios y números.
 h="hola a todos"
H=h.islower()
print H
True

h="holaatodos"
H=h.islower()
print H

True

h="hola a todos 123"
H=h.islower()
print H 

True
  • isupper(): Si contiene sólo mayúsculas, números o espacios. 

    h="HOLA A TODOS 123"
    H=h.isupper()
    print H
    True

    h="hOLA A TODOS 123"
    H=h.isupper()
    print H
    False
  • isspace(): Si contiene sólo espacios.
 h="hOLA A TODOS 123"
H=h.isspace()
print H
False

h="   "
H=h.isspace()
print H
True




sábado, 18 de noviembre de 2017

TRATAMIENTO DE CADENAS DE TEXTO EN PYTHON (PARTE I)

 Hola a todos,  en esta entrada se realizarán ejercicios con cadenas de texto. Si tienen funciones adicionales que deban ser documentadas me lo hacen saber, la idea del blog es seguir creciendo con buena información.


Concatenar: Permite unir cadenas de texto.

1
2
3
4
#CONCATENAR
cadena1="python"
cadena2="inicios"
print cadena1 + " " + cadena2

python inicios
>>>

Repetir: Se multiplica el mensaje n veces.

1
2
3
4
#CONCATENAR
#MULTIPLICAR
cadena1="python "
print cadena1*3

python python python
>>>

Longitud de la cadena: Número de caracteres que contiene la cadena.


1
2
3
#LONGITUD
cadena1="python "
print len(cadena1)

7
>>>

Encontrar: Permite encontrar una subcadena perteneciente a una cadena de caracteres, mostrando la posición donde se encuentra, en caso de no encontrarla la función retornará -1. La función se llama find.


1
2
3
4
#ENCONTRAR
cadena="python "
cadena1=cadena.find("n")
print cadena1

 5
>>>


Minúsculas: Cambia la cadena de caracteres a minúsculas.

1
2
3
#MINUSCULAS
cadena="PYTHON"
print cadena.lower()

python
>>>

Mayúsculas: Cambia la cadena de caracteres a mayúscula.


1
2
3
#MAYUSCULAS
cadena="python"
print cadena.upper()

PYTHON
>>> 

Reemplazar: Permite reemplazar valores por otros en una cadena.


1
2
3
#REEMPLAZAR
cadena="python"
print cadena.replace("n","python")

pythopython
>>>

Cortar: Mostar un segmento de una cadena.

1
2
3
#CORTAR
cadena="www.pythoninicios.blogspot.com"
print cadena[4:17]

pythoninicios
>>>

Espero sea de ayuda.

jueves, 26 de octubre de 2017

¿CÓMO GRAFICAR EN PYTHON CON NUMPY Y MATPLOTLIB?

En construcción

Hola a todos en esta entrada vamos a utilizar las librerías Numpy y Matplotlib en Python para hacer un gráfico.

Este será un ejercicio básico, pero le estaré subiendo el nivel más adelante,  Si no sabes como instalar la librerías muy pronto dejaré un paso a paso para hacerlo, por ahora pregunten y les ayudaré.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,10,0.1)
y = x*np.sin(x)
plt.plot(x,y)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('PYTHONINICIOS.BLOGSPOT.COM')
plt.show()

Este es el resultado:





miércoles, 30 de agosto de 2017

CALCULAR CÓDIGO DE COLORES CABLE DE FIBRA ÓPTICA EN PYTHON


Hola a todos.

Al trabajar con cables de fibra óptica, es un tema de importancia el saber identificar las fibras y saberlas ubicar. Existen estándar los cuales establecen el orden y los colores de los hilos de fibra óptica usado en tubos holgados o apretados.Este código de colores también aplica para los colores de la chaqueta del cable o buffer.

Ejercicio: Se requiere calcular el color del buffer y del hilo en un cable de fibra óptica, conociendo el número de hilo.

Solución:  Tomando como dato de ingreso el número de hilo que se desea consultar, de acuerdo al estándar TIA-598c y utilizando la versión de Python 2.7.11.
Imagen relacionada
https://www.opsol.net/zona-tecnica/fibra-optica/

Nombre del archivo: codigo_colores.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#Creado por Sneyder ramirez
#Para: http://pythoninicios.blogspot.com.co/

HILOS = ['Azul', 'Naranja', 'Verde', 'Marron', 'Gris', 'Blanco', 'Rojo', 'Negro', 'Amarillo', 'Violeta', 'Rosa', 'Turquesa',
'Azul/negro', 'Naranja/Negro', 'Verde/negro', 'Marron/negro', 'Gris/Negro', 'Blanco/Negro', 'Rojo/Negro', 'Negro/Amarillo',
'Amarillo/negro','Violeta/Negro', 'Rosa/Negro', 'Turquesa/Negro']

hilos=input ("CANTIDAD DE HILOS DE LA FIBRA:  ")
cantidad_buffer= input("CANTIDAD DE BUFFER: ")
hilos_buffer=hilos/cantidad_buffer
#print "hilos por buffer", hilos_buffer
hilo=input("INGRESE HILO A CALCULAR: ")
color_buffer=int(hilo/hilos_buffer)
color_hilo=abs(((hilos_buffer*color_buffer)-hilo)-hilos_buffer)
color_hilo1=abs(((hilos_buffer*(color_buffer+1))-hilo)-hilos_buffer)
residuo=hilo%hilos_buffer

print "EL HILO: ", hilo, "TIENE: "

if residuo == 0:
        
    print "BUFFER: ",HILOS[color_buffer-1]
    print "HILO: ",HILOS[color_hilo-1]
else:
    print "BUFFER: ",HILOS[color_buffer]
    print "HILO: ",HILOS[color_hilo1-1]

Prueba 1: Hilo 1, 65, 133 en cable de 144 hilos con 12 buffer.



Prueba 2: Hilo 3, 25, 47 en cable de 48 hilos con 8 buffer.


Se actualiza a Pyhton 3.8.2


#Creado por Sneyder ramirez
#Para: http://pythoninicios.blogspot.com.co/

HILOS = ['Azul', 'Naranja', 'Verde', 'Marron', 'Gris', 'Blanco', 'Rojo', 'Negro', 'Amarillo', 'Violeta', 'Rosa', 'Turquesa',
'Azul/negro', 'Naranja/Negro', 'Verde/negro', 'Marron/negro', 'Gris/Negro', 'Blanco/Negro', 'Rojo/Negro', 'Negro/Amarillo',
'Amarillo/negro','Violeta/Negro', 'Rosa/Negro', 'Turquesa/Negro']

hilos=int(input("CANTIDAD DE HILOS DE LA FIBRA:  "))
cantidad_buffer= int(input("CANTIDAD DE BUFFER: "))
hilos_buffer=int(hilos/cantidad_buffer)
hilo=int(input("INGRESE HILO A CALCULAR: "))
color_buffer=int(hilo/hilos_buffer)
color_hilo=abs(((hilos_buffer*color_buffer)-hilo)-hilos_buffer)
color_hilo1=abs(((hilos_buffer*(color_buffer+1))-hilo)-hilos_buffer)
residuo=hilo%hilos_buffer

print ("EL HILO: ", hilo, "TIENE: ")

if residuo==0: 
    print ("BUFFER: ",(HILOS[color_buffer-1]))
    print ("HILO: ",(HILOS[color_hilo-1]))
else:
    print ("BUFFER: ",HILOS[color_buffer])
    print ("HILO: ",HILOS[color_hilo1-1])

Y esto es todo, si tienen alguna duda, la resolveré lo más pronto posible

En una próxima entrada se va a realizar el ejercicio con interfaz gráfica PyQT, utilizando nuevas herramientas de diseño de QT Designer. La prueba en video más adelante.

Gracias.

viernes, 19 de mayo de 2017

¿CÓMO CREAR VENTANAS EMERGENTES EN PYTHON-PYQT? FORMA II


En una entrada pasada se realizó un ejercicio el cuál permitía la visualización de una ventana emergente creada desde el código, esta vez la ventana emergente se hará desde QT. Si desean ver el ejercicio anterior acá dejo el link.

La ventana principal está dada por el siguiente código:

ppal.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'ppal.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(362, 178)
        self.splitter = QtGui.QSplitter(Dialog)
        self.splitter.setGeometry(QtCore.QRect(70, 40, 221, 81))
        self.splitter.setOrientation(QtCore.Qt.Vertical)
        self.splitter.setObjectName(_fromUtf8("splitter"))
        self.label = QtGui.QLabel(self.splitter)
        self.label.setObjectName(_fromUtf8("label"))
        self.lineEdit = QtGui.QLineEdit(self.splitter)
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.pushButton = QtGui.QPushButton(self.splitter)
        self.pushButton.setObjectName(_fromUtf8("pushButton"))

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
        self.label.setText(_translate("Dialog", "INGRESE SU NOMBRE:", None))
        self.pushButton.setText(_translate("Dialog", "OK", None))

La ventana emergente tendrá la siguiente característica: Un botón OK, que cerrará la ventana, y un cuadro de texto que mostrará lo que se ingresó en la ventana Principal.

second.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'second.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(224, 108)
        self.pushButton = QtGui.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(70, 60, 75, 23))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.label = QtGui.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(20, 20, 191, 21))
        self.label.setText(_fromUtf8(""))
        self.label.setObjectName(_fromUtf8("label"))

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
        self.pushButton.setText(_translate("Dialog", "OK", None))
  
Ahora tenemos el código que ejecuta todo el ejercicio.




Espero este ejercicio les ayude y si tienen alguna duda con gusto la resolveré.

Saludos.

miércoles, 17 de mayo de 2017

¿CÓMO CREAR VENTANAS EMERGENTES EN PYTHON-PYQT? FORMA I


Ejercicio en Construcción:

Hola a todos, esta vez mostraré un ejemplo para crear ventana emergente, en la que nos mostrará un aviso.

Este ejercicio se hará tomando una ventana creada en QT como la aplicación principal, y la ventana emergente será una creada desde la consola.

PASO 1: Crear la interfaz gráfica.


Este es el código creado para la ventana principal.


ppal.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'ppal.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(362, 178)
        self.splitter = QtGui.QSplitter(Dialog)
        self.splitter.setGeometry(QtCore.QRect(70, 40, 221, 81))
        self.splitter.setOrientation(QtCore.Qt.Vertical)
        self.splitter.setObjectName(_fromUtf8("splitter"))
        self.label = QtGui.QLabel(self.splitter)
        self.label.setObjectName(_fromUtf8("label"))
        self.lineEdit = QtGui.QLineEdit(self.splitter)
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.pushButton = QtGui.QPushButton(self.splitter)
        self.pushButton.setObjectName(_fromUtf8("pushButton"))

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
        self.label.setText(_translate("Dialog", "INGRESE SU NOMBRE:", None))
        self.pushButton.setText(_translate("Dialog", "OK", None))

PASO 2: Crear el archivo ejecutable.

ejecutable.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import sys
from ppal import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *


class EMERGENTE(QtGui.QWidget):
    def __init__(self,name=None):
        super(EMERGENTE, self).__init__()
        self.name = name
        btn1 = QtGui.QLabel("%s" % self.name,self)
        btn1.move(50, 50)
        contenedor = QVBoxLayout()
        self.setLayout(contenedor)
        btnsalir=QPushButton("salir", None)
        contenedor.addWidget(btnsalir)
        btnsalir.move(50, 50)
        self.connect(btnsalir, SIGNAL("clicked()"), self.salir)
        self.setGeometry(500, 300, 250, 180)
        self.setWindowTitle('EMERGENTE')
        self.show()
        
    def salir(self):
        self.close()

class PRINCIPAL(QtGui.QDialog):
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL('clicked()'),self.aceptar)
        self.children = []
        self.setWindowTitle('VENTANA PRINCIPAL')
        self.show()

    def aceptar(self):
        name=self.ui.lineEdit.text()
        child= EMERGENTE(name)
        self.children.append(child)
       
 
if __name__ == '__main__':
    app=QtGui.QApplication(sys.argv)
    myapp = PRINCIPAL()
    myapp.show()
    sys.exit(app.exec_())

Resultados: Como se puede observar, al ingresar en el espacio Nombre, se abrirá una ventana emergente que mostrará la linea de texto ingresada en la ventana principal.

 Espero haya sido útil el ejercicio, y cualquier duda que tengan con gusto la resolveré.

Este ejercicio también lo voy a realizar utilizando una ventana emergente pero creada en QT. Pronto avisaré cuando esté realizada.

Salu2.