¿Por qué no fuiste mi profesor de programación en la universidad?
La motivación introductoria me habría servido mucho en ese tiempo
Básicos del Lenguaje
Guía de instalación y conceptos básicos
Archivos y slides del curso práctico de Python
IMPORTANTE: Instalando Ubuntu Bash en Windows para facilitarte el seguimiento del curso desde Windows.
¿Qué es la programación?
¿Por qué programar con Python?
Operadores matemáticos
Variables y expresiones
Presentación del proyecto
Funciones
Usando funciones en nuestro proyecto
Operadores lógicos
Estructuras condicionales
Uso de strings y ciclos
Strings en Python
Operaciones con Strings en Python
Operaciones con strings y el comando Update
Operaciones con strings y el comando Delete
Operaciones con strings: Slices en python
For loops
While loops
Iterators and generators
Estructuras de Datos
Uso de listas
Operaciones con listas
Agregando listas a nuestro proyecto
Diccionarios
Agregando diccionarios a nuestro proyecto
Tuplas y conjuntos
Tuplas y conjuntos en código
Introducción al módulo collections
Python comprehensions
Búsquedas binarias
Continuando con las Búsquedas Binarias
Manipulación de archivos en Python 3
Uso de objetos y módulos
Decoradores
Decoradores en Python
¿Qué es la programación orientada a objetos?
Programación orientada a objetos en Python
Scopes and namespaces
Introducción a Click
Definición a la API pública
Clients
Servicios: Lógica de negocio de nuestra aplicación
Interface de create: Comunicación entre servicios y el cliente
Actualización de cliente
Interface de actualización
Manejo de errores y jerarquía de errores en Python
Context managers
Python en el mundo real
Aplicaciones de Python en el mundo real
Conclusiones finales
Python 2 vs 3 (Conclusiones)
Clases bonus
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
David Aroesti
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
¿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
.
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?.
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.
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,
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.
len
nos muestra la longitud de la secuencia.¡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!!
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
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?