[Otros] Escuela introducción a la programación con python (finalizada)


Ver Resultados de encuesta: La tarea 3: ¿prefieren que sea en parejas o individual?
En parejas 2 66,67%
Individual 0 0%
Me es indiferente 1 33,33%
Votantes: 3. No puedes votar en esta encuesta

Like Tree35Gracias
 
 
Herramientas Desplegado
  #11  
16/01/2018
Predeterminado Clase 4: lógica proposicional y variables tipo bool
Clase 4: lógica proposicional y variables tipo bool

Parte 1: lógica proposicional

Cuando hablamos y transmitimos información, lo hacemos mediante enunciados que pueden ser de varios tipos (modos del lenguaje): imperativo (dar una orden), interrogativo (hacer preguntas), indicativo (dar información), etc. Nosotros nos concentraremos en ese último, el modo indicativo.

Entonces, definamos una proposición como un enunciado que puede tener un valor de verdad y usa el modo indicativo del lenguaje. Ejemplos: "Hace frío", "Está lloviendo".

El valor de verdad de una proposición será verdadero (True) o falso (False), pero no en el sentido de que sea verdad o mentira. Las proposiciones se denotan frecuentemente con una letra, pudiendo ser p = "hace frío" o q = "está lloviendo".

Relaciones entre proposiciones:

Negación: es la más básica de todas, se denota con el símbolo ~ o ¬ antes de la letra, negación de p sería ~p o ¬p, yo prefiero usar ~.
Si decimos p = "hace frío" y ~p es verdadero, esa negación de "hace frío" no es que "hace calor" sea verdadero: en lógica, el opuesto de "frío" no es "calor", es "no frío". Esto es muy importante que lo entiendan.

Conjunción: es simple y llanamente el "y" ("and" en inglés). Si p es "hace frío" y q es "está lloviendo", entonces la conjunción entre p y q sería simplemente p ^ q (se usa "^" para representarlo).

Disyunción: es el "o" ("or"). Se denota con "v". La relación p o q sería p v q.

Implicancia: p implica q es p=>q, la implicancia se define como ~p v q.

Si y solo si: (ese "si" es condicional) p <=> q, se define como p=>q ^ q=>p.

Tablas de verdad:
Las tablas de verdad indican el valor de verdad de una relación de proposiciones, según el valor de cada una.



Normalmente solo usaremos la negación, conjunción y disyunción, pero les dejo las tablas de la implicancia y la del si y solo si (también llamado bicondicional).

¿Por qué explico esto? Porque las variables tipo bool son variables que solo pueden ser True o False, se les puede asignar estos valores de manera directa o que dependa de condiciones y se pueden relacionar entre sí mediante los operadores lógicos que acabo de mencionar.

Condiciones:
Los tipos de condiciones que podemos establecer entre variables con python son: "menor que", "menor o igual que", "igual que", "distinto que", "mayor que" y "mayor o igual que", esto es válido para variables int, float y sorprendentemente strings.

Con ints y floats no hay misterio, como estamos hablando de números, el computador no tiene problemas para establecer cuál es menor o mayor que otro. Si estamos relacionando strings entre sí, el "mayor" será el que aparece después en el sistema de caracteres que esté usando, para que se entienda, si ambos strings estuvieran en el diccionario, el mayor es el que aparece después. "A" es menor que "B", pero "a" es mayor que "B" porque en python las mayúsculas están antes que las minúsculas.

No se puede relacionar ints o floats con strings. Recomiendo siempre usar paréntesis para que las prioridades queden claras, por ejemplo: en lugar de escribir

Código:
p ^ q v p
escriban

Código:
p ^ (q v p)
No necesitan más que esto, en realidad. Si les interesó el tema busquen un libro llamado "Teoría de conjuntos" de un autor cuyo nombre no recuerdo... lo buscaré si a alguien le interesa y me lo pide.

Parte 2: lógica proposicional en python

Aquí no existen las "proposiciones" como un string que diga "hace frío", pero sí existen en forma de las proposiciones que detallé arriba, pudiendo tener un "variable < 8", por dar un ejemplo. Ahora vamos con las notaciones.

Conjunción:

Para la conjunción se usa la palabra reservada "and" del siguiente modo:

Código:
cond_1 and cond_2
Disyunción:

Para la disyunción se usa la palabra reservada "or" del siguiente modo:

Código:
cond_1 or cond_2
Negación:

Para la negación se usa la palabra reservad a "not" del siguiente modo:

Código:
not cond_1

Notación de las condiciones:

Igualdad:

Código:
var_1 == var_2 #es importante que sean dos signos iguales, 
#no confundir con usar solo uno que es para asignaciones.
Mayor que:

Código:
var_1 > var_2
Mayor o igual que:

Código:
var_1 > var_2 or var_1 == var_2
Código:
var_1 >= var_2
Distinto:

Código:
var_1 != var_2
Nota: solo la igualdad (==) o desigualdad (!=) permite relacionar ints o floats con strings.

Menor que:

Código:
var_1 < var_2
Menor o igual que:

Código:
var_1 <= var_2
Entonces podríamos tener que, en código:

Código:
var_1 = int(input("Ingrese un número entero: ")
var_2 = int(input("Ingrese un número entero: ")
var_3 = not (var_1 < var_2) or (2*var_2 < var_1)
print(var_3) #también se puede dejar como print(not (var_1 < var_2) or (2*var_2 < var_1))
sea parte de un programa.

Otro ejemplo de código:

#var_1 ya está definida pero no sabemos su valor (True o False)
Lo que nos diría si lo es, es:
Código:
print(var_1 == True)
De ese modo, si var_1 es igual a True, var_1 vale True y en pantalla se imprimirá True, de lo contrario, se imprimirá False.

Sintaxis:
El booleano "verdadero" se escribe True en python.
El booleano "falso" se escribe False en python.
La operación "negación" se escribe not en python.

Aclaro esto para que no queden dudas.


Un par de definiciones más:

Ahora llamemos "proposición" a un conjunto de variables que se relacionan mediante operadores lógicos (and, not y or). Una proposición será una tautología si para cualquier combinación de True y False de todas las variables implicadas, el resultado siempre es True. En cambio, será una contradicción si el resultado siempre es False. Finalmente, si el resultado difiere según cómo se combinen los valores de las variables entonces la proposición se dice que es una contingencia.



Ejercicios:
1) Busquen en internet cómo funciona la función bool(args) de python y si se puede usar para transformar en un booleano un string como "True" o "False". Expliquen.
2) Hagan un programa que dados los datos ingresados por el usuario para dos pokémon y usando la fórmula de daño que está en wikidex imprima en pantalla True si el pokémon 1 debilita al pokémon 2 de un golpe y False si esto no ocurre (RESTRICCIONES: solo pueden usar los contenidos vistos en clases, esto, por supuesto, incluye al módulo random).
3) Demuestren (probando las combinaciones posibles para valores de p y q variables) que:

Código:
((p=>q)^p) => q
es una tautología.


Última edición por Json; 25/01/2018 a las 16:55
  #12  
17/01/2018
Predeterminado Respuesta: Clase 4: lógica proposicional y variables tipo bool

Respuestas


1)


Me da pereza escribir, así que copiaré y pegaré xD:

bool(object):

It lets you convert any Python value to a boolean value.

Sometimes you want to store either True or False depending on another Python object.

How Python objects are converted to a boolean value, all depends on their truth value. Generally speaking, None, numeric 0 and empty containers (empty list, dictionary, set, tuple, string, etc.) are all False, the rest is True.




3)







Muchas gracias a @Zeropor ayudar a crecer a esta comunidad!



"Un sueño puede sustentarte; puede matarte o atormentarte. Pero si tú abandonas tu sueño, lo ocultas en tu corazón, es como suicidarse. Cada hombre, en su tiempo de vida, debería por lo menos tener esperanza por una vida que pueda sacrificar al dios de los sueños. La vida que busca solo vivir otro día, ¡es inaceptable!"
~Berserk

"El triunfo quedará siempre fuera del alcance de quienes temen constantemente al fracaso. El verdadero guerrero perfecciona cuerpo y mente y mira más allá de las tribulaciones del momento."
~Dark Souls II

"Un sueño es algo que haces para ti mismo, no para otros. Algunos sueñan con dominar el mundo. Algunos solo viven por una espada. Si te juegas la vida por un sueño como un torbellino ese sueño se tragará todos los demás."
~Berserk
  #13  
17/01/2018
Predeterminado Clase 5: control de flujo
Clase 5: control de flujo

Aviso: noto una baja actividad por parte de ustedes, quisiera que respondan en este tema si prefieren que cree un tema en el aula para las dudas de clases y tareas en lugar de usar discord.

Cuando programamos normalmente querremos que si pasa A, el programa haga una cosa y si pasa B haga otra. Hoy aprenderemos a hacer eso.

Condiciones:

Como vimos la clase pasada, una condición tendrá un valor True o False dependiendo de si se cumple o no, esta es la base de la toma de decisiones que hará un programa, pues se basará en el valor de verdad de una condición.

Bloque if - else:

Este bloque de código es el que se encarga de que si se da una condición, el programa algo, y si no se da, haga otra cosa.

Estructura:

Código:
<código_que_antecede_al_if>

if <condición>:
	<código_1>
else:
	<código_2>

<código_que_precede_al_if>

Notar dos cosas:
1) Si <condición> es True, se ejecutará <código_1>, si <condición> es False, se ejecutará <código_2>. Una vez que tome uno de los dos caminos y acabe, continuará con el <código_que_precede_al_if>.
2) Indentación.

Indentación:

Se llama indentación a la sangría que se coloca a determinados bloques de código que están "dentro" de otros. Eso le permite al lenguaje diferenciar lo que está dentro y lo que está fuera del bloque if - else.

La indentación se puede hacer de dos formas: la primera es con cuatro espacios y la segunda es apretando la tecla "tab" (o tabulador), es la que está justo encima de "bloq. mayús". Lo que sí, si lo van a hacer con tab, deben hacerlo todo con tab, en cambio si lo van a hacer con espacios, todo con espacios.


Else if:

Muchas veces las decisiones no son tan simples como que se cumpla una sola condición, puede que tengamos que hacer cosas para 10 posibles valores de una variable, esta es la solución.

Código:
if <cond_1>:
	<cod_1>
else:
	if <cond_2>:
		<cod_2>
	else:
		<cod_3>
Que también puede ser:

Código:
if <cond_1>:
	<cod_1>
elif <cond_2>:
	<cod_2>
else:
	<cod_3>
Ejemplos de cosas que se pueden hacer:

Código:
name = input("Ingrese nombre: ")
if name == "":
	name = "Jugador"
else:
	pass
Código:
name = input("Ingrese nombre: ")
if name == "":
	name = "Jugador"

Código:
constante = int(input("Ingrese número: "))
if constante >= 4:
	constante = 0
else:
	constante += 1

Código:
#la variable var viene de algo más atrás
if type(var) == str:
	pass
else:
	var = ""
Ejercicios:
1) Quiero que programen el menú de opciones de pokémon, con pokédex, pokémon, mochila, ficha entrenador, opciones, guardar y salir. Que al entrar a cada opción imprima un mensaje característico en pantalla, excepto en salir, por supuesto.
2) Usando la fórmula de daño del ejercicio 2 de la clase pasada, hagan un programa que decida qué ataque hacer entre cuatro posibles o si debe cambiar de pokémon (y a cuál), basado en el potencial daño que puede hacer y el potencial daño que puede recibir el pokémon que está en el campo y el resto de miembros del equipo. No consideren estrategias como buffs de estadísticas o ataques con efectos aparte del daño directo. Los datos del equipo deberán ser entregados por el usuario o podrán ser determinados por ustedes por defecto. Si hay o no stab al igual que la efectividad (tabla de tipos) deberá determinarlo su programa. [EDIT: este ejercicio queda para que lo hagan incluyendo la materia de la clase 6.]


Última edición por Json; 25/01/2018 a las 16:56
  #14  
17/01/2018
Predeterminado Re: Clase 1: el lenguaje y algoritmos
Lamento el retraso xd me habian cortado el internet papu :'v me pondre al corriente hoy.

Preparar Hot Cakes



1.- Conseguir Ingredientes: 1/2 kg de Harina, 2 huevos, 1/2 lt de Leshe shavo.
2.- Conseguir Instrumentos: 1 espatule, 1 Sarten, 1 Licuadora, 1 plato.
3.- Entrar en la Cocina donde se encuentra: Enchufe, Estufa, lavaplatos.
4.- Tomar la Licuadora y vertir dentro los Ingredientes y taparla.
5.- Enchufar la licuadora a la corriente eléctrica.
6.- Encender la licuadora durante 5 min para que se mezclen los ingredientes. una vez pasado los 5 min apagarla y desenchufar la licuadora.
7.- Colocar el sarten en la estufa.
8.- Encender la estufa a fuego medio.
9.- tomar la licuadora y verter 1/8 de ella en el sarten para crear el hotcake y esperar 4 min.
10.- Pasados los 4 min tomar la espatule y voltear el hotcake y esperar otros 4 min.
11.- Retirar el hot cake con la espatule pasado los 4 min y colocarlo en el plato
12.- Repetir paso 9 hasta agotar la licuadora.
13.- Apagar la estufa.
14.- Tomar y mover licuadora, sarten y espatule al lavaplatos(Para lavarlos luego xd)
Fin?
Gracias: Json
  #15  
18/01/2018
Predeterminado Respuesta: Clase 5: control de flujo


Muchas gracias a @Zeropor ayudar a crecer a esta comunidad!



"Un sueño puede sustentarte; puede matarte o atormentarte. Pero si tú abandonas tu sueño, lo ocultas en tu corazón, es como suicidarse. Cada hombre, en su tiempo de vida, debería por lo menos tener esperanza por una vida que pueda sacrificar al dios de los sueños. La vida que busca solo vivir otro día, ¡es inaceptable!"
~Berserk

"El triunfo quedará siempre fuera del alcance de quienes temen constantemente al fracaso. El verdadero guerrero perfecciona cuerpo y mente y mira más allá de las tribulaciones del momento."
~Dark Souls II

"Un sueño es algo que haces para ti mismo, no para otros. Algunos sueñan con dominar el mundo. Algunos solo viven por una espada. Si te juegas la vida por un sueño como un torbellino ese sueño se tragará todos los demás."
~Berserk
  #16  
18/01/2018
Predeterminado Clase 6: ciclos while
Clase 6: ciclos While

Tip de hoy: Formalidad del código.
Por aspectos formales y convención, uno importa todos los módulos y librerías al principio del archivo con el código, nunca a la mitad o hacia el final. Es lo primero que se escribe.

Hoy aprenderemos a hacer ciclos y algunas aplicaciones de estos.
Un ciclo, o también loop o bucle, es un trozo de código que se repite un número indefinido de veces o mientras que se cumpla una determinada condición.

Sintaxis:

Código:
<código_que_antecede_al_ciclo>

while <condición>:
	<código que se repite>

<código_que_precede_al_ciclo>
mientras que <condición> sea True, <código que se repite> se ejecutará una y otra vez. Luego ejecutará el <código_que_precede_al_ciclo>.

Break:

break es una palabra reservada que nos permite salir de un ciclo antes de tiempo.

Sintaxis:

Código:
while <condición>:
	<código>
	break
Normalmente se coloca dentro de un if para que rompa el ciclo solo en ciertas circunstancias.

Ejemplos:

Código:
import time
contador = 10
while contador>0:
	print(contador, " segundos para el depegue")
	contador -=1
	time.sleep(1)
print("Ignición!")

Código:
import random
string = ""
while len(string)<8:
	h = random.randint(1, 100)
	string += str(h)
print("El número ganador es... ", string)

Tareas:
1) Investiguen acerca del módulo time.
2) Investiguen acerca de los métodos de string: string.isnumeric(), string.isalpha(), string.isalnum() y string.find()
3) Programen un menú de opciones como el de la clase anterior pero que verifique los inputs y, de ser incorrectos, los vuelva a pedir.
4) Ahora sí pueden completar la tarea 2 de la clase pasada de forma mucho más sencilla. ¡Ánimo!


Última edición por Json; 25/01/2018 a las 16:59
  #17  
19/01/2018
Predeterminado Clase 7: ciclos for
Clase 7: ciclos for

Hoy toca los ciclos for, que tienen por gracia que crean una variable la que toma los valores que están en un intervalo definido por el usuario con una sintaxis más sencilla que usando ciclos while. Vamos a ver la sintaxis.

Sintaxis:

Código:
for <variable> in range(a, b):
	<code>
Ojo, el intervalo toma el valor de a pero no el de b (el valor máximo de la variable es b-1.
a y b deben ser ints.

Ejemplos de usos:

Código:
for i in range(2, 8):
	print(i+5)

Código:
for i in range(8): #si no colocan la cota inferior, por defecto es cero.
	for j in range(9):
		print(str(i)+"x"+str(j))
Este último es un caso de un "for anidado", es decir, un for dentro de otro for.

Les recomiendo probar estos ejemplos en sus computadores para que vean bien cómo funciona.

Ejercicios:
1) Simular con UN while un for anidado (dos variables que se mueven en un rango "rectangular".
2) Hacer un programa que calcule el factorial de un número ingresado por el usuario.
3) Hacer un programa que verifique si un número es primo o no.
4) Cada uno deberá decirme el n-ésimo primo para un n (uno distinto para cada alumno, la lista está más abajo).

Ej:
Código:
1er primo: 2
2do primo: 3
3er primo: 5
...
n-ésimo primo: ???

Lista de números por alumno


@joaquino - 37987
@WhiterMaker - 40060
@Berserker1523 - 38561
@旅団.Markuzz Kaizuka - 39196
@David Phunir - 35018
@RioulMillan - 40582
@kurugane - 26878
Gracias: Berserker1523

Última edición por Json; 25/01/2018 a las 16:57
  #18  
22/01/2018
Predeterminado Respuesta: Clase 6: ciclos while

Respuestas


1)

El módulo Time contiene funcionalidades que nos permiten entre otras cosas, manipular y dar formato a fechas y horas, obtener fechas actuales, rangos y hacer cálculos con estas.

Algunas de las funciones más importantes de este módulo son las siguientes:

asctime([tuple]): Convierte una tupla de tiempo en un string.

localtime([secs]): Convierte los segundos a una tupla de fecha, hora local.

mktime(tuple): Convierte una tupla de tiempo a hora local.

sleep(secs): Duerme (no hace nada) por la cantidad de secs que corresponde a segundos.

strptime(string[, format]): Transforma un string a una tupla de tiempo.

time(): Fecha actual.(en segundos, UTC).


2)


string.isnumeric(): Retorna true o false dependiendo de si el string está compuesto solo de caracteres numéricos. El método solo funciona con "objetos unicode".

string.isalpha(): Retorna tru o flase dependiendo de si el string está compuesto solo de caracteres alfabeticos.

string.isalnum(): Este método devuelve verdadero si todos los caracteres en la cadena son alfanuméricos y hay al menos un carácter, de lo contrario es falso.

string.find(): Determina si una subcadena está en el string, también se le pueden dar indices de inicio y final para que busque en el string.

Parámetros
str - Esto especifica la cadena que se buscará.

beg - Este es el índice inicial, por defecto es 0.

end - Este es el índice final, por defecto es igual a la longitud de la cadena.

Valor de retorno
Índice si se encuentra y -1 en caso contrario.



3)

https://mega.nz/#!F4FjFQxI!1z8w9tlnLrqpZhtZzEvBZGJvpS57Iy1xuh941Lh knVw



Muchas gracias a @Zeropor ayudar a crecer a esta comunidad!



"Un sueño puede sustentarte; puede matarte o atormentarte. Pero si tú abandonas tu sueño, lo ocultas en tu corazón, es como suicidarse. Cada hombre, en su tiempo de vida, debería por lo menos tener esperanza por una vida que pueda sacrificar al dios de los sueños. La vida que busca solo vivir otro día, ¡es inaceptable!"
~Berserk

"El triunfo quedará siempre fuera del alcance de quienes temen constantemente al fracaso. El verdadero guerrero perfecciona cuerpo y mente y mira más allá de las tribulaciones del momento."
~Dark Souls II

"Un sueño es algo que haces para ti mismo, no para otros. Algunos sueñan con dominar el mundo. Algunos solo viven por una espada. Si te juegas la vida por un sueño como un torbellino ese sueño se tragará todos los demás."
~Berserk
  #19  
23/01/2018
Predeterminado Clase 8: listas y tuplas
Clase 8: listas y tuplas

Esta clase veremos la primera estructura de datos de este curso: las listas.

Estructura de datos:

Una estructura de datos es una forma de organizar datos para luego aprovecharlos. En realidad los strings son a la vez un tipo de datos y una estructura de datos, según cómo se usen. Ustedes para el mazo de cartas los usaron como estructura de datos y en el nombre de los jugadores, como tipo de dato.

Listas:

Una lista consiste en una agrupación de datos en un determinado orden. Estos datos pueden ser ints, floats, strings, bools, listas o incluso mezclas de todos ellos. Las listas se denotan por elementos entre corchetes ([ ]) separados por comas.

Operaciones:

Al igual que con strings, las listas soportan únicamente la suma entre ellas (concatenación) y multiplicación (únicamente entre una lista y un int y con MUCHO cuidado, por razones que les mostraré más adelante), en este sentido, si tenemos:

Código:
lista_1 = [1, 2, "a"]
lista_2 = ["b"]
print(lista_1 + lista_2)
print(lista_2 + lista_1)

Código:
[1, 2, "a", "b"]
["b", 1, 2, "a"]
Multiplicación está más abajo.

Una lista vacía:

Para crear una lista vacía (el "cero" en listas) basta con:

Código:
lista = []
o

Código:
lista = list()
Agregar elementos a una lista:

Código:
lista = [<los elementos de la lista>]
lista = lista + [<cosa que le quieran meter>]
o

Código:
lista = [<los elementos de la lista>]
lista += [<cosa que le quieran meter>]
o

Código:
lista = [<los elementos de la lista>]
lista.append(<cosa que le quieran meter>)
En estos tres ejemplos <cosa que le quieren meter> se añadirá al final de la lista.

Índices:

Al igual que con strings, podemos llamar lo que esté en una determinada posición de una lista.

Código:
lista = [9, 8, 7, 6, 5, 4, 3, 2, 1]
for i in range(len(lista)):
	print(lista[i])
#la función len nos dirá cuántos elementos hay en la lista
#indexación parte en cero, al igual que con strings
Código:
9
8
7
6
5
4
3
2
1
Con los índices negativos funciona igual que con strings, es decir:

Código:
lista = [2, 3]
pirnt(lista[-1])
Código:
3
Usos adicionales de los índices:

En la práctica, cada posición de una lista funciona como una variable entonces el dato que almacena puede ser modificado mediante asignación como si se tratara de una variable normal.

Código:
import random
asistencia = [["alfredo", None], ["gonzalo", None], ["uribusto", None], ["papa panchito", None]]
for i in range(len(asistencia)):
	var = random.randint(0, 1)
	asistencia[i][1] = bool(var)
print(*asistencia, sep = "\n")
o también puede hacerse:

Código:
import random
asistencia = [["alfredo", None], ["gonzalo", None], ["uribusto", None], ["papa panchito", None]]
for i in asistencia:
	var = random.randint(0, 1)
	i[1] = bool(var) #i es cada lista dentro de asistencia
print(*asistencia, sep = "\n")

Ejemplo simple:
Código:
patito  = [1, 2, 1, 4, 6]
patito[3] = 2
print(patito)
Código:
[1, 2, 1, 2, 6]
El problema de las listas:

Una lista al intentar asignarla a otra variable, sigue siendo la misma lista, al contrario de lo que pasa con los otros tipos de datos que ya vimos. En código:

Código:
lista_1 = [1, 2, 3]
lista_2 = lista_1
lista_2[1] = 3
print(lista_1)
Código:
[1, 3, 3] #cuando supuestamente tendía que imprimir [1, 2, 3]
Solución:
La solución es copiar la lista y luego manipular la copia.

Método manual:

Código:
lista_a_copiar = [<algo>]
copia = []
for i in lista_a_copiar:
	copia.append(i)
Método automático:

Código:
lista_a_copiar = [<algo>]
copia = lista_a_copiar.copy()

Multiplicando listas:

Código:
lista = [0]*5
print(lista)
lista[0] = 1
print(lista)
Código:
[0, 0, 0, 0, 0]
[1, 0, 0, 0, 0]
pero si hacen

Código:
lista = [[0]*5]*2
print(lista)
lista[0][3] = 1
print(lista)
Código:
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
[[0, 0, 0, 4, 0], [0, 0, 0, 4, 0]]

Tuplas:

Son como listas pero no se pueden modificar sus posiciones (no puedes hacer algo como tupla[0] = 4), esto se llama que son "inmutables". Las tuplas se pueden sumar entre sí y multiplicar por enteros de la misma forma que las listas. Son más rápidas que las listas y admiten los métodos tuple.index() y tuple.count() [buscar y explicar qué hacen forma parte del ejercicio 1 de hoy], además de obtener un elemento de una tupla por su indexación (tuple[n]).

Las tuplas van con paréntesis en lugar de corchetes. Una tupla vacía se crea:

Código:
aux = tuple()
o

Código:
aux = ()
Deben tener mucho ciudado porque una tupla de un elemento no es

Código:
aux = (9) #por ejemplo
Una tupla de un elemento se crea:
Código:
aux = (9,)
Siempre deben tener a lo menos una coma (o estar vacías) o de lo contrario en lugar de que el computador las registre como tuplas, las registrará como el tipo de datos que está dentro, en el caso del ejemplo, un entero.

También nos dan la seguridad de que en un programa largo, su valor permanecerá inmutable, pudiendo usarlas para guardar cosas que necesitemos que perduren.


Ejercicios:

1) Investiguen los siguientes métodos y funciones y explíquenlos.

list()
tuple()
string.split()
string.split()
list(string)
random.shuffle()
random.choice()
random.sample()
string.join(list)
string.join(tuple)
list.sort()
sorted(list)
list.index()
list.count()
tuple.index()
tuple.count()
list.pop()
list.reverse()
list.insert()
list.remove()

También busquen qué hace la palabra reservada "in" con listas y tuplas. ¿Sirve con strings?

2) Hacer un programa que dados los nombres de productos de un supermercado y la cantidad, indique el precio total a pagar. Mínimo 20 productos distintos como opciones para el comprador, de ellos puede elegir los que desee y en la cantidad que desee.

3) Hacer un programa que genere un tablero de n filas y m columnas tal que en todas sus posiciones haya ceros y pueda modificar el valor de uno sin afectar el resto del tablero.

Gracias: Berserker1523

Última edición por Json; 25/01/2018 a las 17:00
  #20  
24/01/2018
Predeterminado Clase 9: diccionarios
Clase 9: diccionarios

AVISO: volvemos a ser 7, la encuesta de este tema no será válida.

Los diccionarios son estructuras de datos donde uno puede elegir la llave (o palabra clave) con la que se identifica a un determinado elemento dentro de ellos, a diferencia de las listas o tuplas donde la llave es su índice (posición según el orden de la lista). Ejemplo de un diccionario:

Código:
bulbasaur = {'tipo1':'planta', 'tipo2':'veneno', 'nivel':84}
Lo que aparece antes de los dos puntos ( son las "llaves", y lo que aparece después, es el dato que está en esa llave. Siguiendo con el ejemplo,

Código:
print(bulbasaur['nivel'])
Código:
84
Así es como se puede conseguir un valor almacenado en un diccionario.

¿Qué cosas pueden ser llaves de un diccionario?

En el ejemplo vimos strings siendo usados como llaves, pero estas también pueden ser ints, floats, bools o tuplas, además de los ya mencionados strings.

Creando un diccionario vacío:

Código:
variable = dict()
o

Código:
variable = {}
Añadiendo elementos a un diccionario ya existente:

Para añadir un elemento a un diccionario, basta con

Código:
diccionario[llave] = elemento
Ojo, la llave que empleemos no debe ser una ya utilizada en el diccionario o en lugar de añadir los datos, estos se sustituirán por el elemento que estemos ingresando.

Problema con los diccionarios:

Los diccionarios presentan el mismo problema que las listas, al asignar un diccionario a varias variables, estos quedan conectados, para evitar esto, utilizaremos el método diccionario.copy() cuando sea necesario.

Los diccionarios no se pueden sumar o multiplicar, tampoco soportan cualquiera de las otras operaciones que vimos en la clase de ints y floats.


Ejercicios:

1) Diseñen un pokémon con un diccionario, no es necesario que sea funcional, solo que se familiaricen con los diccionarios.
2) ¿Qué hacen las funciones list(), tuple() y str() aplicadas sobre un diccionario? ¿Y la función dict() sobre alguna otra estructura de datos?
3) ¿Qué pasa si aplican la función len() a un diccionario?
4) Creen un diccionario con los primeros 20 pokémon de la pokédex. Solo debe contener la siguiente información: nº pokédex nacional, nombre, especie, altura, peso, tipos (principal y secundario), grupos huevo, hábitat y descripción (la que más les guste). ¿Qué usaron como llave y por qué?.
5) Nombre las principales ventajas de los diccionarios frente a las listas y tuplas (san google, ilumínalos!).
6) ¿Qué pasa si intentan iterar sobre un diccionario?
Es decir, hacer algo como esto:
Código:
for i in diccionario_que_defini_previamente:
    print("holi")

Gracias: Berserker1523

Última edición por Json; 25/01/2018 a las 17:05
 

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 12:04.