Python : un bon bouquin pour débuter !

C’est celui mis en lien par MrAaaaah :slight_smile: Effectivement c’est très bon pour le moment. Clair et avec des exercices.

Alors j’avance tranquillement dans le livre.

J’ai fait cet exercice du livre :

increment=1
while (increment<2000):
print(increment, “euro(s) =”, increment*1.65, “dollar(s)”)
increment=increment+1

Et ça me renvoie ça (ça continue après évidemment mais je mets que ça ):

1 euro(s) = 1.65 dollar(s)
2 euro(s) = 3.3 dollar(s)
3 euro(s) = 4.949999999999999 dollar(s)

Je ne comprends pas pourquoi pour 3 euros, il ne renvoit pas 4.95 ? (après c’est pareil, pour certaines valeurs, il me met un arrondi zarbi, alors que pour les autres il y a bien 2 chiffres après la virgule).

Après promis je ne pose plus de questions. Mais là du coup, je ne trouve pas la réponse dans le livre (en tout cas dans la partie où je suis).

Tu ne peux pas faire tenir toutes les valeurs possibles de ℝ dans un nombre encodé sur une quantité finie de bits.
D’où les approximations et limitations que tu retrouves dans la plupart des langages.

https://docs.python.org/3/tutorial/floatingpoint.html

@FMP_thE_mAd

Tu dois avoir un problème de type de données. Là, sans voir l’exo, c’est typique des float (nombre à virgule flottante) alors qu’il faudrait utiliser des décimaux dans ton cas.

https://www.programiz.com/python-programming/numbers#dec

Ah oui ok je vois le soucis ! C’est quelque chose que je n’avais jamais saisi du coup (ou caché sur mes différents langages précédents).
Du coup j’ai modifié en faisant " *165/100 " et ça fonctionne !

Bon, il me reste à comprendre comment on utilise mon IDLE là (comment lancer le programme quoi) et je suis déjà chaud pour la suite.
J’aime bien :slight_smile:

Tu ne le trouves pas trop verbeux ?
Dans les liens sur la page de téléchargement, l’auteur en propose un autre qui me parait plus aéré et plus clair http://perso.limsi.fr/pointal/_media/python:cours:courspython3.pdf
Tu en penses quoi ?

En aparté pour d’autres qui voudraient une appli, il y a Sololearn sur iOs et Android. Je viens tout juste de commencer, difficile de juger encore. Parfois un peu léger en explications. Par contre c’est pas pratique pour référence ultérieure, juste pour apprendre à la cool dans le bus.

Tu sais qu’il tu as des interpréteur Python en ligne aussi :wink: très pratique.

Si, c’est vrai que sur certains trucs il ne va pas à l’essentiel de suite, et y a pas mal de répétitions. Mais je lis ces passages en diagonale et ça passe bien. Et puis, l’intérêt c’est qu’il explique quand même à fond le pourquoi, ce qui évite certaines erreurs d’emblée je pense.
Bref, ça ne me gêne pas, j’aime bien comprendre aussi le fond, au delà de juste savoir programmer en Python.

Mais c’est sur que pour accéder rapidement à une info, ton lien a l’air plus clair et concis. Je l’utiliserai sans doute aussi en parallèle.

Là je dois résoudre un problème : quand je lance mon script essai.py en double cliquant dessus, une fenêtre s’ouvre pour exécuter le script puis se referme aussitôt sans que je vois quoi que ce soit. Je pense que le script s’execute de suite, mais c’est tellement rapide que je vois rien avant que la fenêtre ne se referme.
Il faut que je trouve une instruction qui permet de laisser la fenêtre ouverte ou un truc dans le genre (quand j’éxecute le script dans l’IDLE, il fonctionne).

@Ewi : ah du coup c’est peut-être ça qu’il me faut pour exécuter mon script ? Je testerai ce soir.

Si tu veux voir le résultat hors IDE, il faut ouvrir un cmd ou un powershell et lancer le script a la main.
L’autre solution est de finir le script avec une commande « appuyer sur une touche pour continuer » mais c’est le genre de truc qu’on oublie dans le logiciel final et qui fout souvent la merde.

side note : le choix de l’IDE est important pour bosser confortablement et t’apportera beaucoup d’aides. Je bosse sur du python une bonne partie de la journée et depuis environ 1 an j’utilise VSCode + extensions python, et c’est très appréciable (https://code.visualstudio.com/docs/languages/python).

https://www.jdoodle.com/python3-programming-online Par exemple.

Mandatory XKCD strip : https://www.xkcd.com/353/

Mandatory developper blog (also, sometimes very NSFW) : http://sametmax.com/

1 « J'aime »

ça va peut être faire jaser mais https://zestedesavoir.com/tutoriels/799/apprendre-a-programmer-avec-python-3/ peut être une bonne intro.

Je rajoute de l’eau au moulin pour les IDE, pour ma part je conseille PyCharm que j’utilise au boulot. L’avantage d’un IDE comme VS Code et PyCharm ça va te permettre plus tard de faire du debug plus facilement, de faire tourner des programmes avec certaines configs, etc. Plus ça fait de l’analyse de ton code et détecte des erreurs à la volée, donc ça te fait moins de boulot !

1 « J'aime »

Bon je progresse un peu (jai fait un programme qui dessine une jolie spirale de Pythagore :

J’ai découvert le coup des modules, notamment math et turtle donc pour le moment.
Alors déjà je rame un peu pour voir toutes les fonctions disponibles (je vais sur le site Python 3 pour ça, mais c’est chaud de savoir s’il y a une fonction qui fait ce qu’on veut faire, ou s’il faut la bricoler soit même…)

Niveau dessin, je suis un peu déçu car c’est assez lent (peut-être que mon programme n’est pas optimisé aussi, mais je veux dire que le curseur qui dessine ne va pas très vite). Du coup difficile de faire des figures un peu compliquées avec ce module (comme des fractales par exemples)

Donc je voudrais maintenant gérer directement des « images » dans Python, et le faire dessiner directement avec ces images (un peu comme des tampons en fait). Ca irait plus vite pour peu que je dessine les images avant et que je me contente de les tamponner.

Est-ce qu’il y a un module qui permet de faire ça ? Si oui lequel ? Sinon bah… euh… je sais pas :slight_smile:

Pourtant avec turtle, ça va vite. Je penche pour un sleep dans un coin qui doit être là pour montrer « pas à pas » les étapes et que tu as pas commenté.

Pour ta deuxième question, pourquoi pas imagemagic ?

J’ai jamais essayé mais quand je cherchais des libs en js j’étais tombé sur https://bokeh.pydata.org/en/latest/ pour Python.
Ca avait l’air de faire le job.

Ah oui s’il ne montre pas le curseur par exemple ça pourrait aller plus vite ? Faudrait que je vois ça.

Merci pour les idées de modules, il faut que je me penche la dessus aussi.

Si jamais ça t’intéresse, voici une super façon d’expliquer la manière dont sont codés les nombres en virgule flottante, (en anglais) : http://fabiensanglard.net/floating_point_visually_explained/

Tu viens de découvrir pourquoi il ne fallait jamais utiliser des nombres a precision flottante pour representer de l’argent :).