Mostrando las entradas con la etiqueta strings. Mostrar todas las entradas
Mostrando las entradas con la etiqueta strings. Mostrar todas las entradas

sábado, 23 de febrero de 2013

Uso avanzado de print python 3 (I/II)

Como venimos aprendiendo en los últimos tutoriales de programación de scripting de Tiempo de Tux hemos hablado algo de python 3 y en esta ocasión aprenderemos a usar el comando con el que hacemos "Hola Mundo" de forma avanzada para crear script's para Unix(consola) mas útiles y usarlos para hacer algo de administración en el sistema:

Como sabemos la sintaxis de print en python 3 es:

print ("Hola")
Como mostraba en mi otro blog,y bien me decian es similar a la de lua 5.2,pero bueno ahora vamos a lo que venimos:

En python existen tipos de datos y estos los podemos manipular y convertir,los cuales los tres mas importantes a demas de los boleanos son:

string = "Cadena de texto encomillada"

integer = 33 # Numero entero

float = 3.14 # Numero de punto flotante

Y con print podemos hacer una conversion a la hora de usarlo,por ejemplo en este caso podemos convertir un entero a string

Porque un entero es así:

33 y una cadena seria asi "33"


Abran una consola y entren a la consola de python3


python3

Y escriban :


3 + 3

Y el resultado sera

6

Pero si lo sumamos como una cadena de texto :


"Hola " + "Mundo"


Y como podemos ver nos junta las dos cadenas(las concatena) solo por las dos comillas(pero estas no se veran en un script)

Aquí el ejemplo:

Podemos sumar dos numeros(enteros) pero convertilos a cadena :

Con el operador de conversión str()


str(3) + str(3)

Y el resultado que nos da es el mismo que se hicieramos:


"3" + "3"
Y esto para que sirve?

La concatenacion de cadenas de texto es algo que podemos usar mucho ya haciendo uso de scripting,ya que por ejemplo si queremos unir dos cadenas de texto desde dos variables podemos hacer esto:

Salimos de la consola de python(ctrl+d,o exit()) y abrimos un editor de texto(en mi caso joe) pueden usar nano,vi,vim

Y escribimos este script


#!/usr/bin/env python3

nombre = str(input("Como de llamas : "))
edad = str(input("Que edad tienes : "))

print ("Te llamas : " + nombre + " y tienes " + edad )



Ejecutamos



Y como vemos concatena todos los datos con un solo print en una sola linea, también implemente lo que acabamos de ver,convertir los dos valores a string,fuese string o entero y de esta manera lo concateno muy bien

Aqui el codigo bueno es este:


#!/usr/bin/env python3

nombre = str(input("Como de llamas : "))
edad = input("Que edad tienes : ")

print ("Te llamas : " + nombre + " y tienes " + str(edad) )


Ya que no le daremos valor a la edad hasta que necesitemos usarlo ya sea a cadena con str() o entero con int()

Solo que hay que tener en cuenta que,para concatenar cadenas esta es la sintaxis:

print ("Cadena" + "Otra Cadena")

Y números es :

print (numero, numero , otro_numero)

Aquí un ejemplo de un script donde tenemos que convertir un entero a sting y a entero

#!/usr/bin/env python3

nombre = str(input("Como de llamas : "))
edad = input("Que edad tienes : ")

print ("Te llamas : " + nombre + " y tienes " + str(edad))
print ("Tienes ", int(edad) * 365, "Dias")

# Tenemos que tener en cuenta que el resto del script usara el 
# tipo de dato que se le de al final
# Podemos verificarlo con type

print (type(edad))

Con la función type nos dira que tipo de dato es,puede ser int,tuple,str,list,etc

También cabe destacar que podemos usar esta sintaxis también en strings:


print (numero, string, otro_numero)

Ahora sabiendo como sumar(concatenar) nuestros strings, podemos pasar a algo mas avanzado que es el formateo de strings:

Si han usado alguna vez o usan mucho shell scripting con bash o perl sabran que podemos introducir una variable que contenga una string con el simbolo $, o en el caso de perl con el simbolo @ o %  pero esto como se puede hacer en python?

Por ejemplo en bash:


#!/bin/bash

var1="ola "
var2="Mundo!!!"

echo "H$var1 $var2"

Y el resultado es:

Y en perl es:

#!/usr/bin/env perl

my $var1 = "ola";

my $var2 = "Mundo!!!";

print "H$var1 $var2\n";

Y el resultado es:


Incluso en ruby:


#!/usr/bin/env ruby

var1 = "ola"
var2 = "Mundo"

puts "H#{var1} #{var2}"

Y bueno en otros lenguajes tambien,pero el hecho es que en python como hacemos eso ?

El problema en python es que no usa identificadores de datos,ya que si hacemos esto:


#!/usr/bin/env python3

var1 = "ola"
var2 = "Mundo"

print ("Hvar1 var2")

El resultado es:

:\ y ese no es el resultado que esperábamos,aunque sabiendo concatenar strings nos funciona asi:

#!/usr/bin/env python3

var1 = "ola"
var2 = "Mundo"


print ("H"+var1+" "+var2)




Pero otra forma es el formateo,esta es la sintaxis:

print ("Texto %s" %(variable))
Lo de rojo es lo importante,en la parte de %s estamos llamando nuestra variable que definimos en %() y estas se llamaran de izquierda a derecha,por ejemplo la primera %s es la primera variable dentro de %() y así sucesivamente:

 Por ejemplo


#!/usr/bin/env python3

var1 = "ola"
var2 = "Mundo"


print ("H%s %s!!!" %(var1,var2))

Y el resultado es:



También lo podemos hacer con datos de números con %d

Ejemplo:


#!/usr/bin/env python3

var1 = 1
var2 = 2

print ("La variable1 tiene un valor de %d y la variable2 tiene un valor de %d" %(var1,var2))
print ("Sumadas es un total de", var1 + var2)



Es es el formato de strings eso es todo por ahora,intentare mostrar lo mas importante de este tema en la parte 2 de este tutorial, así que eso es todo por ahora.


Leer más...

martes, 13 de noviembre de 2012

Tutorial perl desde Unix variables hash

Vamos a ver otro tipo de variable en nuestro lenguaje que estamos viendo estos días,perl mi lenguaje interpretado favorito,en este caso veremos nos concentraremos en los hashes ya que como he dicho exsiten ditintos tipos de variables en Perl.


Que son los hashes?




Los hashes o también llamados hash como se describe %hash son variables de arreglo asociativo,esto quiere decir que asocia los valores que se encuentren dentro del hash con un valor y salida y retorna la salida

Si han visto los ejemplos de programas que he escrito en perl abran visto esto:

valor => salida
Pues asi es como se define un has

my %hash (

'valor' => 'salida'

) ;

Como pueden ver es una variable muy propia de perl que no es muy vista en otros lenguajes de programación

Y se llama de esta forma

my $variable = $hash{'valor'};

Ahora vamos a ver un ejemplo de script para que entiendan un poco mejor:


#!/usr/bin/env perl 

use strict;
use warnings;
use utf8;

# (Los sistemas que uso yo)

my %sistemas = (
'Ubuntu' => 'Linux',
'iOS' => 'Darwin',
'FreeBSD' => 'FreeBSD'
);

my $OSmobile = $sistemas{'iOS'};
my $OSdesktop = $sistemas{'FreeBSD'};
my $OSnetbook = $sistemas{'Ubuntu'};

print "\nLos nucleos de los sistemas operativos que uso son $OSmobile, $OSdesktop y $OSnetbook\n\n"


Usando While

Si queremos recorrer todos los valores de nuestro %hash con el sentido (valor,salida) para poder ver ambos al mismo tiempo podemos usar each que nos hace posible hacer esto.

Veamos un ejemplo



#!/usr/bin/env perl 

#===============================================

use strict;
use warnings;
use utf8;

my %sistemas = (
'iOS' => 'Darwin',
'Ubuntu' => 'Linux',
'FreeBSD' => 'FreeBSD',
'Gentoo' => 'Linux',
);

while ( my ($sitem, $nucleo) = each(%sistemas)) {
   print "Sistema: " . $sitem . " Nucleo: " . $nucleo . "\n";
    print "Basado en la salida del comando uname de Unix\n"

};

Y obtendrán esta salida:



Saber cuantos elementos tenemos en un hash


Como saber cuantos hash tengo:

Para eso se usa el comando keys con la sintaxis

.keys(%hash).
Dentro de un bucle

Veamos un ejemplo:


#!/usr/bin/env perl 

#===============================================

use strict;
use warnings;
use utf8;

my %sistemas = (
'iOS' => 'Darwin',
'Ubuntu' => 'Linux',
'FreeBSD' => 'FreeBSD',
'Gentoo' => 'Linux',
);


 print "Tamaño del hash:  " . keys( %sistemas ) . "\n";


Y devolverá cuantos valores hay en el %hash

Usando for

De igual manera que con while podemos recorrer nuestro hash usando el bucle for,la sintaxis es un poco distinta pero si nos damos cuenta se obtiene el mismo resultado

Ejemplo:


#!/usr/bin/env perl 

#===============================================




use strict;
use warnings;
use utf8;

my %sistemas = (
'iOS' => 'Darwin',
'Ubuntu' => 'Linux',
'FreeBSD' => 'FreeBSD',
      );

for my $key ( keys %sistemas ) {
my $nucleo = $sistemas{$key};
print "Sistema $key => Nucleo $nucleo\n"; 
};


Y se obtiene un resultado similar con for o mejor dicho keys que al usar while o mejor dicho each

Borrar elementos del hash

Al igual que agregar podemos borrar elementos que estén en nuestro hash,en esta ocasión borrar:

Para ello solo se usa el comando delete con la sintaxis:


delete( $hash{'elemento'});
Veamos un ejemplo:




#!/usr/bin/env perl 

#===============================================





use strict;
use warnings;
use utf8;

my %sistemas = (
'iOS' => 'Darwin',
'Ubuntu' => 'Linux',
'FreeBSD' => 'FreeBSD',
);

print "Elementos en el hash:  " . keys( %sistemas ) . "\n";

for my $key ( keys %sistemas ) {
my $nucleo = $sistemas{$key};
print "Sistema $key => Nucleo $nucleo\n"; 
};

print "Borrando iOS...\n";

delete( $sistemas{'iOS'});

print "Ahora hay :  " . keys( %sistemas ) . " elementos en el hash\n";



Como pueden ver no es muy difícil el manejo de %hash en perl :D

Agregar elementos al hash

Al igual que borrar podemos agregar elementos que estén en nuestro hash,en esta ahora agreagar:

Solo basta usar esta sintaxis:

$hash{'valor'} = 'salida';
Que seria como poner adentro del hash

'valor' => 'salida'
Veamos un ejemplo

Agregue dos subrutinas y el comando sleep para que se vea mas amigable y no tenga que repetir los comandos,pero aquí a lo que tienen que darle atención es a lo que esta de rojo:

#!/usr/bin/env perl 

#===============================================

use strict;
use warnings;
use utf8;

my %sistemas = (
'iOS' => 'Darwin',
'Ubuntu' => 'Linux',
'FreeBSD' => 'FreeBSD',
);
cargar();

visor();
sleep 1;

print "Agregando un nuevo sistema..\n";
sleep 2;

$sistemas{'Debian'} = 'Linux';

cargar();

visor();

sub visor {
for my $key ( keys %sistemas ) {
my $nucleo = $sistemas{$key};
print "Sistema $key => Nucleo $nucleo\n"; 
};
}

sub cargar {

print "Ahora hay :  " . keys( %sistemas ) . " elementos en el hash\n";
sleep 1;
print "Cargando...\n";
sleep 2;

}

Así de fácil y eficiente puede ser hash,hay muchas cosas mas que se pueden hacer con %hash pero yo solo quiero poner en la mesa lo mas básico ya que no he enseñado rutinas,abrir archivos,bucles,modulos,etc.

Espero que te sirva de algo este pequeño tutorial en el mundo de la programación Perl y claro desde Unix.

Leer más...