VARIABLES
cada variable está conectada a una valor, que es la información asociada con esa variable.
- puede contener solo letras. numrtos y _ . no pueden empezar con numeros
- no se pueden los espacios por eso usasa el _
- no usar python keywords
- cortos pero descriptivos
GLOSARIO
traceback — te ayuda a encontrar donde esta el error
method — acción que python puede hacer en una data, están seguidos de parentesis.
TIPOS DE DATOS
None — reservo un espacio de memoria vacio = none no tiene nada
STRING - str
serie de caracteres , todo adentro de comillas “ “
F-STRINGS
-To insert a variable’s value into a string, place the letter f immediately before the opening
quotation mark
first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
print(full_name)
Python has three different ways to accomplish string formatting:
• Using the % Method
• Using .format()
• Using formatted string literals (f-strings)
The most common use of using the % sign is when you would use %s, which means convert
any Python object to a string using str().
1 >>> name = 'Mike'
2 >>> print('My name is %s' % name)
3 My name is Mike
FORMAT
1 >>> print('Hello {1}. You must be at least {0} to continue!'.format(
2 first_name, age))
3 Hello 18. You must be at least Mike to continue!
ACORDARSE EN PYTHON EMPIEZA DESDE EL 0 1 2 3 …
ESPACIO
se usa con \ y si quero q arranque tipo abajo onda lista es \n y combinado los dos \n\
>>> print("Python")
Python
>>> print("\tPython")
Python
como eliminar espacio – rstrip()
si yo agrego una vez solo se me borra temporalmente , si lo vuelvo a printear ala variable
sigue el espacio ahora si y quiero q sea permanente vuelvo a denominar la variable
>>> favorite_language = 'python '
>>> favorite_language = favorite_language.rstrip()
>>> favorite_language
'python'
lstrip — left rstrip — right strip – ambos lados
BORRAR PREFIJOS
.removeprefix(“lo q queres borrar”) — acordarse si queres hacerlo definitivo tenes q volver
nombrar la variable
>>> nostarch_url = '[Link]
>>> nostarch_url.removeprefix('[Link]
'[Link]'
>>> simple_url = nostarch_url.removeprefix('[Link]
ERRORES
syntax error — no reconoce una parte como un codigo valido, ejemplo apostrofes y comillas
en un string si usas ‘ en un momento de la frase no podes usar ‘ para abrir y cerrar.
NÚMEROS
INTEGERS – enteros . + - * ** /
FLOAT – decimal en las operaciones te devuelve float.
para no perderte con los ceros podes usar _ 14_000_000
MULTIPLE ASSIGNMENT >>> x, y, z = 0, 0, 0 separas la variable y el dato con comas
CONSTANTES variable que el valor queda igual , escribi el nombre de lavariable en
mayúscula
COMENTARIOS — # – que se supone que tiene que hacer
Operador | Descripción
---------|------------
** | Potencia (Exponenciación)
\+ - | Cambio de signo (unarios)
\* / // % | Multiplicación, división y módulo
\+ - | Suma y resta
<, <=, >, >=, ==,!= | Comparacion
not x | no lógico
and |y lógico
or |o lógico
10/3 = 3.33333
10//3 = 3 división entera
10%3 = 1 resto división entera
Cambios de tipo
cálculo= 10
div = cálculo / 3
entero = int(div)
COMPARAR STRING — tabla ascii
* Es un patrón estandard que permite representar 127 caracteres o símbolos.
* Cada símbolo del código Ascii está asociado a un número que indica su posición dentro de
la tabla de caracteres.
* Los primeros símbolos desde el 0 al 31 corresponden a caracteres de control no
imprimibles, por ejemplo cambio de linea, tabulador, retroceder, etc
* Los símbolos correspondientes entre las posiciones 65 y 90 representan las letras
mayúsculas del alfabeto.
* Los símbolos correspondientes entre las posiciones 48 y 57 representan los caracteres
numéricos entre 0 y 9.
* Para transformar los símbolos de las letras mayúsculas a minúsculas se le debe sumar 32
y viceversa.
● **ord()**: Permite determinar el valor numérico de un caracter del código ASCII.
● **chr()**: Permite conocer el caracter del código ASCII segun un valor numérico.
○ chr(97)+chr(45) —> a-
y despues le resto/sumo 32
COMO EXTRAIGO
anios= “ 33 a;os”
edad= anios[0] + anios[1]
— me va a dar edad=”33” si hago edad *2 me va a dar 3333 lo tengo q pasar a INT
edad = int(edad)*2 — 66
NO hacer int(“a”) esto es error no va ahi uso ord de la tabla ascii
OPERADORES LOGICOS – devuelve un valor BOOL
● == es igual a
● AND V si los dos son V
● OR V si alguno de los dos es V <br class
● NOT invierte
BOOL() – and devuelve el de la derecha
or el de la izquierda si es interpretado como VA si es 0 o F devuleve el de la
derecha SIempre primero resuelve los AND y despues los OR
num = 3
comp = num == 3
comp es igual a num (3) num es igual a 3 ? — TRUE
comp2 = num comp2 copia y no se engancha
num = 4 num pasa a valer 4 pero comp2 sigue valiendo 3
LISTAS –
colección de items en un orden particular. se usan [] se parado por comas. para acceder a
un elemento le indicas la posición/index . ARRANCA EN 0 !!! para retornar el ultimo
elemento es -1 tipo si pones - es como q va de atras para adelante. Son dinamicas -
agregar o sacar. para modificar algun elemento usas le nombre de la lista seguido por el
index.
Agregar —- APPEND
[Link]( ‘que queres agregar’) -
INSERT
[Link](0, ‘q queres’) - si queres en un lugar especifico
DELETE
del nombredelitsa[index]
POP() - elimina el ultimo item en la lista o si pones el index ese item
.REMOVE(nombre)
SORT – permanente
.sort() — alfabeticamente y de atras a adelante .sort(reverse=True)
SORTED – temporal
REVERSE()
LENGHT – len(nombredelista) – cuantos items tiene
con lista o variables
nombre = “leo”
len(nombre) – 3
inicial = nombre[4] – error no hay
INDEX
El formato es `[start:stop:step]` donde:
* `start`: posición del primer caracter a sacar. Por default: el primero disponible (depende de
step)
* `stop`: siguiente posición al último a sacar. Por default: el siguiente al último disponible
(depende de step)
* `step`: el salto o incremento entre los índice seleccionados. Por default: 1
s[-1::-1] ## Toda la cadena de atrás hacia adelante
FOR
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
los ítems de la lista asociarlos a la variable magician,
“For every magician in the list of magicians, print the magician’s name.”
se repite por cada item de la lista
ERRORES COMUNES
● indent — indent the line after the for statement in a loop.
salvo que quiera q solo aparezca una vez al final tipo gral ahi no lomhago
espacio.
● Colon - al final del FOR :
RANGE : ejemplo for value in range(1, 6): print(value)
LIST(): convierte a lista
min max sum
LIST COMPREHENSION – llevar el código a una sola línea
SLICING – [ : ] [ :4] empieza desde el principio
COPY [ : ]
TUPLAS
NO se pueden modificar. con Parentesis y comas
IF
● == es igual a
● != distinto de
● AND , OR
● IN para saber si un item esta dentro de una lista
● NOT si no aparecen en una lista
banned_users = ['andrew', 'carolina', 'david']
user = 'marie'
if user not in banned_users:
print(f"{[Link]()}, you can post a response if you wish.")
● > >= < <=
IF ELSE
el else ayuda a q se haga una accion cuando el test condicional falla
if conditionaltest :
do something
age = 17
1 if age >= 18:
print("You are old enough to vote!")
print("Have you registered to vote yet?")
2 else:
print("Sorry, you are too young to vote.")
print("Please register to vote as soon as you turn 18!")
IF-ELIF-ELSE
age = 12
if age < 4:
price = 0
elif age < 18:
price = 25
else:
price = 40
print(f"Your admission cost is ${price}.")
MULTIPLE ELIF
no si o si hay q tener un else al final, e else match cualquier condicion que no fue
matcheada por un especifico if or elif – x eso recomendable usar elif al final
Python doesn’t run any tests beyond the first test that passes in an if-elif-else chain.
si pasa queda ahi if 'mushrooms' in requested_toppings:
print("Adding mushrooms.")
elif 'pepperoni' in requested_toppings:
print("Adding pepperoni.")
elif 'extra cheese' in requested_toppings:
print("Adding extra cheese.")
if you want only one block of code to run, use an if-elif-else chain. If more than one block of
code needs to run, use a series of independent if statements.
IF-ELSE dentro de FOR y viceversa
for requested_topping in requested_toppings:
if requested_topping == 'green peppers':
print("Sorry, we are out of green peppers right now.")
else:
print(f"Adding {requested_topping}.")
print("\nFinished making your pizza!")
requested_toppings = []
if requested_toppings:
for requested_topping in requested_toppings:
print(f"Adding {requested_topping}.")
print("\nFinished making your pizza!")
else:
print("Are you sure you want a plain pizza?")
-Are you sure you want a plain pizza? pq la lista esta vacia
If the list is not empty, the output will show each requested topping
being added to the pizza.
MÚLTIPLES LISTAS
available_toppings = ['mushrooms', 'olives', 'green peppers',
'pepperoni', 'pineapple', 'extra cheese']
requested_toppings = ['mushrooms', 'french fries', 'extra cheese']
for requested_topping in requested_toppings:
if requested_topping in available_toppings:
print(f"Adding {requested_topping}.")
else:
print(f"Sorry, we don't have {requested_topping}.")
print("\nFinished making your pizza!")
Adding mushrooms.
Sorry, we don't have french fries.
Adding extra cheese.
Finished making your pizza!
IF para chequear listas
Si TIENE algo: primero va el for y despues va el if
requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
for requested_topping in requested_toppings:
if requested_topping == 'green peppers':
print("Sorry, we are out of green peppers right now.")
else:
print(f"Adding {requested_topping}.")
print("\nFinished making your pizza!")
suponiendo q ya no hay mas stock de green peppers
si NO tiene algo: primero el if y desp el for para ver si la lista no este vacia
requested_toppings = []
if requested_toppings:
for requested_topping in requested_toppings:
print(f"Adding {requested_topping}.")
print("\nFinished making your pizza!")
else:
print("Are you sure you want a plain pizza?")
DICCIONARIOS
coleccion de key value pairs, cada key esta conectada a un value, entre llaves {} .
dinamicos y retain the order in which they were defined.
{ ‘key’ : value, }
Acceder al valor en un dicc
print(nombre_de_dicc [‘key’])
Adding new key-value pairs
nombre_de_dic[‘key’] = value
Empezar con dicc vacio
nombre = {}
y agregas
CAMBIAR VALUE
simplemente como adding new nombre[‘key’]= nuevovalue
USAR CON IF-ELIF
if nombre[‘key’] =<> etc conditional test :
REMOVING KEYVALUE PAIR
del nombre[‘key’]
USING GET() TO ACCESS VALUES
gral para q te responda otra cosa si te tira error / q no tine
The get() method requires a key as a first argument. As a second optional
argument, you can pass the value to be returned if the key doesn’t exist:
alien_0 = {'color': 'green', 'speed': 'slow'}
point_value = alien_0.get('points', 'No point value assigned.')
print(point_value)
si points no existe me tira el segundo, la primera es true y la seg de false
LOOP Y DICC
for key, values in [Link]() (regresa key values pairs)
The for loop then assigns each of these pairs to the two variables provided.
ej for key, value in user_0.items():
le pones el nombre de las variables
print(f"\nKey: {key}")
print(f"Value: {value}")
Key: username
Value: efermi
Key: first
Value: enrico
Key: last
Value: fermi
- .KEYS() : me trae las key
- for name in sorted(favorite_languages.keys()).
- VALUES() method to return a sequence of values without anykeys.
SET
coleccion donde cada item debe ser unico
set( __): hace un set de lo q le pusiste sin los duplicados
NESTING
uno dentro de otro
LIST OF DICTIONARIES
dicc1= { }
dicc2 = {}
dicc3 ={}
lista = [ dicc1, dicc2, dicc3]
RANGE(numero) cuantas veces quiero q e repita el loop
LIsta DENTRO de dicc
ej pizza = {
‘crust’: ‘thick,
‘toppings’ : [ ‘cheese’ , ‘etc’ ]
}
USER INPUT AND WHILE LOOPS
The INPUT() function pauses your program and waits for the user to enter
some text.
takes one argument: the prompt that we want to display to the user, so they know what kind
of information to enter. In this example, when Python runs the first line, the user sees the
prompt Tell me something, and I will repeat it back to you: . The program waits while the
user enters their response and continues after the user presses ENTER. The response is
assigned to the variable message, then print(message) displays the input back to the user
Considera lo q el user ingreso como un string si quisiera un texto deberia poner adelante un
int(_)
age = input(“edad? “)
age=int(age)
MODULE OPERATOR
% divide los numeros y te devuelve el resto
Clase 19/8
PRINT()
concatenación — juntar cadenas – print(‘hola ‘ + nombre) o print(‘hola’, nombre)
si yo quisiera poner hola-leandro > print(‘hola’ , nombre, sep=’-’)
salto de linea \n 1 caracter
INPUT
CAST— int(input(‘numero’)
IF -ELIF -ELSE
diferencias
si aplica cierrta cosas solo en algunas cosas si no sucede sigue su rumbo
- caso 2 : si es mayor entra si no es mayor . sucede algo si no sucede otra
cosa pasa
- caso 3 : multiples condiciones
-
usar tab
if edad >= 18:
print(‘bienvenido’, nombre)
else :
print(‘no entra’)
print(“chau”)
OJO CON LOS TAB
ELIF – evalua el if tipo evalua el primero si no cumple cae en el segundo . CAMINO
UNO AL MISMO TIEMPO. puede caer en ninguno si NO tiene el else pq el else abarca
todo lo q queda afuera
if edad>=19:
if edad>= 25: aca ya tiene +19 pero quiere ver si
if NOT edad <18: – te dice si es mayor o igual te lo niega — logica
if edad >= 25:
print (“ “) este es independiente
if edad < 18 :
elif
else
none “ 0 es false
WHILE
count up through a series of numbers
lo uso para cuando hay una accion que se repite
mientras variable condicion :
hace esto
Para cortar
!=
prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
message = ""
while message != 'quit':
message = input(prompt)
if message != 'quit':
print(message)
output
Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. Hello everyone!
Hello everyone!
Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. Hello again.
Hello again.
Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. quit
+= es como poner variable = variable + 1
Flag – que runes mientras the flag is set to true y para cuando algun events sets the value to
false
prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
active = True
1 while active:
message = input(prompt)
if message == 'quit':
active = False cambia la flag
else:
print(message)
Usar break (aca en este curso no lo puedo usra
Ciclos infinitos
pass no cambia el valor true/false si a vale menor q 5
a=1
while a < 5:
pass ## El pass me permite probar la instruccion, pero No hace nada
Entonces:
* Si `a` no cambia dentro del bloque de código, sigue valiendo 1 por siempre.
* Entonces la condición sigue dando `True` por siempre
* Por lo tanto el ciclo se vuelve *infinito*, no termina nunca.
Si tenemos una condición en el `while`, cuyos operandos no cambian con la ejecución del
bloque de instrucciones, difícil va a ser que el resultado de la evaluación de la condición
cambie y por tanto el `CICLO NUNCA TERMINARÁ`.
`IMPORTANTE:` Los ciclos infinitos son unos de los errores más comunes al comenzar a
programar. Siempre que escriban un `while` asegúrense de poder contestar estas
preguntas:
* ¿Tengo dadas las **condiciones para entrar** al while?
* ¿Tengo dadas las **condiciones para salir** del while?
hay algo q haga q la condicion cambie a false?
Si queda atrapado CRTL -C
Usar While para proceso de validacion de entrada
ej
numero= int(input(‘ingrese un numero positivo entero: ‘ ))
while (numero <=0)
numero= int(input(‘Error ingrese un numero positivo : ‘))
print(‘numero: ‘ , numero)
print(‘el doble: ‘ , numero*2)
—--------------------------------------
ingreso = input("Ingrese un número entero positivo")
i=0 ## Indice para recorrer los caracteres del ingreso
sintaxis_ok= True
while i<len(ingreso) and sintaxis_ok :
if '0' > ingreso[i] or ingreso[i]> '9': # Valido si el caracter ingreso[i] es
sintaxis_ok= False # mayor o igual a '0' (caracter 0 en la
# tabla aSCII) o, menor o igal que '9'
# El resultado bool de esa expresión
# queda almacenado en sintaxis_ok
i+=1 # Se Incrementa el valor de i para seguir
# recorriendo la cadena introducida `ingreso`
# Fin del while
if sintaxis_ok:
ingr_int = int(ingreso)
print('La cadena Ingresada se puede transformar en un numero entero:', ingr_int)
else:
print('La cadena Ingresada NO se puede transformar en un numero entero')
—------------------------------------
cantidad = 1
# INICIO WHILE A #################################
while cantidad <10:
########## INICIO BLOQUE CODIGO WHILE A DONDE SE PEDIRAN LOS
NUMEROS AL USUARIO########
numero = int(input("Ingrese un número entero positivo"))
#### INICIO WHILE B PARA VALIDAR EL VALOR DEL NUMERO INGRESADO #####
while ( numero <= 0 ):
# INICIO BLOQUE CODIGO WHILE B ###################
numero = int(input("Ingrese un número entero positivo"))
# FIN BLOQUE CODIGO WHILE B ######################
print(numero)
cantidad+=1
# FIN BLOQUE CODIGO WHILE A #########################
# FIN WHILE A ##################################
Using continue para salir
return to the beggining of the loop based on the result of a conditional test
.ALGO BREAK CONTINUE NO PUEDO USAR
caracteres — len
pwd = input (‘ ‘)
if len(pwd) < 8 :
tengo q pensar en que falla para volver a pedir
pwd = input (‘ ‘ )
que pasa aca si me equivoco otra vez no me toma el error por eso uso while
pensar el usuario como el enemigo que se equivoca
while le(pwd)<8:
pwd= ‘ input ( )
print (‘hola’) si imprime esto es pq ya tiene 8 o mas caract
validar
dni= (input(‘ ‘ ) pensar q podria meter sin querer una letra entonces tengo q validar si son
num
1234L56
[ 1: 3: :6 ] – slicing una parte d ela cadea
[ 2] extraer un carcter
i = 0 (va incrementar hasta la longitud de dni - contador )
ord chr es si o si necesario cuando quiero pasar de un minuscula a mayuscula
while i < len(dni) :
if dni[i] < ‘0’ or dni[i] > ‘9’: #(comillas pq , esta comparando str con str )
print(‘error’) #or pq no puede estar al mismo tiempo en dos lugares
i+=1 ( el while va a cortar cuando i valga 8) (OJO con el tab)
otra manera
valido = true (asumo q es valido ) (si encuentro una letra hago q mi valido pase a false)
while i < len(dni) :
if dni[i] < ‘0’ or dni[i] > ‘9’: #(comillas pq , esta comparando str con str )
print(‘error’) #or pq no puede estar al mismo tiempo en dos lugares
valido= false
i+=1 ( el while va a cortar cuando i valga 8) (OJO con el tab)
if valido == true: (esta fuera del while)
pint(‘oka’)
PENSAR EN CONDICIÓN DE CORTE
*pq no adentro del if – pq yo si esta mal o este mal quiero q pase al siguiente
* ponele q le pongo
else:
i+=1 ( a12) nunca va a entrar al else y se convierte en un loop pq i
queda en 0 y va a validar a por siempre
- while i < len(dni) and valido == true :
if dni[i] < ‘0’ or dni[i] > ‘9’:
pint (‘error’)
valido = false
dni= input (‘ ‘ )
valido = true
i = -1
i+= 1
- if valido == true :
2/9
cumpla más de una condición
VALIDEMOS… = WHILE
boleano q nos indique q toda la cadena con todas sus cond es valido o no
1ero [0 - 9]
len(10)==10
pido el dato y asumo q es correcto
valido = False
while valido == False
num= input(‘...’)
valido =True #termina cuando ejecuta toda la iteración
if len(num) != 10:
valido = False
if num[0] < ‘0’ or num[0] > ‘9’: #pensar negativo logica
valido= False
ahora es una cadena de 10 numeros
valido = False
while valido == False #fuerzo a q entre
num= input(‘...’)
valido =True #asumo q es correcto , termina cuando ejecuta toda la iteración
if len(num) != 10: #las condiciones opuestas para cambiar la flag
valido = False
i=0
while i<len(num) and valido == True: #si el primer caracter
if num[i] < ‘0’ or num[0] > ‘9’: #pensar negativo logica
valido= False
i+=1
print(‘adios’)
—---------
15-60 mayor edad y promedio edad
cant=0
suma=0
mayor=0
while cant < 5 :
edad= input(‘ingrese su edad’)
while NOT len(edad) == 2 and ‘0’ <= edad[0] <= ‘9’ and ‘0’ <= edad [1] <= ‘9’ and
15<= int(edad) <= 60:
edad= input(‘..’)
suma += int(edad)
if int(edad) > mayor:
mayor = int(edad)
cant +=1
prom= suma/5 #ojo con promedios y porcentaje if cant !=0: prom= suma/cant ojo con la
div por cero
prim(‘prom … ‘ , prom)
cant +=1