Débuter en python
Un petit topic sans prétention pour vous apprendre les rudiments qu'est le langage Python. Alors oui il existe déjà énormément de tutos facilement trouvable sur l'internet, mais là je voulais faire un petit truc à la sauce jvc.
Avant toute chose, sachez qu'avec ce langage, on peut faire rapidement des trucs sympas en quelques lignes de codes. Python est utilisé dans beaucoup domaines tel que l'analyse de données, la robotique, la domotique, l'automatisation de taches répétitives, création de sites ou bien encore dans la création de jeux vidéos. La liste est loin d'être complète, la seule limite en réalité c'est celle de votre créativité ![]()
Trêve de blablas et commençons un peu à s'amuser !
Allez sur ce site https://www.programiz.com/python-programming/online-compiler/
A gauche se trouvera le code que vous allez écrire, tandis que la partie droite vous affichera le résultat de votre code
Remarquez qu'il y a déjà une instruction écrite et qui est la suivante :
print("Hello world")
Cliquez sur le bouton Run en plein milieu de la page afin d'exécuter le code.
L'instruction print vous permet simplement d'afficher la chaîne de caractère que vous avez renseigné entre parenthèses
Donc si je fais
print('toto')Le resultat sera donc toto
En python, pour créer une variable pas besoin de préciser son type de variable, on se contente d'écrire de la façon suivante :
une_variable = 'blabla'
Il existe plusieurs sortes de variable dont voici les principales
nombre = 42
chaine = 'hi-fi'
liste = [2,'course']
#une liste est un agrégat de plusieurs variables pouvant être de différents types si besoin
Afficher le contenu d'une variable
Simplement en indiquant le nom de la variable entre les parenthèses
print(chaine)
Résultat : hi-fi
Manipuler les chaines de caractères
Pour ce faire, il existe une multitude de fonctions qui permet de travailler les caractères
#Soit la variable suivante
chaine = 'hi-fi'
chaine = chaine.replace('i','o') # remplacer des caractères par d'autres
resultat 'ho-fo'
chaine = chaine.split('-') #permet de découper une chaine en fonction d'un motif
Ce qui nous donnera ['ho','fo']
En python vous verrez très souvent le symbole # suivi d'un commentaire, ça permet de signaler au langage que ce n'est pas du code et qu'il ne sera pas donc pas interprété
Manipuler les listes
liste = [2,'course']
liste.append('à faire') # permet d'ajouter un élément à la liste existante
resultat [2,'course','à faire']
liste.remove(2) # permet d'enlever un élément de la liste
Résultat ['course','à faire']
Enfin vous pouvez parcourir les listes ainsi que les chaines de caractères de la façon suivante
liste = ['course','à faire']
print(liste[0]) # on demande à accéder au premier élement de notre liste
Résultat course
chaine = 'hi-fi'
print(chaine[1]) # on veut accéder au deuxième caractère de notre chaine
Résultat i
Si vous tentez d'accéder à un élément dont l'index n'existe, python vous le signalera par une erreur
Parcourir une liste ou une chaine avec une boucle ![]()
La boucle est très utile pour effectuer de façon itérative des opérations sur des listes ou chaines de caractères
#Reprenons notre liste
liste = [2,'course','à faire']
#On souhaiterait afficher tous les éléments de la liste
#Logiquement on ferait ainsi :
print(liste[0])
print(liste[1])
#etc
Ou vous pouvez simplement utiliser la boucle avec les mots clés suivant : for et in
for element in liste:
print(element)
Résultat
2
course
à faire
Pour la faire simple, on demande à python d'aller récupérer chaque élément dans notre liste, puis pour chaque élément récupéré on lui demande de le stocker dans la variable element.
Ensuite le print fait son travail en affichant à chaque itération le contenu de la variable element. Donc si je traduis littéralement le bloc de code, cela donnerait ceci
pour (for) la variable element récupère-moi le résultat dans (in) la liste 'liste'
Imprime-moi le contenu de la variable element
Même principe si vous souhaitez parcourir une chaine de caractères
#Reprenons notre variable
chaine = 'hi-fi'
for lettre in chaine:
print(lettre)
Résultat
h
i
-
f
i
Attention la première ligne d'une boucle doit impérativement se terminer par les deux points :
Pour les lignes suivantes, toutes les instructions de cette boucle doivent commencer par une indentation autrement python vous signalera votre erreur.
Veillez également à utiliser le même nombre d'espaces pour chaque nouvelle indentation
Arrête tes copier coller
a = [1, 2]
b = a
b.append(3)
print(a)python ![]()
Importer et utiliser un module
En tant que nouveau pythoniste, il va certainement vous arriver à un moment donné d'utiliser des modules. Ces derniers sont des librairies extérieures à votre programme, et qui sont appelées pour exécuter certaines portions de code. Souvent les imports se font au tout début de votre script, on procèdera ainsi
import math
pi = math.cos(2)
print(pi)
Ici on demandera d'importer le module math s'il existe, puis de récupérer la valeur du cosinus de 2 grâce à ce module, pour finalement l'afficher à notre écran
Bon les gars, vous avez tous les éléments pour créer un petit script qui va vous récupérer des anecdotes sur le site VDM. Et oui rien que ça ![]()
Donc on a vu que pour importer un module, il fallait le faire dès le début. On va utiliser le module requests qui va nous permettre de récupérer le code source d'une page. Puis dans la foulée, on utilisera stockera l'url du site qui nous intéresse
import requests
url = 'https://www.viedemerde.fr/aleatoire'
#On a défini l'import ainsi que son adresse, maintenant on va récupérer la source en faisant comme suit
code_source = requests.get(url).content.decode('utf-8')
Vous ne savez pas ce que vous avez fait ? Eh bien on demande au module requests d'aller à l'adresse indiquée puis avec le .content on récupère le contenu de la page en html. Enfin le .decode('utf-8') permet de décoder le contenu en utilisant le jeu de caractères utf-8
Si vous exécuter le code, la début de la partie droite devrait ressembler à ceci :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
Vous avez dans code_source le contenu de la page désirée, cette variable est une chaîne de caractères qui en contient énormément.. On va faire le ménage dans tout ça
Dans le code source on sait que les anecdoctes VDM commencent tous par la balise html <h2 class="classic-title"> et que chacune d'entre elle se termine par ces fameuses trois dernières lettres : VDM
On va les définir dans des variables pour faciliter les opérations après
start_vdm = '<h2 class="classic-title">'
end_vdm = 'VDM'
Précédemment nous avons vu qu'on pouvait découper une chaîne de caractères en plusieurs si ce dernier correspond au motif. On va commencer par découper notre grosse chaîne ainsi
code_source = code_source.split(start_vdm)[1:]
Le slicing
C'est là que rentre en compte le slicing ou le découpage en français. Le slicing vous sera d'une extrême utilité car il vous permet de sélectionner des éléments bien précis d'une liste
#Slice de base en partant de la liste ci-dessous
une_liste = ['il','était','une','fois']
#On voudrait n'afficher que les deux premiers éléments
print(une_liste[:2])
resultat ['il','était']
#Maintenant on veut afficher que les 3 derniers
print(une_liste[1:])
Résultat ['était','une','fois']
Dans le premier exemple, on demande à accéder aux éléments de la liste jusqu'au 2ème index. En informatique on commence toujours par le zéro, donc on va afficher les éléments respectifs de l'index 0 et 1
Dans le second exemple, on demande les éléments qui suivent l'index 1 en incluant également ce dernier, ce nous donnera l'accès aux éléments des index 1,2 et 3
Pour en revenir à notre petit projet de VDM, le [1:] est important car il permet de récupérer tous les éléments sauf le premier dont on en a pas besoin. On faisant cela, on obtient une liste d'éléments assez conséquents, il nous reste maintenant à filtrer de telle sorte qu'on ne récupère que les VDM et rien d'autre
Comme on a vu avant, lorsqu'on utilise la fonction split() sur une chaîne, cette dernière passe du type str au type liste. Pour pouvoir travailler sur tous les éléments on utilise la boucle
for vdm in code_source:
vdm = vdm.split(end_vdm)[0]
print(vdm)
Comme on avait énoncé précédemment, une anecdocte VDM commence avec start_vdm et se termine avec end_vdm. Nous avions déjà découpé le début de chaque VDM, mais pas la fin, c'est pour cette raison que nous faisons un vdm.split(end_vdm)[0]. Le [0] permet de préciser qu'on ne souhaite récupérer que le premier élément issu du split, c'est ce qui nous intéresse justement puisque il s'agit bien de notre VDM
Le mini projet
Votre code final devrait ressembler à ceci
import requests
url = 'https://www.viedemerde.fr/aleatoire'
code_source = requests.get(url).content.decode('utf-8')
start_vdm = '<h2 class="classic-title">'
end_vdm = 'VDM'
code_source = code_source.split(start_vdm)[1:]
for vdm in code_source:
vdm = vdm.split(end_vdm)[0]
print(vdm)
Quelques améliorations
A ce stade, vous avez déjà fait la majeur partie du script, mais il y a certainement quelques détails qui vous chagrinent n'est-ce pas ?
Les vdm sont affichés les uns après les autres sans aucun saut de ligne, il serait plus jolie visuellement des les séparer avec un saut. Simple comme bonjour !, ajoutez '\n' pour dire à python de sauter une ligne
print(vdm,'\n')
#au lieu de
print(vdm)
Ensuite au niveau des VDM, vous constaterez que leur titre se termine par </h2> et que vous avez aussi cette suite de caractères ' qui est en fait du html pour afficher le symbole ' (apostrophe)
Nous allons créer une fonction qui va faire le ménage dans tous les VDM, en lui demandant de supprimer ces éléments à chaque fois qu'il va en recontrer. Une fonction en Python est un bloc d'instructions qui peut être exécuter à chaque fois qu'on appelle cette fonction.
Définir une fonction
def ma_fonction(une_variable):
print('Affichage du contenu ', une_variable)
Ainsi on utilise le mot clé def suivi du nom de la fonction. Vous trouverez à la suite ce qu'on appelle les arguments de la fonction, ici nous n'avons qu'un mais sachez que vous pouvez en mettre plusieurs en prenant soin de les séparer par une virgule. Un argument est simplement une variable qu'on va passer au moment où on va l'appeler. On souhaite justement utiliser notre fonction, on procèdera ainsi
autre_variable = 'titi'
ma_fonction(autre_variable)
Résultat Affichage du contenu titi
Un autre élément intéressant d'une fonction, c'est qu'on peut retourner une valeur lorsque la fonction a été exécutée et récupérer cette valeur dans une nouvelle variable. On fera ainsi
def ma_fonction(une_variable):
print('Affichage du contenu ', une_variable)
return 'pouet'
autre_variable = 'titi'
variable_retour = ma_fonction(autre_variable)
print(variable_retour)
Réultat :
Affichage du contenu titi
pouet
Bref revenons à notre projet désormais, on a décidé de supprimer les éléments </h2> et ' (pour le remplacer par l'apostrophe). Souvenez-vous il y a une fonction qui fait ça et qui s'appelle replace().
Dans un premier temps on va créer notre propre fonction qu'on nommera remplacer() qui prendra en argument la VDM à traiter, à l'intérieur de cette fonction on fera appel à la fonction replace().
Petit détail qui a son importance, la définition d'une fonction doit toujours se faire avant son appel, autrement python vous signalera qu'il ne connaît pas cette fonction
Ce qui nous donne
def remplacer(vdm):
vdm = vdm.replace('</h2>','') #on remplace par rien
vdm = vdm.replace(''', "'") #ici on le substitue à l'apostophre
return vdm # pour finalement retourner le résultat de la fonction
Le script final devrait ressembler à ceci
import requests
url = 'https://www.viedemerde.fr/aleatoire'
code_source = requests.get(url).content.decode('utf-8')
start_vdm = '<h2 class="classic-title">'
end_vdm = 'VDM'
def remplacer(vdm):
vdm = vdm.replace('</h2>','') #on remplace par rien
vdm = vdm.replace(''', "'") #ici on le substitue à l'apostophre
return vdm # pour finalement retourner le résultat de la fonction
code_source = code_source.split(start_vdm)[1:]
for vdm in code_source:
vdm = vdm.split(end_vdm)[0]
vdm = remplacer(vdm)
print(vdm,'\n')
Petit edit : j'ai corrigé ces foutues indentations ![]()

Le 12 juin 2021 à 16:36:19 :
Arrête tes copier coller
Premier vdm
Le 12 juin 2021 à 16:42:39 :
a = [1, 2] b = a b.append(3) print(a)python
Et c'est quoi le soucis ? ![]()
Les javafags en sueur devant un langage aussi pratique et efficace ![]()
Le 12 juin 2021 à 16:45:35 StarLink_ a écrit :
Le 12 juin 2021 à 16:42:39 :
a = [1, 2] b = a b.append(3) print(a)python
Et c'est quoi le soucis ?
Laisse, il viens de découvrir les références, ça le rend fifou 
Le 12 juin 2021 à 16:47:39 StarLink_ a écrit :
Les javafags en sueur devant un langage aussi pratique et efficace
D'un point de vue éducatif, Java est bien mieux que python par contre 
Le 12 juin 2021 à 16:43:59 :

Le 12 juin 2021 à 16:48:25 tokpela a écrit :
Le 12 juin 2021 à 16:45:35 StarLink_ a écrit :
Le 12 juin 2021 à 16:42:39 :
a = [1, 2] b = a b.append(3) print(a)python
Et c'est quoi le soucis ?
Laisse, il viens de découvrir les références, ça le rend fifou
Non ça va j'ai 4 ans d'xp pro en C++, les références je connais ![]()
Mais avoir ce comportement par défaut dans un langage, c'est générateur de bugs.
Le 12 juin 2021 à 16:50:13 :
Le 12 juin 2021 à 16:48:25 tokpela a écrit :
Le 12 juin 2021 à 16:45:35 StarLink_ a écrit :
Le 12 juin 2021 à 16:42:39 :
a = [1, 2] b = a b.append(3) print(a)python
Et c'est quoi le soucis ?
Laisse, il viens de découvrir les références, ça le rend fifou
Non ça va j'ai 4 ans d'xp pro en C++, les références je connais
Mais avoir ce comportement par défaut dans un langage, c'est générateur de bugs.
Aya t'as le cerveau si étriqué que t'arrives pas à switch entre deux paradigmes de programmation ? ![]()
Le 12 juin 2021 à 16:49:53 :
Le 12 juin 2021 à 16:47:39 StarLink_ a écrit :
Les javafags en sueur devant un langage aussi pratique et efficaceD'un point de vue éducatif, Java est bien mieux que python par contre
Qu'est-ce que tu entends par éducatif ? ![]()
Il y a pas à se prendre la tête à mettre des points virgules, des accolades ou autres formules lorsqu'on programme, on se concentre sur l'essentiel, c'est parfait pour apprendre à coder je trouve
Le 12 juin 2021 à 16:50:13 :
Le 12 juin 2021 à 16:48:25 tokpela a écrit :
Le 12 juin 2021 à 16:45:35 StarLink_ a écrit :
Le 12 juin 2021 à 16:42:39 :
a = [1, 2] b = a b.append(3) print(a)python
Et c'est quoi le soucis ?
Laisse, il viens de découvrir les références, ça le rend fifou
Non ça va j'ai 4 ans d'xp pro en C++, les références je connais
Mais avoir ce comportement par défaut dans un langage, c'est générateur de bugs.
C'est vrai qu'en C faut faire appel à une troisième variable pour faire un switch entre variable ![]()
Par contre ça pardonne pas les erreurs d'indentations, la copie finale du projet sans erreur
import requests
url = 'https://www.viedemerde.fr/aleatoire'
code_source = requests.get(url).content.decode('utf-8')
start_vdm = '<h2 class="classic-title">'
end_vdm = 'VDM'
def remplacer(vdm):
vdm = vdm.replace('</h2>','') #on remplace par rien
vdm = vdm.replace(''', "'") #ici on le substitue à l'apostophre
return vdm # pour finalement retourner le résultat de la fonction
code_source = code_source.split(start_vdm)[1:]
for vdm in code_source:
vdm = vdm.split(end_vdm)[0]
vdm = remplacer(vdm)
print(vdm,'\n')
Le 12 juin 2021 à 16:50:13 Jency21 a écrit :
Le 12 juin 2021 à 16:48:25 tokpela a écrit :
Le 12 juin 2021 à 16:45:35 StarLink_ a écrit :
Le 12 juin 2021 à 16:42:39 :
a = [1, 2] b = a b.append(3) print(a)python
Et c'est quoi le soucis ?
Laisse, il viens de découvrir les références, ça le rend fifou
Non ça va j'ai 4 ans d'xp pro en C++, les références je connais
Mais avoir ce comportement par défaut dans un langage, c'est générateur de bugs.
Pas faux. Mais ça s'apprend assez rapidement.
Le 12 juin 2021 à 16:51:45 StarLink_ a écrit :
Le 12 juin 2021 à 16:49:53 :
Le 12 juin 2021 à 16:47:39 StarLink_ a écrit :
Les javafags en sueur devant un langage aussi pratique et efficaceD'un point de vue éducatif, Java est bien mieux que python par contre
Qu'est-ce que tu entends par éducatif ?
Il y a pas à se prendre la tête à mettre des points virgules, des accolades ou autres formules lorsqu'on programme, on se concentre sur l'essentiel, c'est parfait pour apprendre à coder je trouve
Si tu cherche à coder juste pour toi, pour des petits projets perso, moui ça peut aller
C'est pas tellement une question de syntaxe mais de paradigme. Java est fortement typé objet + est très verbeux donc toutes les notions objet sont parfaitement définies par une syntaxe. En Python c'est un flottement, tu peut programmer par des paradigmes différents mais c'est moins explicite.
Sympa 
Le 12 juin 2021 à 16:55:50 :
Le 12 juin 2021 à 16:50:13 Jency21 a écrit :
Le 12 juin 2021 à 16:48:25 tokpela a écrit :
Le 12 juin 2021 à 16:45:35 StarLink_ a écrit :
Le 12 juin 2021 à 16:42:39 :
a = [1, 2] b = a b.append(3) print(a)python
Et c'est quoi le soucis ?
Laisse, il viens de découvrir les références, ça le rend fifou
Non ça va j'ai 4 ans d'xp pro en C++, les références je connais
Mais avoir ce comportement par défaut dans un langage, c'est générateur de bugs.
Pas faux. Mais ça s'apprend assez rapidement.
Le 12 juin 2021 à 16:51:45 StarLink_ a écrit :
Le 12 juin 2021 à 16:49:53 :
Le 12 juin 2021 à 16:47:39 StarLink_ a écrit :
Les javafags en sueur devant un langage aussi pratique et efficaceD'un point de vue éducatif, Java est bien mieux que python par contre
Qu'est-ce que tu entends par éducatif ?
Il y a pas à se prendre la tête à mettre des points virgules, des accolades ou autres formules lorsqu'on programme, on se concentre sur l'essentiel, c'est parfait pour apprendre à coder je trouveSi tu cherche à coder juste pour toi, pour des petits projets perso, moui ça peut aller
C'est pas tellement une question de syntaxe mais de paradigme. Java est fortement typé objet + est très verbeux donc toutes les notions objet sont parfaitement définies par une syntaxe. En Python c'est un flottement, tu peut programmer par des paradigmes différents mais c'est moins explicite.
Même sur des gros projets on hésite plus à intégrer ce langage, ça reste une question d'habitude sur la façon de concevoir le logiciel, une fois que t'as passé le cap tu te rends compte que c'est bien foutu quand même ![]()
Le 12 juin 2021 à 16:50:13 :
Le 12 juin 2021 à 16:48:25 tokpela a écrit :
Le 12 juin 2021 à 16:45:35 StarLink_ a écrit :
Le 12 juin 2021 à 16:42:39 :
a = [1, 2] b = a b.append(3) print(a)python
Et c'est quoi le soucis ?
Laisse, il viens de découvrir les références, ça le rend fifou
Non ça va j'ai 4 ans d'xp pro en C++, les références je connais
Mais avoir ce comportement par défaut dans un langage, c'est générateur de bugs.
Ouais enfin la c'est pas que python hein, pratiuqement tous les languages haut niveua c'est comme ça ![]()
Java c'est pareil, javascript c'est pareil...