Básicos del Lenguaje

1

Guía de instalación y conceptos básicos

2

Archivos y slides del curso práctico de Python

3

IMPORTANTE: Instalando Ubuntu Bash en Windows para facilitarte el seguimiento del curso desde Windows.

4

¿Qué es la programación?

5

¿Por qué programar con Python?

6

Operadores matemáticos

7

Variables y expresiones

8

Presentación del proyecto

9

Funciones

10

Usando funciones en nuestro proyecto

11

Operadores lógicos

12

Estructuras condicionales

Uso de strings y ciclos

13

Strings en Python

14

Operaciones con Strings en Python

15

Operaciones con strings y el comando Update

16

Operaciones con strings y el comando Delete

17

Operaciones con strings: Slices en python

18

For loops

19

While loops

20

Iterators and generators

Estructuras de Datos

21

Uso de listas

22

Operaciones con listas

23

Agregando listas a nuestro proyecto

24

Diccionarios

25

Agregando diccionarios a nuestro proyecto

26

Tuplas y conjuntos

27

Tuplas y conjuntos en código

28

Introducción al módulo collections

29

Python comprehensions

30

Búsquedas binarias

31

Continuando con las Búsquedas Binarias

32

Manipulación de archivos en Python 3

Uso de objetos y módulos

33

Decoradores

34

Decoradores en Python

35

¿Qué es la programación orientada a objetos?

36

Programación orientada a objetos en Python

37

Scopes and namespaces

38

Introducción a Click

39

Definición a la API pública

40

Clients

41

Servicios: Lógica de negocio de nuestra aplicación

42

Interface de create: Comunicación entre servicios y el cliente

43

Actualización de cliente

44

Interface de actualización

45

Manejo de errores y jerarquía de errores en Python

46

Context managers

Python en el mundo real

47

Aplicaciones de Python en el mundo real

Conclusiones finales

48

Python 2 vs 3 (Conclusiones)

Clases bonus

49

Entorno Virtual en Python y su importancia: Python en el mundo real

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Strings en Python

13/49
Recursos

Los strings o cadenas de textos tienen un comportamiento distinto a otros tipos como los booleanos, enteros, floats. Las cadenas son secuencias de caracteres, todas se pueden acceder a través de un índice.

Podemos saber la longitud de un string, cuántos caracteres se encuentran en esa secuencia. Lo podemos saber con la built-in function global llamada len.

Algo importante a tener en cuenta cuando hablamos de strings es que estos son inmutables, esto significa que cada vez que modificamos uno estamos generando un nuevo objeto en memoria.

El índice de la primera letra es 0, en la programación se empieza a contar desde 0

Aportes 72

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

¿Por qué no fuiste mi profesor de programación en la universidad?
La motivación introductoria me habría servido mucho en ese tiempo

Cabe destacar que los Strings con dobles comillas pueden contener cualquier caracter dentro de ellos sin necesidad de utilizar barra diagonal, Por ejemplo:


variable = 'I\'m Gabriel'

sería lo mismo que:


variable = "I'm Gabriel"

Mi código comentado de este ejercicio, espero les sirva 😎👍

"""
En python las cadenas(strings), son secuencias a las que se pueden
acceder a través de un índice
cadena = "manzana"
cadena[0] = "m"
El índice de la primera letra es 0, en la programación se empieza a contar desde 0

"""

country = "México"
indice_country = country[1]
print("country[1] = ", indice_country)
print("El caracter en el espacio 1 es la letra 'é' ya que se comienza a contar desde 0 ")
print("Por lo cual")
indice_country = country[0]
print("country[0] = ",indice_country )

print('*' * 52)
print('Para conocer la longitud de un string se usa la función len()')
longitud_country = len('México')
print('En este caso al ejecutar la función len("México") sabemos que la cadena tiene una longitud de', longitud_country)
print('En este caso si se empieza a contar desde 1')


"""
Algo importante a tener en cuenta cuando hablamos de strings 
es que estos son inmutables, esto significa que cada vez que modificamos uno estamos generando un nuevo objeto en memoria.

"""
print('*' * 52)
print("Para conocer el espacio de memoria en donde se almacena una variable")
print("Se ejecuta la funcion id()")

country = "México"
id_country = id(country)
print("Por ejemplo el string 'México' se almacena en la dirección: ", id_country)

country = "Mexico"
id_country = id(country)
print("El string 'Mexico' se almacena en la dirección: ", id_country)

country = "Canada"
id_country = id(country)
print("El string 'Canada' se almacena en la dirección: ", id_country)



input()

Hasta ahora logre corregir mi codigo que intente hacer el primer dia del curso
me encanto el Turtle y moverlo con las teclas a,s,d,w esta genial!!!

import turtle as t

tortuga =t.Screen()
t.speed('fastest')
grados=0


#tortuga = turtle.Turtle()


def RI():
    global grados
    if (grados == 0):
        t.setheading(grados)
        t.forward(10)
    else:
        grados=0
        t.setheading(grados)
        t.forward(10)


def LI():
    global grados
    if (grados == 180):
        t.setheading(grados)
        t.forward(10)
    else:
        grados=180
        t.setheading(grados)
        t.forward(10)


def UP():
    global grados
    if (grados == 90):
        t.setheading(grados)
        t.forward(10)
    else:
        grados=90
        t.setheading(grados)
        t.forward(10)


def DO():
    global grados
    if (grados == 270):
        t.setheading(grados)
        t.forward(10)
    else:
        grados=270
        t.setheading(grados)
        t.forward(10)


tortuga.onkey(LI,"a")
tortuga.onkey(RI,"d")
tortuga.onkey(UP,"w")
tortuga.onkey(DO,"s")
tortuga.listen()
t.done()

Mutabilidad Inmutabilidad y Referencia
**Mutables ** --> Listas
Inmutables --> Int - String - tuplas

Los valores enteros, strings y las tuplas utilizan un espacio de memoria especifico.

>>> x=34
>>> y=x
>>> print(x)
34
>>> print(y)
34
>>> x=10
>>> print(x)
10
>>> print(y)
34

Las listas funcionan como un apuntador en memoria, entonces cuando se asigna una nueva variable a la lista, se referencia al mismo apuntador. Las dos variables tienen el mismo espacio de memoria - “Son la misma variable”. Termina siendo un Puntero de la variable.

>>> x=[1,2,3,4]
>>> y=x
>>> print(y)
[1, 2, 3, 4]
>>> x[0]=5
>>> print(y)
[5, 2, 3, 4]
>>> y is x
True
>>> id(x)
2600461917256
>>> id(y)
2600461917256

Además de ser un gran profesor, dice una gran verdad respecto a Platzi, a diferencias de seguir otros curso tutoriales en YouTube, acá los alumnos son pieza clave del aprendizaje, ya que ellos dan datos interesantes y además te ayudan con las dudas que tienes.

Las explicaciones son muy sencillas. Se le desborda la pasion.

¿Cuál sería una función para checkear que un string es un palindromo ( se lee igual de adelante hacia atrás que de atrás hacia adelante)?:

def checkPalindrome(inputString):
    return inputString == inputString[::-1]

Ej. : “2002” o “abba” daría true y “abab” daría false

es importante que tengan tambien presente la representación el codigo de caracteres,
cuando el profesor dice que es diferente una variable minuscula y una mayuscula, es por que el codigo ascii interviene y lo almacena diferente, chequen la siguiente imagen.

Muy bien explicado. EL curso va mejorando 😉

Hola David,

¿Podrías poner un ejemplo de para que sería útil la función Id() en un caso real? ¿Sería para temas de perfomance de la aplicación?

Muchas gracias

⛓ Strings en Python 🐍

.
Excelente manera de iniciar con el tema de los Strings que me parece es muy importante conocer la manera de manipularlos pues. Conocer los métodos que se pueden aplicar te ayudará a ahorrarte mucho tiempo.
.

en que se ocuparia el lugar de memoria ???

Este capitulo estuvo genial , muy bien explicado … Al final que habla luego de sumarle un caracter al string cambia el numero de id , creo que tiene que ver con la suma que hace la UAL de la compu para poder ejecutar esa instrucción pero bueno eso ya es un tema de otro lado y se va por las nubes 😃 yo lo vi el año pasado en la facultad en la materia SIstemas de Computación I y II en donde empece a programar en ASSEMBLER. (lo sé es una locura) ajajaja ! muchas gracias por la info !!!

cada caracter tienen una direccion propia , los strings forman direcciones nuevas ovbiamente por la combinacion y reutilizacion de caracteres

>>> a = 'CCCCCC'; b = 'CCCCCCCC'
>>> d = a[-1] ; v = b[-2]
>>> id(d); id(v)
140204090128232
140204090128232

Si queremos reversar un string, con slicing es muy sencillo

a = 'Andres'
print(a[::-1] # print 'serdnA'

El método id(objeto) nos regresa la dirección de memoria donde se encuentra un valor de Python.

muy buen apunte al manejo de memoria en python y su reutilización

Funcion palindromo en una linea

word_check = input('Insert the word to check: ')

print(f"{word_check} is palindrome") if word_check == word_check[::-1] else print(f"{word_check} is not palindrome")

Para los que no conocen esta página se las recomiendo al 100%, es muy buena para aprender y aclarar dudas de documentacion.
https://www.w3schools.com/python/python_strings.asp

Gracias, un tema totalmente desconocido para mi, hasta ahora

Función
id(object)
Esta función retorna un integer 32bit (o long integer 64bit) que representa la posicion en memoria del object. Cabe resaltar que dos object no pueden tener el mismo valor de id al mismo tiempo.

Ref:
Stackoverflow

muy buena la explicación del espacio en memoria

Super!!

Es interesante el método de enseñanza, implícitamente evita que veas cosas obvias del lenguaje, por ejemplo explica las funciones cuando realmente las usa, no se dedica a sacar un listado y nombrarlas, lo demostró al imprimir en pantalla print() y al capturar entrada input()… vamos bien

Me gusta cómo este curso va mostrando desde lo más simple, cuando manejas otro lenguaje de programación a veces es un poco repetitivo pero me ayuda a ver las diferencias fundamentales, el maestro es muy carismático
.

interesante la similitud que tiene python a C para acercarse a la memoria.

Cuantos bits hay en un espacio de memoria ??
Cual es el limite de caracteres por ID???

Cuando modifico un String cambia de lugar en memoria. ¿El lugar que usaba antes queda liberado?.

sigan adelante se que al principio mientras mas aprendes mas te sientes perdido el truco es continuar ser constante y tu puedes soldado! yo se que puedes
Ciertamente las tuplas son inmutables, pero también pueden contener objetos mutables, estes es un ejemplo: `my_tuple = ([1,2],['a','b'])` `my_tuple[1].append('c')` `my_tuple= ([1,2],['a','b','c'])` En este caso los objetos dentro de la tupla han cambiado, mientras que el id del espacio en memoria sigue siendo el mismo.(puedes hacer la prueba en el interprete de python con id(my\_tuple) como lo explica el prof.) Es un ejemplo de que las tuplas pueden contener listas, diccionarios y otros tipos de objetos mutables. Lo principal aqui es entender que estas cambiando los objetos mutables dentro de la tupla , no la tupla por si misma.

Interesante el memory address, buena explicación
Good += 'one'

nombre = "marcos"

nombre.capitalize()	#Convierte el primer carácter en mayúsculas
nombre.casefold()	#Convierte una cadena en minúsculas
nombre.center()	#Devuelve una cadena centrada
nombre.count()	#Devuelve el número de veces que un valor especificado se produce en una cadena
nombre.encode()	#Devuelve una versión codificada de la cadena
nombre.endswith()	#Devuelve true si los extremos de cadena con el valor especificado
nombre.expandtabs()	#Establece el tamaño de la pestaña de la cadena
nombre.find()	#Busca la cadena de un valor especificado y devuelve la posición de donde fue encontrado
nombre.format()	#Formatos especifican los valores de una serie
nombre.format_map()	#Formatos especifican los valores de una serie
nombre.index()	#Busca la cadena de un valor especificado y devuelve la posición de donde fue encontrado
nombre.isalnum()	#Devuelve verdadero si todos los caracteres de la cadena son alfanuméricos
nombre.isalpha()	#Devuelve True si todos los caracteres de la cadena están en el alfabeto
nombre.isdecimal()	#Devuelve True si todos los caracteres de la cadena son decimales
nombre.isdigit()	#Devuelve verdadero si todos los caracteres de la cadena son dígitos
nombre.isidentifier()	#Devuelve True si la cadena es un identificador
nombre.islower()	#Devuelve verdadero si todos los caracteres de la cadena son minúsculas
nombre.isnumeric()	#Devuelve verdadero si todos los caracteres de la cadena son numéricos
nombre.isprintable()	#Devuelve verdadero si todos los caracteres de la cadena son imprimibles
nombre.isspace()	#Devuelve True si todos los caracteres de la cadena son espacios en blanco
nombre.istitle()	#Devuelve True si la cadena sigue las reglas de un título
nombre.isupper()	#Devuelve True si todos los caracteres de la cadena son mayúsculas
nombre.join()	#Se une a los elementos de un iterable al final de la cadena
nombre.ljust()	#Devuelve una versión justificada izquierda de la cadena
nombre.lower()	#Convnombre.ierte una cadena en minúsculas
nombre.lstrip()	#Devuelve una versión de ajuste izquierdo de la cuerda
nombre.maketrans()	#Devuelve una tabla de traducción para ser utilizado en traducciones
nombre.partition()	#Devuelve una tupla donde la cadena se separó en tres partes
nombre.replace()	#Devuelve una serie en un valor especificado es reemplazado con un valor especificado
nombre.rfind()	#Busca la cadena de un valor especificado y devuelve la última posición de donde fue encontrado
nombre.rindex()	#Busca la cadena de un valor especificado y devuelve la última posición de donde fue encontrado
nombre.rjust()	#Devuelve una versión justificada derecha de la cadena
nombre.rpartition()	#Devuelve una tupla donde la cadena se separó en tres partes
nombre.rsplit()	#Divide la cadena en el separador especificado y devuelve una lista
nombre.rstrip()	#Devuelve una versión ajuste correcto de la cadena
nombre.split()	#Divide la cadena en el separador especificado y devuelve una lista
nombre.splitlines()	#Divide la cadena en los saltos de línea y devuelve una lista
nombre.startswith()	#Devuelve true si la cadena comienza con el valor especificado
nombre.strip()	#Devuelve una versión recortada de la cadena
nombre.swapcase()	#Permutas de los casos, se convierte en minúsculas mayúsculas y viceversa
nombre.title()	#Convierte el primer carácter de cada palabra en mayúsculas
nombre.translate()	#Devuelve una cadena traducida
nombre.upper()	#Convierte una cadena en mayúsculas
nombre.zfill()	#Rellena la cadena con un número determinado de valores de 0 a principios

Strings in Python

Importante lo que dice “Aprender a buscar tus propias respuestas”. Ya en el trabajo real uno ve cosas tan raras que toca buscar en foros.

Muchas gracias por la explicación instructor David, ahora comprendo mejor el funcionamiento de los Strings en cuando a su ubicación en memoria y que pasa al momento de alterarlos.

Strings

Son cadenas de caracteres, al ser cadenas pueden accederse a la secuencia dentro de ellas a través de un índice.

Los strings son inmutables, es por esto, que si realizamos alguna modificación a la cadena de caracteres este será almacenado en un nuevo espacio en memoria.

Python reutiliza las letras, es por esto que si dos variables diferentes contienen el mismo caracter, las dos apuntarían al mismo espacio en memoria. Esto también explica porqué si se modifica un string este tiene que cambiar de dirección en memoria,

casefold()

El método casefold() para los strings, es parecido al método lower() que convierte los caracteres a minúsculas pero más agresivo, ya que el método casefold() elimina todas las distinciones que se presentan dentro de un string.

Puede ser usado cuando se comparan strings, ya que permite, una comparación directa sin importar las mayúsculas o minúsculas dentro de los strings a comparar.

  • Los strings son secuencias de caracteres y las secuencias se pueden acceder a través de un indice.
  • La función global len nos muestra la longitud de la secuencia.
  • Los caracteres que componen un string se reutilizan a lo largo del programa para ahorrar memoria.

¡Excelente David!
¡Cada vez me gusta mas Python!

Al trabajar con objetos inmutables, como son las cadenas o strings, Python se ve en la necesidad de generar nuevos objetos si es que nosotros deseamos modificarlas

Comprobando que el valor de la letra “a” en ambas posiciones de España es la misma, e igual que cualquier otra “a”

>>> pais ="España"
>>> id(pais[5])
4925248
>>> letra_a = pais[3]
>>> id(letra_a)
4925248
>>> "a" == letra_a
True
>>> letra_a == pais[5]
True

Amigos recomendaria leer respecto al docstring de python, es una muy buena practica ademas de ayudar al programador.

Vamos de nuevo!!

Porque cuando no utilizamos el operador de asignación, y solo uso el signo de suma, el ID de la variable no cambia?

Hay que darse con muchos muros para poder aprender, lo importante es volver a intentar y seguir con tu camino

Esta empatía de entrada es lo que hace falta, muchas gracias crack 😃

Excelente profesor

excelente clase me encantó!

Immutable Sequence Types
The only operation that immutable sequence types generally implement that is not also implemented by mutable sequence types is support for the hash() built-in.

This support allows immutable sequences, such as tuple instances, to be used as dict keys and stored in set and frozenset instances.

Attempting to hash an immutable sequence that contains unhashable values will result in TypeError.

¿Cuando asignamos una variable, y con la función id(mi_variable), esta muestra el espacio en memoria que ocupa la variable? O el espacio que ocupa dicho string?

Que significa que el profe use ‘_def_algo’ ?

Excelente, aprendi otra forma de acceder a un caracter por su posición.

también se puede hacer algo así con un string:

for l in ‘hello world’:
print(l)

Muy bueno aclarar las comillas adentro del string! mayor entendimiento del mensaje.

Los strings son inmutables.

Una característica interesante que encontré es que los strings se pueden concatenar sin la necesidad del operador de suma (+).

'Hola' ' ' 'mundo' # Da como resultado Hola mundo.

También al multiplicar un string con un valor booleano se obtienen resultados interesantes (tal como multiplicar por 1 o 0).

a = 'Texto'
a * True   # Da como resultado Texto.
a * False # Da como resultado una cadena vacía.

Al multiplicar un string con números negativos se obtiene como resultado una cadena vacía.

a = 'Texto'
# La siguientes operaciones dan como resultado una cadena vacía.
a * -1
a * -120

Se puede también cambiar las mayusculas de un string utilizando algunas funciones como, upper(). Dejo lo que pude investigar adicional, espero les pueda servir:

Entendido

>>> id('David Baez')
140413259880880
>>>

Aplicando algunas funciones al programa

clients = 'Tomas,Juan,'

def create_client(client_name):
    global clients
    if client_name not in clients:
        clients += client_name 
        _add_comma()
    else:
        print("Client already is in the client\'s list!")
    


def list_clients():
    global clients
    print(clients)

def _add_comma():
    global clients
    clients +=','

def _print_welcome():
    print("WELCOME TO PLATZI VENTAS")
    print("-" * 50)
    print("what would you like to do today!")
    print("[C]reate a CLient")
    print("[D]elete a Client")

    

if __name__ == '__main__':
    
    _print_welcome()

    command = input()
    if command.upper() == "C":
       client_name = input("What is the client name?: ")
       create_client(client_name.title())
       list_clients()

    elif command == "D":
        pass
    else:
        print("Invalid command")

Aqui dejo un link de un libro de ayuda muy practico y conciso
https://uniwebsidad.com/libros/python/capitulo-6/metodos-de-formato

¡Gran clase!

Es bueno saber lo del almacenamiento, Gracias!

Que buen dato… id()

Según entiendo, entonces cambia el lugar en memoria al modificar un string, eso quiere decir que el campo anterior se libera en memoria. Si me equivoco por favor corregirme.

id(): Donde se encuentra en meoria

Si modificamos un string, este pasa a ser otro objeto diferente y deja de tener el mismo id en memoria.

Podemos localizar la dirección de memoria con caracteres.

Todos los caracteres en Python se reutilizan.

“En la programación empezamos a contar desde cero”. Julia ahora ha cambiado eso. Tanto dolor que me costó asumir eso, y ahora pam! viene un lenguaje y lo cambia. No es justo.

id(): Es una funcion que nos retorna el valor en memoria de una variable

estupendo sigamos u.u