""

domingo, 26 de junio de 2022

PYTHON BASICO: CADENAS DE CARACTERES (python.org/es)

 

3.1.2. Cadenas de caracteres

Además de números, Python puede manipular cadenas de texto, las cuales pueden ser expresadas de distintas formas. Pueden estar encerradas en comillas simples ('...') o dobles ("...") con el mismo resultado 2. \ puede ser usado para escapar comillas:

>>>
>>> 'spam eggs'  # single quotes
'spam eggs'
>>> 'doesn\'t'  # use \' to escape the single quote...
"doesn't"
>>> "doesn't"  # ...or use double quotes instead
"doesn't"
>>> '"Yes," they said.'
'"Yes," they said.'
>>> "\"Yes,\" they said."
'"Yes," they said.'
>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'

En el intérprete interactivo, la salida de caracteres está encerrada en comillas y los caracteres especiales se escapan con barras invertidas. Aunque esto a veces se vea diferente de la entrada (las comillas que encierran pueden cambiar), las dos cadenas son equivalentes. La cadena se encierra en comillas dobles si la cadena contiene una comilla simple y ninguna doble, de lo contrario es encerrada en comillas simples. La función print() produce una salida más legible, omitiendo las comillas que la encierran e imprimiendo caracteres especiales y escapados:

>>>
>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'
>>> print('"Isn\'t," they said.')
"Isn't," they said.
>>> s = 'First line.\nSecond line.'  # \n means newline
>>> s  # without print(), \n is included in the output
'First line.\nSecond line.'
>>> print(s)  # with print(), \n produces a new line
First line.
Second line.

Si no quieres que los caracteres precedidos por \ se interpreten como caracteres especiales, puedes usar cadenas sin formato agregando una r antes de la primera comilla:

>>>
>>> print('C:\some\name')  # here \n means newline!
C:\some
ame
>>> print(r'C:\some\name')  # note the r before the quote
C:\some\name

Las cadenas de texto literales pueden contener múltiples líneas. Una forma es usar triples comillas: """...""" o '''...'''. Los fin de línea son incluidos automáticamente, pero es posible prevenir esto agregando una \ al final de la línea. Por ejemplo:

print("""\
Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to
""")

produce la siguiente salida (tened en cuenta que la línea inicial no está incluida):

Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to

Las cadenas se pueden concatenar (pegar juntas) con el operador + y se pueden repetir con *:

>>>
>>> # 3 times 'un', followed by 'ium'
>>> 3 * 'un' + 'ium'
'unununium'

Dos o más cadenas literales (es decir, las encerradas entre comillas) una al lado de la otra se concatenan automáticamente.

>>>
>>> 'Py' 'thon'
'Python'

Esta característica es particularmente útil cuando quieres dividir cadenas largas:

>>>
>>> text = ('Put several strings within parentheses '
...         'to have them joined together.')
>>> text
'Put several strings within parentheses to have them joined together.'

Esto solo funciona con dos literales, no con variables ni expresiones:

>>>
>>> prefix = 'Py'
>>> prefix 'thon'  # can't concatenate a variable and a string literal
  File "<stdin>", line 1
    prefix 'thon'
                ^
SyntaxError: invalid syntax
>>> ('un' * 3) 'ium'
  File "<stdin>", line 1
    ('un' * 3) 'ium'
                   ^
SyntaxError: invalid syntax

Si quieres concatenar variables o una variable y un literal, usa +:

>>>
>>> prefix + 'thon'
'Python'

Las cadenas de texto se pueden indexar (subíndices), el primer carácter de la cadena tiene el índice 0. No hay un tipo de dato diferente para los caracteres; un carácter es simplemente una cadena de longitud uno:

>>>
>>> word = 'Python'
>>> word[0]  # character in position 0
'P'
>>> word[5]  # character in position 5
'n'

Los índices quizás sean números negativos, para empezar a contar desde la derecha:

>>>
>>> word[-1]  # last character
'n'
>>> word[-2]  # second-last character
'o'
>>> word[-6]
'P'

Nota que -0 es lo mismo que 0, los índice negativos comienzan desde -1.

Además de los índices, las rebanadas también están soportadas. Mientras que los índices se utilizar para obtener caracteres individuales, las rebanadas te permiten obtener partes de las cadenas de texto:

>>>
>>> word[0:2]  # characters from position 0 (included) to 2 (excluded)
'Py'
>>> word[2:5]  # characters from position 2 (included) to 5 (excluded)
'tho'

Los índices de las rebanadas tienen valores por defecto útiles; el valor por defecto para el primer índice es cero, el valor por defecto para el segundo índice es la longitud de la cadena a rebanar.

>>>
>>> word[:2]   # character from the beginning to position 2 (excluded)
'Py'
>>> word[4:]   # characters from position 4 (included) to the end
'on'
>>> word[-2:]  # characters from the second-last (included) to the end
'on'

Nota cómo el inicio siempre se incluye y el final siempre se excluye. Esto asegura que s[:i] + s[i:] siempre sea igual a s:

>>>
>>> word[:2] + word[2:]
'Python'
>>> word[:4] + word[4:]
'Python'

Una forma de recordar cómo funcionan las rebanadas es pensar que los índices apuntan entre caracteres, con el borde izquierdo del primer carácter numerado 0. Luego, el punto derecho del último carácter de una cadena de n caracteres tiene un índice n, por ejemplo

 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
 0   1   2   3   4   5   6
-6  -5  -4  -3  -2  -1

La primera fila de números da la posición de los índices 0…6 en la cadena; La segunda fila da los correspondientes indices negativos. La rebanada desde i hasta j consta de todos los caracteres entre los bordes etiquetados i y j, respectivamente.

Para índices no negativos, la longitud de la rebanada es la diferencia de los índices, si ambos están dentro de los límites. Por ejemplo, la longitud de word[1:3] es 2.

Intentar usar un índice que es muy grande resultará en un error:

>>>
>>> word[42]  # the word only has 6 characters
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

Sin embargo, los índices de rebanadas fuera de rango se manejan satisfactoriamente cuando se usan para rebanar:

>>>
>>> word[4:42]
'on'
>>> word[42:]
''

Las cadenas de Python no se pueden modificar, son immutable. Por eso, asignar a una posición indexada de la cadena resulta en un error:

>>>
>>> word[0] = 'J'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> word[2:] = 'py'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

Si necesitas una cadena diferente, deberías crear una nueva:

>>>
>>> 'J' + word[1:]
'Jython'
>>> word[:2] + 'py'
'Pypy'

La función incorporada len() retorna la longitud de una cadena:

>>>
>>> s = 'supercalifragilisticexpialidocious'
>>> len(s)
34

PYTHON BASICO: NUMEROS. UNA MIRADA DESDE PYTHON.ORG/ES

 

3. Una introducción informal a Python

En los siguientes ejemplos, la entrada y la salida se distinguen por la presencia o ausencia de prompts (>>> y …): para repetir el ejemplo, escribe todo después del prompt, cuando aparece; las líneas que no comienzan con un prompt son emitidas desde el intérprete. Ten en cuenta que un prompt secundario solo en una linea de ejemplo significa que debes escribir una línea en blanco. Esto se utiliza para finalizar un comando multilínea.

You can toggle the display of prompts and output by clicking on >>> in the upper-right corner of an example box. If you hide the prompts and output for an example, then you can easily copy and paste the input lines into your interpreter.

Muchos de los ejemplos de este manual, incluso aquellos ingresados en el prompt interactivo, incluyen comentarios. Los comentarios en Python comienzan con el carácter numeral, #, y se extienden hasta el final visible de la línea. Un comentario quizás aparezca al comienzo de la línea o seguido de espacios en blanco o código, pero no dentro de una cadena de caracteres. Un carácter numeral dentro de una cadena de caracteres es sólo un carácter numeral. Ya que los comentarios son para aclarar código y no son interpretados por Python, pueden omitirse cuando se escriben los ejemplos.

Algunos ejemplos:

# this is the first comment
spam = 1  # and this is the second comment
          # ... and now a third!
text = "# This is not a comment because it's inside quotes."

3.1. Usando Python como una calculadora

Probemos algunos comandos simples de Python. Inicia el intérprete y espere el prompt primario, >>>. (No debería tardar mucho.)

3.1.1. Números

El intérprete puede utilizarse como una simple calculadora; puedes introducir una expresión y este escribirá los valores. La sintaxis es sencilla: los operadores +, -, * y /``funcionan como en la mayoría de los lenguajes (por ejemplo, Pascal o C); los paréntesis (``()) pueden ser usados para agrupar. Por ejemplo:

>>>
>>> 2 + 2
4
>>> 50 - 5*6
20
>>> (50 - 5*6) / 4
5.0
>>> 8 / 5  # division always returns a floating point number
1.6

Los números enteros (ej. 2, 4, 20) tienen tipo int, los que tienen una parte fraccionaria (por ejemplo 5.0, 1.6) tiene el tipo float. Vamos a ver más acerca de los tipos numéricos más adelante en el tutorial.

La división (/) siempre retorna un punto flotante. Para hacer floor division y obtener un resultado entero (descartando cualquier resultado fraccionario) puede usarse el operador //; para calcular el resto puedes usar %:

>>>
>>> 17 / 3  # classic division returns a float
5.666666666666667
>>>
>>> 17 // 3  # floor division discards the fractional part
5
>>> 17 % 3  # the % operator returns the remainder of the division
2
>>> 5 * 3 + 2  # floored quotient * divisor + remainder
17

Con Python, es posible usar el operador ** para calcular potencias 1:

>>>
>>> 5 ** 2  # 5 squared
25
>>> 2 ** 7  # 2 to the power of 7
128

El signo igual (=) se usa para asignar un valor a una variable. Ningún resultado se mostrará antes del siguiente prompt interactivo:

>>>
>>> width = 20
>>> height = 5 * 9
>>> width * height
900

Si una variable no está «definida» (no se le ha asignado un valor), al intentar usarla dará un error:

>>>
>>> n  # try to access an undefined variable
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined

Hay soporte completo de punto flotante; operadores con operando mezclados convertirán los enteros a punto flotante:

>>>
>>> 4 * 3.75 - 1
14.0

En el modo interactivo, la última expresión impresa se asigna a la variable _. Esto significa que cuando se está utilizando Python como calculadora, es más fácil seguir calculando, por ejemplo:

>>>
>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_, 2)
113.06

Esta variable debe ser tratada como de sólo lectura por el usuario. No le asignes explícitamente un valor; crearás una variable local independiente con el mismo nombre enmascarando la variable con el comportamiento mágico.

Además de int y float, Python admite otros tipos de números, como Decimal y Fraction. Python también tiene soporte incorporado para complex numbers, y usa el sufijo j o J para indicar la parte imaginaria (por ejemplo, 3+5j).

PYTHON VANZADO: CODIGOS QR OTRA FORMA DE LENGUAJE "HOLA MUNDO"

En este código no vamos a generar un QR para un link de un sitio web sino para una cadena de texto (string). Además se combinará el uso de pyfiglet para cambiarle el formato a la cadena de texto ingresada por el usuario y verificar mediante una estructura condicional si el valor es correcto, antes de generar el código QR.

print("Inicio de código")
import time
print(time.asctime())
import pyqrcode
import pyfiglet
word = input("Favor ingresar la palabra o frase a codificar: ")
font = pyfiglet.figlet_format(word)
print("La palabra ingresada fue:? ",font)
confirmacion = input("Correcto?(si/no): ")
if confirmacion == 'si':
    qcode= pyqrcode.create(word)
    qcode.png('MyWord.png', scale = 10)
    qcode.show()
else:
    print("Por favor repita el proceso")
print("Fin de código")

>>> REPUESTA DE LA TERMINAL:

Windows PowerShell
Copyright (C) Microsoft Corporation. Todos los derechos reservados.

Prueba la nueva tecnología PowerShell multiplataforma https://aka.ms/pscore6

PS C:\Users\PPI\Documents\Python language> & "C:/Users/PPI/AppData/Local/
Programs/Python/Python310/python.exe" "c:/Users/PPI/Documents/Python language/
Clcoding/Clcoding_Pyqrcode.py"

Inicio de código
Sun Jun 26 10:11:18 2022
Favor ingresar la palabra o frase a codificar: Hola Mundo!
La palabra ingresada fue:? 
 _ _ _ __ __ _ _
| | | | ___ | | __ _ | \/ |_ _ _ __ __| | ___ | |
| |_| |/ _ \| |/ _` | | |\/| | | | | '_ \ / _` |/ _ \| |
| _ | (_) | | (_| | | | | | |_| | | | | (_| | (_) |_|
|_| |_|\___/|_|\__,_| |_| |_|\__,_|_| |_|\__,_|\___/(_)


Correcto?(si/no): si

 
Fin de código
PS C:\Users\PPI\Documents\Python language>
 

PYTHON AVANZADO: GENERADOR DE CODIGOS QR (1)

 

print("Inicio de código")
import time
print(time.asctime())
import pyqrcode
link = input("Favor ingrese el link completo del sitio web: ")
qcode = pyqrcode.create(link)
qcode.png('Mysite.png', scale = 10)
qcode.show()
print("Fin de código")
 
>>> RESPUESTA DE LA TERMINAL:
 
Copyright (C) Microsoft Corporation. Todos los derechos reservados.

Prueba la nueva tecnología PowerShell multiplataforma https://aka.ms/pscore6

PS C:\Users\Gaspar Soto\Documents\Python language> & "C:/Users/PPI/AppData/Local
/Programs/Python/Python310/python.exe" "c:/Users/PPI/Documents/Python language
/Clcoding/Clcoding_Pyqrcode.py"

Inicio de código
Sun Jun 26 09:42:22 2022
Favor ingrese el link completo del sitio web: 
https://learning-english-in-colombia.blogspot.com/
Fin de código

PS C:\Users\PPI\Documents\Python language> 
 
 

Entradas recientes

IA, Hugging Face, Aplicada a la ingeniería mecánica

Prompt for Gemini: ¿Cómo puedo aprovechar Hugging face desde Python? indícame ejemplos resueltos de aplicación relacionada con ingeniería m...

Entradas Populares