Python et les chaînes de caractères

Après avoir télécharger ce fichier html (chaine.html) , compléter-le. L'ensemble du code python devra être taper dans un fichier chaine.py) Vous allez devoir restituer ces deux fichiers (chaine.html et chaine.py)

Le type string

Une donnée de type string peut se définir comme une suite de caractères. Dans un script python, on peut délimiter une telle suite de caractères, soit par des apostrophes (simple quotes), soit par des guillemets (double quotes). Exemples :
phrase1 = 'les oeufs durs.'
phrase2 = '"Oui", répondit-il,'
phrase3 = "j'aime bien"
print(phrase2, phrase3, phrase1)

Les 3 variables phrase1, phrase2, phrase3 sont des variables de type string appelées chaines de caractères.

type(phrase1)
type(phrase2)
type(phrase3)

On peut accédé à un caractère bien déterminé d'une chaîne de caractère :



Tester le code ci-dessous :
chaine="Bonjour"
chaine[0]
chaine[1]
chaine[2]
chaine[3]
chaine[-1]
Tester le code ci-dessous et dire le rôle de in :
chaine="Bonjour"
'jour' in chaine
'o' in chaine

Permet de tester si un caractère (ou "groupe" de caractères) est présent dans une chaine de caractère.

Attention : Les données informatiques sont presque toujours numérotées à partir de zéro (et non à partir de un).
C’est le cas pour les caractères d’une chaîne. (Le "B" est le caractère numéro 0)

len()

mot1="Coucou"
len(mot1)
len(mot2)

len prend en parametre une chaine de caractère est permet de compter le nombre de caractère dont est constitué la chaine



Tester et comprendre les deux codes ci-dessous :
chaine="Bonjour"
for caractere in chaine:
    print(caractere)
chaine="Bonjour"
for i in range(len(chaine)):
    print(chaine[i])

Ces deux codes permettent d'afficher un par un les caractères d'une chaine.



Tester et comprendre le code ci-dessous.
chaine="Bonjour"
tmp=""
for i in range(len(chaine)):
    tmp=tmp+chaine[i]
    print(tmp)
Compléter le code de façon à concaténer une lettre sur deux.
Par exemple : Bonjour devient Bnor
chaine="Bonjour"
tmp=""
for i in range(len(chaine)):
    if  
        tmp=tmp+chaine[i]
        ...

chaine="Bonjour"
tmp=""
for i in range(len(chaine)):
    if  i%2==0:
        tmp=tmp+chaine[i]
print(tmp)



Que permet de faire la fonction mystère?
def mystere(chaine):
    cpt=0
    for i in chaine:
        if i=="e":
            cpt=cpt+1

cpt contient le nombre de "e" présent dans la chaine mise en parametre.

Concaténation

Assembler plusieurs petites chaînes pour en construire de plus grandes. Cette opération s’appelle la concaténation. Exemple :

Tester le code ci-dessous :
a = 'Petit'
b= 'poisson'
c= 'deviendra'
d = 'grand'
e = a + b + c + d
print(e)
Modifier les variables a, b, c, et d de facon à obtenir une "belle" phrase.
On ajoute des espaces.
a = 'Petit '
b= 'poisson '
c= 'deviendra '
d = 'grand.'
e = a + b + c + d
print(e)

input()

Cette fonction provoque une interruption dans le programme courant.
L’utilisateur est invité à entrer des caractères au clavier et à terminer avec .
Exemple :
prenom = input("Entrez votre prénom : ")
print("Bonjour, " +  prenom)


  1. Ecrire un script qui demande à l'utilisateur son prénom et qui affiche :
    Bonjour "prénom", je suis content de te revoir!
  2. Ecrire un script qui demande à l'utilisateur son nom, son prénom et son sexe qui affiche :
    Bonjour "Monsieur ou madame"* "nom"*, votre prénom contient "x"* caractères. * On ajustera selon les données fournies par l'utilisateur.
  1. prenom=input("Votre prénom? ")
    print("Bonjour " + prenom + ",je suis content de te revoir!")
    


  2. prenom=input("Votre prénom? ")
    nom=input("Votre prénom? ")
    sexe=input("Votre sexe? (M ou F)")
    if sexe=="M":
    	genre="Monsieur"
    else:
    	genre="Madame"
    print("Bonjour " +  genre + ", votre prénom contient " +  str(len(prenom))  +" caractères.")
    	
    	



  1. Écrivez un script qui compte le nombre d’occurrences du caractère « e » dans une chaîne.
  2. Écrivez un script qui recopie une chaîne (dans une nouvelle variable), en insérant des astérisques entre chaque caractère. Ainsi par exemple, « gaston » devra devenir « g*a*s*t*o*n »
  3. Écrivez un script qui recopie une chaîne (dans une nouvelle variable) en l’inversant. Ainsi par exemple, « zorglub » deviendra « bulgroz ».
  1. 
    def fonction1(chaine):
        cpt=0
        for i in range(chaine):
            if i=="e":
                cpt=cpt+1
    	return cpt
    
  2. def fonction2(chaine):
        new_chaine="" # Accumulateur
        for i in chaine:
            new_chaine= new_chaine+ i + "*"
        return new_chaine
    
    ou
    def fonction2Bis(chaine):
        new_chaine="" # Accumulateur
        for i in chaine:
            new_chaine= new_chaine+ i + "*"
        return new_chaine[0:-1] # pour enlever le dernier *
    
  3. def fonction3(chaine):
        new_chaine="" # Accumulateur
        for i in chaine:
            new_chaine= i + new_chaine
        return new_chaine
    





MICRO PROJET
L'objectif est de décoder le message suivant :

"0100100101101100001000000111100100100000011000010010000000110001
0011000000100000011101000111100101110000011001010111001100100000
0110010001100101001000000111000001100101011100100111001101101111
0110111001101110011001010111001100101100001000000110001101100101
0111010101111000001000000111000101110101011010010010000001100011
0110111101101101011100000111001001100101011011100110111001100101
0110111001110100001000000110110001100101001000000110001001101001
0110111001100001011010010111001001100101001000000110010101110100
0010000001101100011001010111001100100000011000010111010101110100
01110010011001010111001100101110"

Questions :

  1. Affecter le code à déchiffrer dans une variable secret. de type string
  2. secret="01001001011011000010000001111001001000000110000100100000001100010011000000100000011101000111100101110000011001010111001100100000011001000110010100100000011100000110010101110010011100110110111101101110011011100110010101110011001011000010000001100011011001010111010101111000001000000111000101110101011010010010000001100011011011110110110101110000011100100110010101101110011011100110010101101110011101000010000001101100011001010010000001100010011010010110111001100001011010010111001001100101001000000110010101110100001000000110110001100101011100110010000001100001011101010111010001110010011001010111001100101110"
    
  3. Combien y a t-il d'octets dans secret ? Compléter :
  4. NbBits=len(secret) #608
    NbOctets=len(secret)/8 #76
    
    En utilisant int faire en sorte que NbOctets soit de type int.
    NbOctets=int(len(secret)/8)
    
  5. Tester et expliquer le principe de chaine[... : ... ]
    bidule="machin"
    print(bidule[1:5])
    print(secret[0:8])
    print(secret[8:16])
    print(secret[16:24])
    
    
  6. Demander à python d'afficher le secret comme suit (paquet de 8 bits):

    01001001
    01101100
    00100000
    01111001
    00100000
    ...
    00101110
    NbOctet=int(len(secret)/8)
    for i in range(NbOctet):
         octet=secret[i*8 : i*8+8] # [0:8] puis [8:16] puis [16:24] ...
         print(octet)   
    
  7. Tester la fonction ci-dessous (Vous expliquerez le rôle de chaque ligne) :
    def decode(MonOctet):
        #MonOctet est une chaine constitués de 8 bits
        convertir=int(MonOctet,2)
        caractere=chr(convertir)
        return caractere
    
    def decode(MonOctet):  #Definie une fonction avce un parametre
        #MonOctet est une chaine constitués de 8 bits
        convertir=int(MonOctet,2) #Convertit Monoctect en base 2
        caractere=chr(convertir) # Donne caractere UTF-8
        return caractere # renvoir le caractère
    
  8. A l'aide de la fonction decode décoder tout le message.
  9. message="" #Accumulateur
    for i in range(NbOctet):
         octet=secret[i*8 : i*8+8]
         message=message+decode(octet)
    print(message)