# En langage Python, l'ajout d'un commentaire est précédé du caractère dièse '#'
Il est fortement recommandé d'insérer un de ces jeux de caractères suivant. Le pseudo-commentaire se fait généralement à la première ligne du script.
# -*- coding:Utf-8 -*-# -*- coding:Latin-1 -*-
Pour être certain que le script sera bine interprété, il est conseillé d'utiliser l'utf-8
En Python, l'indentation est obligatoire sinon vous allez générer des erreurs... Lorsque vous voulez effectuer un 'if' ou un 'while', vous devez indenter chaque bloc de codes respectif, en général on prend soit 4 espaces, soit une tabulation (mais il est préférable d'utiliser les espaces).
Exemple :
var = 35
if (var < 35):
print "La variable ne vaut pas 35"
else:
print "La variable vaut 35 ou plus" #erreur d'indentation ce qui va provoquer une erreur
Et lorsqu'on tente d'exécuter le script, on obtient ceci :
IndentationError: expected an indented block
Par ailleurs, si vous ne respectez pas le nombre exact d'espaces pour chaque bloc respectif, Python vous fera signe de rectifier l'erreur.
Exemple :
var = 35
if (var < 35):
print "La variable ne vaut pas 35" # 4 espaces
else:
print "La variable vaut 35 ou plus" #erreur d'indentation ce qui va provoquer une erreur # 7 espaces pour l'indentation
On a ceci :
IndentationError: unindent does not match any outer indentation level
Par conséquence, indenter correctement votre code, le nombre d'espacement est à votre libre choix, mais il faudra l'appliquer sur la totalité de votre code.
Importation de module dans un fichier
from math import * #ici le caractère '*' permet d'importer l'ensemble des fonctions disponibles dans le module math
Le 'if', 'elif' et 'else'
var = 10
if (var > 10): #Les parenthèses ici sont facultatives, néanmoins on peut les garder pour une question de lisibilité
print "La variable est supérieur à 10"
elif (var < 10):
print "La variable est inférieur à 10"
else:
print "La variable est égale à 10"
Boucle 'while'
a = 0
while(a < 5):
print "Hello"
a += 1
Boucle 'for'
Le for en Python possède un fonctionnement différent par rapport à d'autres langages (e.g C/C++). En effet cette instruction se contente non pas de boucler un nombre x fois mais parcourt chaque case d'un tableau ou d'une chaine de caractères.
liste = ["texte1", "texte2", "texte3"]
for maVariable in liste:
print maVariable, # ajoute de la virgule pour afficher les valeurs sans saut de ligne
chaine = "Helloworld !"
for variable in chaine:
print variable,
Attention : il n'est pas possible d'utiliser de for sur des valeurs numériques simples (par contre cette instruction est applicable sur des tableaux de valeurs numériques).
La première boucle affichera : texte1 texte2 texte3
Seconde boucle : H e l l o w o r l d !
Il n'y a pas besoin d'indiquer en Python le type de variable lorsqu'on déclare cette dernière. Python se charge automatiquement du type de variable adéquat, il peut même si besoin modifier le type de la variable de façon dynamique, au cours de l'exécution du script.
Différentes manières de déclarer les variables
Affectation des variables à leurs valeurs respectives.
var1, var2, var3 = 25, 23.3, "Hello world !" #Il est possible de déclarer les variables ainsi
print var1, var2, var3
print type(var1), type(var2), type(var3)
Résultat :
25 23.3 Hello world !
(type 'int'), (type 'float'), (type 'str')
Autre façon de déclarer
var1 = var2 = 33
print var1, var2
Résultat :
33 33
Si l'on se trouve dans une fonction ayant une variable portant le même nom qu'une variable globale. On peut spécifier à la fonction qu'il faut traiter la variable globale et non celle locale. Ceci se fait en mettant le mot clé global devant la variable à modifier.
global var #pour utiliser une variable globale, toujours rajouter cette ligne en premier sans affection !
var = 0
Une liste est un ensemble de données dont chaque élément peut posséder un type différent (str, int, float etc...), elle peut notamment contenir d'autres listes.
Une liste se déclare ainsi :
liste = ["element1", "element2", "element3"]
Il est possible de parcourir cette liste, à condition de connaître l'index du ou des éléments que l'on souhaite consulter et/ou modifier.
print liste[0], liste[2]
print liste # si on ne précise pas l'index, on affiche alors le contenu de toute la liste
Résultat :
element1 element3
['element1', 'element2', 'element3']
On peut notamment rajouter un élément en fin de liste avec append() ou supprimer un élément quelconque si l'on connaît son index avec la fonction del()
Exemple :
liste.append("monElement") # ajoute un élément
del(liste[3]) #supprime l'élément lié à l'index
type() : affiche le type de la variable
len() : indique la taille de la chaîne de caractères
input() : équivalent au cin en c++
raw_input() : équivalent à input() mais retourne une variable de type string obligatoirement
int() : permet de convertir un nombre considéré comme chaîne de caractères en une variable de type integer
float() : idem mais en type float
str() : de même mais en string
hex() : convertit un nombre décimal en hexadécimal
bin() : convertir un nombre décimal en binaire
ord() : renvoi la valeur décimale ASCII du caractère
sort() : Extrêmement pratique, Python vous trie dans l'ordre croissant et alphabétique votre liste
reverse() : Inverse tout le contenu de votre liste
append() : ajoute un élément supplémentaire en fin d'une liste
del() : supprime un élément dont on aura indiquer son index
valeur = random.randint(1,4000) #intervalle de 1 à 4000 pour génération (pseudo) aléatoire.
On peut créer des fonctions dont on aura nous même écrit la définition
def maFonction(argument1, argument2):
#les instructions que doit effectuer votre fonction
return quelqueChose # il est possible que la fonction retourne une valeur
def fonction(val = 25, string = "Hi guy !"): #autre possibilité, on peut mettre des valeurs par défaut aux arguments
#blablabla
#appel de la fonction
maFonction(arg1, arg2)
#dans le cas où l'on a mis des valeurs par défaut aux arguments d'une fonction
#on peut se permettre de les mettre dans le désordre lors de son appel
fonction(string = "Ok go !", val = 11)
class uneClasse: #définition d'une classe en Python
variable = 25 # création d'un attribut
def uneFonction(self): #obligation de mettre un self même si il n'y pas d'argument utilisé
print "hello", uneClasse.variable
uneClasse.variable += 25
def autreFonction(self, parametre):
print parametre
print uneClasse.variable # les attributs d'une classe sont disponibles avant même une quelconque instantiation
maClasse = uneClasse() #instanciation de la classe
print maClasse.variable
#appel des méthodes de la classe uneClasse
maClasse.uneFonction() #modification de la valeur de l'attribut via la méthode
maClasse.autreFonction('essai')
print maClasse.variable
uneClasse.variable = 32 # seconde modification par simple affectation de valeur
print maClasse.variable
Console:
25
25
hello 25
essai
50
32
Il est possible d'afficher plusieurs éléments sur une même ligne en ajoutant une virgule à la fin de l'instruction print
i = 0
while i < 10:
print i,
i += 1 # on oublie pas d'incrémenter la variable sinon on aura une boucle infinie
Résultat :
0 1 2 3 4 5 6 7 8 9
Utilisation guillemets ou simple quote ?
Ces deux caractères sont acceptés sous Python pour définir une chaine de caractères. Cependant si votre chaine de caractère comporte des simples quotes (apostrophes) alors délimiter votre chaine par des guillemets et si il y a des guillemets faites le avec des simples quote.
str = "chaine de caractères à écrire"
fichier = open('chemin_du_fichier','a') #ouverture du fichier en écriture sans effacement
fichier.write(str)
fichier.close() # fermeture du fichier
fichier = open('chemin_du_fichier', 'r') # ouverture du fichier en lecture seule
buf = fichier.read() #renvoi tout le contenu du fichier
buf = fichier.readline() #idem mais ligne par ligne
buf = fichier.readlines() #affiche le contenu sans saut de ligne
fichier.close() # on n'oublie pas de ferme le flux
Options pour l'ouverture du fichier
'r' indique que le fichier sera seulement lu (‘read’)
'w' indique qu’on va seulement écrire dans le fichier (‘write’). Ouverture (ou création fichier) avec écrasement données
'a' indique que l’on ouvre le fichier en écriture mais sans écraser le contenu existant déjà.
'r+' indique que l’on ouvre le fichier à la fois en ouverture et en écriture.
import re # ne pas oublier d'importer ce module !!
regex = re.compile(r'\d+') # rehcherche de nombres
cout = regex.findall('565 1 2 44 2ot6ototototo') #cherche tous les nombres et les renvois dans une liste
print cout