IMPORTANTE: en los tutoriales y cursos en línea chequear la versión de Python.
Es un lenguaje de alto nivel, fácil de aprender. Muy expresivo y legible.
numero_aleatorio = random.randrange(5)
gane = False
print("Tenés 5 intentos para adivinar un entre 0 y 99")
intento = 1
while intento < 6 and not gane:
numero_ingresado = int(input('Ingresa tu número: '))
if numero_ingresado == numero_aleatorio:
print('Ganaste! y necesitaste {} intentos!!!'.format(intento))
gane = True
else:
print('Mmmm ... No.. ese número no es... Seguí intentando.')
intento += 1
if not gane:
print('\n Perdiste :(\n El número era: {}'.format(numero_aleatorio))
Readability counts.
"El código es leído muchas más veces de lo que es escrito" ( Guido Van Rossum)
Están especificadas en la PEP 8
Hay guías sobre la indentación, convenciones sobre los nombres, etc.
Algunos IDEs chequean que se respeten estas guías.
Descargar intérprete desde el sitio oficial.
Para ejecutar código Python:
# Adivina adivinador....
import random
numero_aleatorio = random.randrange(5)
gane = False
print("Tenés 3 intentos para adivinar un entre 0 y 4")
intento = 1
while intento < 3 and not gane:
numero_ingresado = int(input('Ingresa tu número: '))
if numero_ingresado == numero_aleatorio:
print('Ganaste! y necesitaste {} intentos!!!'.format(intento))
gane = True
else:
print('Mmmm ... No.. ese número no es... Seguí intentando.')
intento += 1
if not gane:
print('\n Perdiste :(\n El número era: {}'.format(numero_aleatorio))
Tenés 3 intentos para adivinar un entre 0 y 4 Ingresa tu número: 2 Mmmm ... No.. ese número no es... Seguí intentando. Ingresa tu número: 1 Mmmm ... No.. ese número no es... Seguí intentando. Perdiste :( El número era: 0
Cada objeto tiene asociado un tipo, un valor y una identidad.
Una vez que se crea un objeto, su identidad y tipo no se pueden cambiar.
Podemos obtener la identidad de un objeto con la función id().
a = "hola"
b = a
c = "hola "
print(a, b, c)
print(id(a), id(b))
hola hola hola 139774749620592 139774749620592
import string
import random
letras = string.ascii_lowercase
num = random.randrange(4)
num
#print(random.choice(letras))
2
from math import sqrt
raiz = sqrt(16)
print(raiz)
4.0
random.choice() vs. sqrt()
¿Por qué no math.sqrt() o choice()?
# Se usan triple comillas para cadenas de más de una línea
print("""
La computadora ha pensado un número en un rango de 0 a 4.
Tenés 5 intentos para adivinarlo.
¿Lo intentás?
""")
La computadora ha pensado un número en un rango de 0 a 4. Tenés 5 intentos para adivinarlo. ¿Lo intentás?
valor = input('Ingresa algo ')
print(type(valor))
Ingresa algo 7 <class 'str'>
intento = 3
print('Hola {} !!! Ganaste! y necesitaste {} intentos!!!'.format("claudia", intento))
Hola claudia !!! Ganaste! y necesitaste 3 intentos!!!
x = 4
print("{0:2d} {1:3d} {2:4d}".format(x, x*x, x*x*x))
4 16 64
nombre = "Claudia"
print(f'Hola {nombre} !!! Ganaste! y necesitaste {intento} intentos!!!')
Hola Claudia !!! Ganaste! y necesitaste 3 intentos!!!
cad1 = "Cadena alineada a izquierda"
cad2 = "Cadena alineada a derecha"
cad3 = "Cadena centrada"
print(f"\n{cad1:<30}\n{cad2:>30}")
print(f"\n{cad3:^30})")
print(f"\n{cad3:*^30}")
Cadena alineada a izquierda Cadena alineada a derecha Cadena centrada ) *******Cadena centrada********
import string
import random
letras = string.ascii_lowercase
letra = random.choice(letras)
if letra == "A":
print("Adivinaste")
else:
print('Mmmm ... No es una A... Seguí intentando.')
File "<tokenize>", line 7 else: ^ IndentationError: unindent does not match any outer indentation level
Tipos predefinidos: (Built-In Data Types)
gane = False
texto_1 = 'Adivinaste!'
intento = 1
temperatura = 17.5
cadena = "Python"
lista = [1, 2, "hola", [1, 2], True]
tupla = (1, 2, "hola", lista, (1,2), False)
diccionario = {0: lista, "tupla": tupla}
print(cadena[0])
print(lista[0])
print(tupla[0])
print(diccionario[0])
P 1 1 [1, 2, 'hola', [1, 2], True]
cadena = "Python"
lista = [1, 2, "hola", [1, 2], True]
tupla = (1, 2, "hola", lista, (1,2), False)
diccionario = {"lista": lista, "tupla": tupla}
tupla[0]= "A"
tupla
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) /tmp/ipykernel_16177/3362913016.py in <module> ----> 1 tupla[0]= "A" 2 tupla TypeError: 'tuple' object does not support item assignment
cadena = "Python"
lista = [1, 2, "hola", [1, 2], True]
#print(cadena[1:])
print(lista[:-2])
[1, 2, 'hola']
print(len(cadena))
print(len(lista))
6 5
rock = ["Riff", "La Renga", "La Torre"]
blues = ["La Mississippi", "Memphis"]
musica = rock
rock.append("Divididos")
print(musica)
['Riff', 'La Renga', 'La Torre', 'Divididos']
print(id(musica))
print(id(rock))
print(id(blues))
139774749384064 139774749384064 139774749650624
¿Cómo hacemos para copiar a otra zona de memoria?
palabras = "En esta clase aparecen grandes bandas".split(" ")
palabras
['En e', 'ta cla', 'e aparecen grande', ' banda', '']
criptos = ["DAI", "USDT"]
cripto = "BTC"
tipo_cripto = "estable" if cripto in criptos else "cambiante"
print(f"{cripto} es {tipo_cripto}")
BTC es cambiante
IMPORTANTE: Python utiliza la evaluación con circuito corto.
x = 1
y = 0
if True or x/y:
print("Mmmm raro...")
else:
print("nada")
Mmmm raro...
i = 5
while i >0:
print(i)
i -= 1
5 4 3 2 1
for num in range(2, 5):
print(num)
2 3 4
dias = ["domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado"]
for d in dias:
print(d)
domingo lunes martes miércoles jueves viernes sábado
cuadrados = [x**2 for x in range(10)]
print(cuadrados)
pares = [x for x in cuadrados if x % 2 == 0]
print(pares)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] [0, 4, 16, 36, 64]
dicci = dict ([(x, x**2) for x in (2, 4, 6)])
print(dicci)
{2: 4, 4: 16, 6: 36}
bandas = {"AC/DC", "Metallica", "Greta Van Fleet", "Soda Stéreo", "Los Piojos"}
type(bandas)
set
letras = set("alabanza")
letras
{'a', 'b', 'l', 'n', 'z'}
bandas = {"AC/DC", "Metallica", "Greta Van Fleet", "Soda Stéreo", "Los Piojos"}
bandas_nacionales = set(("Soda Stéreo", "La Renga", "Los Piojos"))
print("Foo Fighters" in bandas)
todos = bandas | bandas_nacionales
print(todos)
algunos = bandas & bandas_nacionales
print(algunos)
algunos1 = bandas - bandas_nacionales
print(algunos1)
False {'Greta Van Fleet', 'Soda Stéreo', 'AC/DC', 'Metallica', 'La Renga', 'Los Piojos'} {'Soda Stéreo', 'Los Piojos'} {'AC/DC', 'Greta Van Fleet', 'Metallica'}
import string
import random
def generar_clave(largo_clave):
clave = ''
for c in range(largo_clave):
clave += random.choice(letras)
return clave
letras = string.ascii_lowercase
letras += string.ascii_uppercase
letras += string.digits
mi_clave = generar_clave(8)
print(mi_clave)
llCGgM4F
def generar_clave(largo_clave, todo_minusculas = True):
clave = ''
for c in range(largo_clave):
clave += random.choice(letras)
if todo_minusculas:
return clave.lower()
else:
return clave
mi_clave = generar_clave(8)
print(mi_clave)
yvpgiaql
i = 4
def funcion(x=i):
print(x)
i = 10
funcion()
4
x = 12
def funcion1():
temp = x + 1
print(temp)
def funcion2():
x = x + 1
print(x)
funcion2()
--------------------------------------------------------------------------- UnboundLocalError Traceback (most recent call last) /tmp/ipykernel_16177/2464988638.py in <module> 9 print(x) 10 ---> 11 funcion2() /tmp/ipykernel_16177/2464988638.py in funcion2() 6 def funcion2(): 7 ----> 8 x = x + 1 9 print(x) 10 UnboundLocalError: local variable 'x' referenced before assignment
x = 0
y = 1
def uno():
x = 10
y = 101
def uno_uno():
nonlocal x
#global x
x = 100
print(f"En uno_uno: {x} -- {y}")
uno_uno()
print(f"En uno: {x} -- {y}")
uno()
print(f"En ppal: {x} -- {y}")
En uno_uno: 100 -- 101 En uno: 100 -- 101 En ppal: 0 -- 1