Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Day01 - Basics 2 #2

Closed
6 of 7 tasks
maximechoulika opened this issue Aug 7, 2019 · 38 comments
Closed
6 of 7 tasks

Day01 - Basics 2 #2

maximechoulika opened this issue Aug 7, 2019 · 38 comments
Assignees
Projects

Comments

@maximechoulika
Copy link
Member

maximechoulika commented Aug 7, 2019

Notions:

  • objects
  • cast
  • constructors
  • built-in functions
  • inheritance
  • iterator (range ...)
  • generator
@maximechoulika maximechoulika changed the title Day01 Day01 - Basics 2 Aug 7, 2019
@maximechoulika maximechoulika added this to To DO in Phase 1 Aug 7, 2019
@maximechoulika maximechoulika added this to In progress in Phase 1 Aug 12, 2019
@maximechoulika maximechoulika moved this from In progress to To do in Phase 1 Aug 12, 2019
@matboivin matboivin self-assigned this Aug 30, 2019
@matboivin
Copy link
Member

Hi! How many exercises would we have?

@maximechoulika
Copy link
Member Author

Maybe 6

@matboivin matboivin moved this from To do to In progress in Phase 1 Sep 15, 2019
@blefeuvr
Copy link
Collaborator

blefeuvr commented Oct 9, 2019

Yo, j'ai corrigé pas mal de markdown et de petits trucs

Pour les plus grosses modifs:
je pense que ex00/ex00.md lignes 29->43
c'est pas necessaire que ce soit expliqué ils peuvent trouver ca sur internet en 2 clics

@barthelemyleveque
Copy link

Hello ! Pour l'exo 01, qui est super complet, je pense qu'il faudrait apporter certaines precisions :

  • Quelle gestion d'erreur pour book ? Est-ce qu'on doit gerer si ce n'est pas une classe Recipe qui est ajoutée ?
  • Preciser que lorsqu'on ajoute une recette il faut update self.last_update
  • Pour test.py, il est precise from book import * ; il faut egalement import recipe pour pouvoir creer des recettes (je mettrais ces infos sur test.py a la fin, pour clarifier un peu l'enchainement)

@Fulguritude
Copy link

Pour l'ex00: le nom du fichier, recipe.py ou recipy.py (jeu de mots ?)

@Fulguritude
Copy link

Ex00: in "Recipe" class : naming attributes or arguments like keywords is bad practice ('type'=>'recipe_type')

@maximechoulika
Copy link
Member Author

#2 (comment)
En effet il faudrais vérifier que c’est bien une classe recipe

@maximechoulika
Copy link
Member Author

#2 (comment)
Tout à fait my bad, on va changer ca

@Fulguritude
Copy link

Ex00: le lien datetime du pdf en anglais redirige vers la doc python en français

@Fulguritude
Copy link

Ex00: in "Recipe" class : naming attributes or arguments like keywords is bad practice ('type'=>'recipe_type')

Idem pour la fonction get_recipe_by_types(self, [recipe_]type)

@Fulguritude
Copy link

Ex00: peu clair:
def get_recipe_by_name(self, name): """Print a recipe with the name 'name' """
Pas clair, il faut return la recipe (get) ou l'afficher (print), ou les deux ?

@maximechoulika
Copy link
Member Author

maximechoulika commented Oct 15, 2019

#2 (comment)
Les deux

@Fulguritude
Copy link

Fulguritude commented Oct 15, 2019

Ex01: je trouve l'exo pas mal, mais ce serait pas encore mieux de l'utiliser pour montrer la 'double-inheritance' de python (style une classe GoTCharacter, une classe GoTHouse, et une classe GoTStarkCharacter qui hérite des deux) ?

Edit: surtout que l'ex01 est super simple comparé à l'ex00 quand même plus long

@maximechoulika
Copy link
Member Author

#2 (comment)
Super idée, peut être un exercice en plus ?
Je trouve ça bien de voir la notion d’heritage Dans un exercice sépare.
Tu en penses quoi @Fulguritude ?

@Fulguritude
Copy link

Fulguritude commented Oct 15, 2019

Ex02:

  • bad practice 'len' plutôt que 'length' en attribut
  • le commentaire de "mul" ne s'affiche pas correctement
  • le constructeur façon "range" est pas clair: si je donne par exemple Vector(0.2, 7.5) c'est censé donner quoi ? Il faut le faire façon interpolation linéaire a priori, mais du coup il y a ambiguité quand on a juste (start, stop) et pas (start, stop, step) [Edit: en fait je suis bête, je viens de comprendre qu'il faut juste appeler range avec les *args... xd]
  • ajouter un scalaire et un vecteur, c'est façon opencl, où on transforme un scalaire en un vecteur de taille n où chaque coordonnées a la valeur du scalaire ?
  • multiplier des vecteurs: dot product ou schur product ? (ie, retour d'un scalaire ou d'un vecteur de même taille)

@Fulguritude
Copy link

Fulguritude commented Oct 15, 2019

#2 (comment)
Super idée, peut être un exercice en plus ?
Je trouve ça bien de voir la notion d’heritage Dans un exercice sépare.
Tu en penses quoi @Fulguritude ?

C'était pas déjà le principe de l'ex01 ? xd J'ai peur d'avoir raté qqch alors. Il y a une magic method à faire, un héritage simple avec un "super", et une instanciation d'objet avec 2-3 tests. Il me manque qqch ?
Mais si tu penses qu'il vaut mieux un exo héritage simple puis un exo héritage multiple c'est effectivement sûrement plus pédagogique

Edit: après je serais pour garder le GoT pour l'héritage multiple vu qu'il est simple et s'y prête très bien

@barthelemyleveque
Copy link

Ex02 : div n'est plus supporte sur python3, maintenant c'est truediv, le sujet induit en erreur

@maximechoulika maximechoulika moved this from In progress to In testing / fixing in Phase 1 Oct 15, 2019
@maximechoulika
Copy link
Member Author

Ex02 : div n'est plus supporte sur python3, maintenant c'est truediv, le sujet induit en erreur

Wow je ne savais pas vraiment dsl :S

@barthelemyleveque
Copy link

ahah tkt moi non plus je savais pas avant d'avoir des TypeError partout lol

@maximechoulika
Copy link
Member Author

maximechoulika commented Oct 15, 2019

multiplier des vecteurs: dot product ou schur product ? (ie, retour d'un scalaire ou d'un vecteur de même taille)

=> dot product pour moi, mais il faudrait en effet plus d'exemples.

@maximechoulika
Copy link
Member Author

#2 (comment)
Super idée, peut être un exercice en plus ?
Je trouve ça bien de voir la notion d’heritage Dans un exercice sépare.
Tu en penses quoi @Fulguritude ?

C'était pas déjà le principe de l'ex01 ? xd J'ai peur d'avoir raté qqch alors. Il y a une magic method à faire, un héritage simple avec un "super", et une instanciation d'objet avec 2-3 tests. Il me manque qqch ?
Mais si tu penses qu'il vaut mieux un exo héritage simple puis un exo héritage multiple c'est effectivement sûrement plus pédagogique

Edit: après je serais pour garder le GoT pour l'héritage multiple vu qu'il est simple et s'y prête très bien

J'en prend note on va ajouter un exo d'heritage simple et faire de l'heritage multiple pour Got.
Thx

@barthelemyleveque
Copy link

ex03 : pour l'option shuffle j'ai import le module random pour shuffle ma liste. Est-ce que vous attendiez quelque chose de + artisanal ? Si oui il faudrait preciser son interdiction dans le sujet :)

@barthelemyleveque
Copy link

ex04 : pas tres clair la difference entre zip_eval et enumerate_eval ; au final on a la meme fonction dans les deux fichiers, qu'on importe sous un nom different dans un 3eme dans le test ?

@maximechoulika
Copy link
Member Author

ex02 add != radd ajouter ça dans l'exo

@maximechoulika
Copy link
Member Author

ex04 : pas tres clair la difference entre zip_eval et enumerate_eval ; au final on a la meme fonction dans les deux fichiers, qu'on importe sous un nom different dans un 3eme dans le test ?

On voulait forcer les gens a use zip et enumerate mais j'ai l'impression que c'est raté :'(

@barthelemyleveque
Copy link

ex04 : je crois que le resultat de l'exemple est pas bon :

words = ["Le", "Lorem", "Ipsum", "est", "simple"]
coefs = [1.0, 2.0, 1.0, 4.0, 0.5]
zip_evaluate(coefs, words)
34.0

(Le * 1 = 2) + (Lorem * 2 = 10 ) + (Ipsum * 1 = 5) + (est * 4 = 12) + (simple * 0.5 = 3)
<=> 2 + 10 + 5 + 12 + 3
<=> 32.0

@Fulguritude
Copy link

Je dis peut-être une bêtise, mais dans ex03, l'usage de sep=" " dans les exemples ne signifie-t-il pas que sep est lui aussi un kw_arg optionnel ?

@Fulguritude
Copy link

ex03: error handling en cas de mauvais option string non-spécifié

@barthelemyleveque
Copy link

ex05 : ça pourrait être cool d'avoir un petit fichier de test

@Fulguritude
Copy link

ex03: l'exemple "ordre alphabétique" n'est pas en ordre alphabétique, ni même en ordre ASCII. Il est en quelque sorte en alphabétique-ascii-inverse (ordre ascii où les majuscules sont plus tardives que les minuscules dans la séquence)

@maximechoulika
Copy link
Member Author

Je dis peut-être une bêtise, mais dans ex03, l'usage de sep=" " dans les exemples ne signifie-t-il pas que sep est lui aussi un kw_arg optionnel ?

En effet, je vais update ça

ex05 : ça pourrait être cool d'avoir un petit fichier de test

Yes on va ajouter ça

ex03: error handling en cas de mauvais option string non-spécifié

Thx

ex03: l'exemple "ordre alphabétique" n'est pas en ordre alphabétique, ni même en ordre ASCII. Il est en quelque sorte en alphabétique-ascii-inverse (ordre ascii où les majuscules sont plus tardives que les minuscules dans la séquence)

Yes en effet on va garder ça et changer la consigne alphabetically sort the words.

@maximechoulika
Copy link
Member Author

ex04 : je crois que le resultat de l'exemple est pas bon :

words = ["Le", "Lorem", "Ipsum", "est", "simple"]
coefs = [1.0, 2.0, 1.0, 4.0, 0.5]
zip_evaluate(coefs, words)
34.0

(Le * 1 = 2) + (Lorem * 2 = 10 ) + (Ipsum * 1 = 5) + (est * 4 = 12) + (simple * 0.5 = 3)
<=> 2 + 10 + 5 + 12 + 3
<=> 32.0

j'update ça

@Fulguritude
Copy link

ex05: 'origin' en anglais, pas 'origine'

@Fulguritude
Copy link

C'est normal

		if hasattr(self, 'value'):
        	 	self.value = 0

dans ex05 ? On a pas envie que le compte ait toujours une valeur? Le if c'est pas plutôt
if 'value' in kwargs ?

@Fulguritude
Copy link

ex05: la condition "un compte avec un nombre pair d'attributs est corrompu" me paraît bizarre; il faut réparer un compte comment dans ce cas-là ?

@Fulguritude
Copy link

ex05: rajouter la condition "transaction invalide si amount < 0": je connais littéralement le talk d'un hacker islandais qui a réparé cette erreur chez une banque: un petit virement de -2000 à qq'un d'autre et je lui vole 2000 balles... ^^"

@remyoster
Copy link

J'ajouterai pour ma part que je trouverai ca cool et pas forcemment trop difficile d'imbriquer les functions des exos 3-4 dans des methodes de classe juste histoire de garder le fil conducteur du day, si j'ai bien compris votre intention : Apprehender les classes.
Par exemple pour l'exo 4 ecrire une classe Zipper qui possede une methode zip_that qui DOIT utiliser zip et une methode evaluate qui utilise la methode zip_that pour rendre le resultat final.
Et du coup peut etre modifier l'ordre des exos car le 02 me semble etre le plus compliqué (or 05).

@maximechoulika
Copy link
Member Author

All recorded in #22
Closing issue

@matboivin matboivin moved this from In testing / fixing to Done in Phase 1 Oct 17, 2019
@matboivin matboivin removed this from Done in Phase 1 Jun 12, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Phase 1
To DO
Development

No branches or pull requests

7 participants