Los diccionarios me estan rompiendo el cerebro, no consigo entenderlos.
#571 No dejan de ser una lista, pero desordenada
Las listas las accedes con un numero de indice [0] [1] [2] [3]...
Los diccionarios accedes al valor de cada entrada por medio de una clave ["casa"] ["coche"]... etc
Son solo dos maneras distintas de acceder a datos con multiples valores, con variables simples como enteros, strings, floats etc solo puedes guardar un dato, con listas y diccionarios puedes guardar en una sola variable multiples datos y es una manera de tenerlas ordenadas
#571 A mi se me parece a como si tuvieras un exel con 2 columnas y lo que tienes en la izq es la "key" con la que accedes a la informacion en la derecha, no se si tiene sentido o te lia mas.
Una cosa que hago sino entiendo bien lo que me dice, es buscar en youtube esa explicacion hay veces que alguien menciona algo que ella no hace ya sea pk no se da cuenta o no cree que sea importante o simplemente pk lo explican de forma distinta con otro ejemplo y asi lo entiendo
LLevo 3 dias (dandole una horita o poco mas) con la leccion boostrap en la parte de el Z index y no consigo sacarlo correctamente , esta un poco desfasado en estos temas usando versiones antiguas que han cambiado cosas , y no doy con la clave ni probando mil cosas que hay por stackoverflow , creo que voy a pasar de capitulo y ya volvere a eso..
Soy estudiante de Ciencia de Datos y acabo de terminar segundo, he visto lo basico de python y cosas como métodos numéricos. Me gustaría aprovechar el verano y no desconectar del todo que luego cuesta volver. Así que recomendáis el curso?
#575 estudiando ciencia de datos te encontrarás con python tarde o temprano, así que mejor que sea temprano. Este curso me parece la mejor opción tanto si nunca has programado como si ya sabes programar en algún otro lenguaje, y cuenta con una sección al final que se encarga de data science, aunque también se toca algo en unas lecciones al principio cuando te habla de pandas.
De todos modos una alternativa es otro de los cursos de app brewery, el de machine learning, https://www.udemy.com/course/python-data-science-machine-learning-bootcamp/ que también te da las nociones necesarias de python y va directo a hacer cosas de data science con hincapié en machine learning.
Vamos resumiendo, si eres nuevo en la programación y/o quieres ir desde cero y tocando todos los palos (apis, web, data science, GUIs...), el 100 days of code. Si ya sabes programar y quieres un curso intensivo de unas pocas horas de python y entonces sumergirte en data science a fondo, el de data science / Machine Learning
Acabo de hacer el dia 18 y al ver la solucion para corregir el ejercico me he quedado un poco meh.
Entiendo que lo hace como lo hace por hacerlo con pasos faciles, pero ya no se hasta que punto soy yo queriendo complicarme mas de la cuenta para hacerlo mas "limpio/bonito" o hasta que punto ella intenta simplificarlo demasiado.
Alguna ayuda con correccion de codigo/explicarme por que es mejor o no hacerlo como lo hace ella?
Lo voy a preguntar aqui en vez del general del hilo de python que quizas ayude a alguien mas con el ejercicio 13
#578 metele un f string y cambia las comillas, ponle simples en la key del diccionario o en el string.
print(f'Compare A: {oppA["name"]}, {oppA["description"]}, {oppA["country"]}')
Arreglaste ya el otro problema para compararlos y demas?
#579 Ah coño no puse las { } para cada uno lo hice en general, muchas gracias.
Lo pongo como dices pero me da error de sintaxis, no veo el error
P.D. El error de sintaxis lo apunta a "name"
print(f"Compare A: {oppA["name"]},{oppA["description"]},{oppA["country"]}")
print(f"Compare A: {oppA["name"]},{oppA["description"]},{oppA["country"]}")
^
SyntaxError: invalid syntax
#580 El error lo tienes en las comillas como te he dicho. Todo lo que sea un string lo metes entre comillas simples o dobles "string" o 'string'
Si metes un string en comillas dobles y dentro llamas a una variable tambien con comillas dobles, lo que haces es cortar el string, entonces te quedaria un string con "Compare A: {oppa[" luego tendrias name solo que no te hace nada porque no es comando ni es variable ni es nada, y luego "]}, {oppA......
La solucion, si tienes que llamar a alguna variable, usa o bien comillas simples para la key, o bien comillas simples para el string:
print(f"Compare A: {oppA['name']}, {oppA['description']}, {oppA['country']}")
print(f'Compare A: {oppA["name"]},{oppA["description"]},{oppA["country"]}')
#580 creo que te fallan las dobles comillas. Has de usar las simples para lo de dentro de la fString.
A ver si alguien puede echarme un cable a entender el ejercicio de Banker Roulette.
La solución es tal que así:
loser = random.randint(0, (len(names)-1))
Cree esta yo, que la veo lógica, pero evidentemente falla cuando la meto en el Coding Rooms:
loser = names[random.randint(-1 , 0)]
A priori la mia debería de hacer exactamente lo que el ejercicio pide, pero no da buenos resultados. Se supone qe tal y como la he escrito, debería de coger el primer objeto y el último de la lista, sin necesidad de meter un len(names). ¿Alguien podría explicarmelo?
Muchas gracias <3.
#584 no te cogera un valor entre el primero y el último, primero se ejecuta el randint y eso devolverá un numero entre -1 y 0, el randint es ajeno a lo que pasa a su alrededor asi que cuando intenta usar ese número aleatorio para acceder a posiciones de la lista solo te va a acceder a - 1 o 0 (no me acuerdo si el último era incluido)
Para pillar miembros aleatorios de una lista recomiendo usar choice:
mylist = ["apple", "banana", "cherry"]
print(random.choice(mylist))
#585 Vale, vale, me ha costado entenderlo pero probando en la consola solo elige eso, entre el primero y el ultimo. Muchas gracias!!!
#584 lo que haces es distinto y creo que lo verás más fácil si lo separas por partes.
La solución:
#longitud de la lista names
len_names = len(names)
#posición del último elemento de la lista names (hay que restar 1 porque los índices se empiezan a contar con la posición 0)
last_index = len_names - 1
#elección de un número aleatorio correspondiente a los índices de la lista names
loser = random.randint(0, last_index)
Tu código:
#elegir aleatoriamente un índice situado entre -1 y 0
index = random.randint(-1 , 0)
#seleccionar un elemento de la lista mediante el índice
loser = names[index]
Desgranar el código en partes más sencillas creo que ayuda mucho.
Acabo de terminar hoy el dia 15 con el tema de la máquina de café y lo he disfrutado como un enano, entre que ya estoy usando pyCharm y es comodísimo y que me empiezan a hacer click todos los conceptos hasta la fecha me lo he pasado pipa 4h dandole vueltas esta mañana xD.
Hay alguna tontuna que me he dejado por hacer como meter un while para que todo el codigo de preguntar al usuario se vuelva a repetir pero son chorradas que me da mucha pereza hacer y prefiero seguir avanzando, porque voy a 1 o 2 dias del curso semanales y me veo todo lo que queda de año para terminar xD
Dejo aquí el codigo del dia 15 por si alguien se aburre y al pegarle un vistazo ve alguna corrección o alguna forma más "pythoniana" de hacer las cosas!
#577 Tranqui que a mi tambien me pasa xD, terminas un dia estas super proud y luego ves la solución super sencilla que hace y te cagas en cristo jajaja.
Me rindo con la cafetera, lo he hecho totalmente distinto a ella, y al final me he liado con if´s pero no consigo hacer que pare cuando no hay resources suficientes, alguna idea de si se puede arreglar como lo tengo sin cambiar mil cosas? todo lo que he buscado y probado no sirve o no se hacerlo funcionar, el while si lo saque de ella
#590 Para situarme he cambiado nombre de funciones y añadido saltos de líneas
En tu función money() fíjate que estás repitiendo las comparaciones. Puedes hacer la comparación fuera, después de haber calculado el importe del reembolso y te ahorras varías líneas
Para comprobar si hay recursos suficientes, llamo a la función resources_check() que comprueba si falta algo, si es así, la función devuelve false y no realiza la transacción y vuelve al principio del loop
Lo subo a pastebin que dan problema los tabs en el foro
https://pastebin.com/jGpA2UHs
#591 Lo haces distinto a mi, pero sigues teniendo el mismo problema, no se para , te dice que no hay recursos suficientes si pides 2 lates, pero te vuelve a pedir que quieres, eso ya lo hago yo, yo buscaba hacer como un off, vamos parar la funciona, pk si algien pide latte constantemente entra en un bucle
#592 No puedes añadir un if extra despues del resource_check() que te cambie el valor del is_on a False? Aunque si no hay resources para un latte no significa que no haya resources para un espresso, yo veo correcto que el loop se siga repitiendo. Lo suyo sería ir quitando opciones del dict conforme se vayan terminando las resources, pero tampoco es algo que pida el ejercicio por ahora.
is_on == True
if resource_check() == False:
is_on = False
#593 Ya, pero esto que se te ocurre algo y quieres hacerlo y al final te lias tanto que te pierdes haha.
Pero si hago eso el resource_check deberia tener un return False no?
A veces me obceco en algo y no lo veo, como un error que con cappuccino no funcionaba, y al final era la puta P pero te juro que yo leia cappuccino hasta que cambiandolo de IDE me di cuenta...
#594 Si, yo he hecho algo parecido.
def stock_check(selected_coffee): # Checks if the stock has enough ingredients for the user choice.
water_required = MENU[selected_coffee]['ingredients']['water']
milk_required = MENU[selected_coffee]['ingredients']['milk']
coffee_required = MENU[selected_coffee]['ingredients']['coffee']
water_stock = resources['water']
milk_stock = resources['milk']
coffee_stock = resources['coffee']
if water_required <= water_stock:
if milk_required <= milk_stock:
if coffee_required <= coffee_stock:
return True
else:
return False
Si hay ingredients me da True, si no hay me da False, y ya con ese resultado hago lo que quiera. Tambien te diría aunque aqui igual me equivoco(ya por complicar y proofear la "aplicación"de cara al futuro) que es mejor hacer las comparaciones Diccionario a Diccionario que Diccionario a numero. Porque si en un futuro quisieras cambiar las recetas, con cambiar el diccionario de recetas ya estaría, como lo tienes tu tendrías que buscar en tu codigo todos los lugares donde utilizas esas cantidades y cambiarlas a mano una a una.
Y como pregunta, en mi caso, que sería más correcto, como lo tengo ahora, o comparar directamente resources['water'] == MENU[selected_coffee]['ingredients']['water'] ?
Lo he convertido en variables simplemente para facilitar la lectura del codigo, ya que funcionalmente es igual, pero no se si es correcto.
#596 Si es mejor comprar diccionarios, pero bueno estoy medio contento como ha salido teniendo en cuenta que no segui nada de ella, vi como funcionaba y me puse a hacerla
#598 puedes pasar el código en un pastebin o algo? Seguro que es algun detalle tonto pero es complicado que te sepamos decir sin tener que montar el código nosotros desde cero
A las malas debo de tener por ahí mi propio código de cuando hice esas lecciones, no me suena tener tal problema
#598 no te compliques, si es el del cuadro, hazlo desde el 0,0 hasta el 300, 0 por ejemplo y vuelve arriba. 0, 50 por ejemplo. Una vez que lo tengas, ajusta las coordenadas iniciales y listo.
Con que lo estás haciendo? Goto? Setpos? Cada coordenada por separado?