jours_par_mois = {'janvier': 31, 'février': 28, 'mars': 31, 'avril': 30, 'mai': 31, 'juin': 30, 'juillet': 31, 'août': 31, 'septembre': 30, 'octobre': 31, 'novembre': 30, 'décembre': 31}
print(jours_par_mois)
{'janvier': 31, 'février': 28, 'mars': 31, 'avril': 30, 'mai': 31, 'juin': 30, 'juillet': 31, 'août': 31, 'septembre': 30, 'octobre': 31, 'novembre': 30, 'décembre': 31}
1.
dict_morse={
'A':'·-',
'B':'-···',
'C':'-·-·',
'D':'-··',
'E':'·',
'F':'··-·',
'G':'--·',
'H':'····',
'I':'··',
'J':'·---',
'K':'-·-',
'L':'·-··',
'M':'--',
'N':'-·',
'O':'---',
'P':'·--·',
'Q':'--·-',
'R':'·-·',
'S':'···',
'T':'-',
'U':'··-',
'V':'···-',
'W':'·--',
'X':'-··-',
'Y':'-·--',
'Z':'--··',
}
2.
def trad_to_morse(message) :
trad = ''
phrase = message.split()
for mot in phrase :
for caractere in mot :
trad = trad + dict_morse[caractere] + ' '
trad = trad + ' '
return trad[:-3] # on enlève les derniers espaces
trad_to_morse('HELLO WORLD')
'···· · ·-·· ·-·· --- ·-- --- ·-· ·-·· -··'
3.a) et 3.b)
def inverser_dict(dico) :
dico_inv = {}
for cle in dico :
valeur = dico[cle]
dico_inv[valeur] = cle
return dico_inv
inverser_dict(dict_morse)
{'·-': 'A', '-···': 'B', '-·-·': 'C', '-··': 'D', '·': 'E', '··-·': 'F', '--·': 'G', '····': 'H', '··': 'I', '·---': 'J', '-·-': 'K', '·-··': 'L', '--': 'M', '-·': 'N', '---': 'O', '·--·': 'P', '--·-': 'Q', '·-·': 'R', '···': 'S', '-': 'T', '··-': 'U', '···-': 'V', '·--': 'W', '-··-': 'X', '-·--': 'Y', '--··': 'Z'}
On aurait pu également utiliser un dictionnaire défini par compréhension :
def inverser_dict(dico) :
dico_inv = {v: c for (c,v) in dico.items()}
return dico_inv
inverser_dict(dict_morse)
{'·-': 'A', '-···': 'B', '-·-·': 'C', '-··': 'D', '·': 'E', '··-·': 'F', '--·': 'G', '····': 'H', '··': 'I', '·---': 'J', '-·-': 'K', '·-··': 'L', '--': 'M', '-·': 'N', '---': 'O', '·--·': 'P', '--·-': 'Q', '·-·': 'R', '···': 'S', '-': 'T', '··-': 'U', '···-': 'V', '·--': 'W', '-··-': 'X', '-·--': 'Y', '--··': 'Z'}
4.a)
def morse_to_alpha(message) :
trad = ''
phrase = message.split(' ')
for mot in phrase :
caracteres = mot.split()
for lettre in caracteres :
trad = trad + inverser_dict(dict_morse)[lettre]
trad = trad + ' '
return trad[:-1]
4.b)
message_mystere = '·-·· · ··· ··· ·- -· --· ·-·· --- - ··· ·-·· --- -· --· ··· -·· · ··· ···- ·· --- ·-·· --- -· ··· -·· · ·-·· ·- ··- - --- -- -· · -··· · ·-· -·-· · -· - -- --- -· -·-· --- · ··- ·-· -·· ··- -· · ·-·· ·- -· --· ··- · ··- ·-· -- --- -· --- - --- -· ·'
morse_to_alpha(message_mystere)
'LES SANGLOTS LONGS DES VIOLONS DE L AUTOMNE BERCENT MON COEUR D UNE LANGUEUR MONOTONE'
def occurrences_lettre(mot) :
dico = {}
for lettre in mot :
if lettre in dico :
dico[lettre] = dico[lettre] + 1
else :
dico[lettre] = 1
return dico
occurrences_lettre('abracadabra')
{'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1}
2.
def occurrences(a, s) :
compteur = 0
for caract in s :
if caract == a :
compteur += 1
return compteur
occurrences('a', 'abracadabra')
5
3.a)
texte_LaFontaine = open('LaFontaine_utf8.txt', 'r', encoding = 'utf-8')
texte = texte_LaFontaine.read()
texte_LaFontaine.close()
3.b)
texte = texte.lower()
4.
alphabet = 'abcdefghijklmnopqrstuvwxyz'
dico_LaFontaine = {}
for lettre in alphabet :
dico_LaFontaine[lettre] = occurrences(lettre, texte)
print(dico_LaFontaine)
{'a': 77, 'b': 7, 'c': 23, 'd': 28, 'e': 156, 'f': 12, 'g': 16, 'h': 6, 'i': 83, 'j': 6, 'k': 0, 'l': 63, 'm': 18, 'n': 59, 'o': 57, 'p': 27, 'q': 17, 'r': 84, 's': 61, 't': 93, 'u': 69, 'v': 24, 'w': 0, 'x': 4, 'y': 2, 'z': 2}
On pouvait également définir ce dictionnaire par compréhension.
dico_LaFontaine = {lettre: occurrences(lettre, texte) for lettre in alphabet}
print(dico_LaFontaine)
{'a': 77, 'b': 7, 'c': 23, 'd': 28, 'e': 156, 'f': 12, 'g': 16, 'h': 6, 'i': 83, 'j': 6, 'k': 0, 'l': 63, 'm': 18, 'n': 59, 'o': 57, 'p': 27, 'q': 17, 'r': 84, 's': 61, 't': 93, 'u': 69, 'v': 24, 'w': 0, 'x': 4, 'y': 2, 'z': 2}
5.a)
def pourcentages(dico):
pourcent = {}
total = 0
for cle in dico:
total += dico[cle]
for cle in dico:
pourcent[cle] = round(dico[cle] / total * 100, 2)
return pourcent
On pouvait, encore une fois, définir le dictionnaire souhaité par compréhension.
def pourcentages(dico) :
n = sum( list( dico.values() ) )
dico_pourcentage = {cle: round(dico[cle]/n, 2)*100 for cle in dico}
return dico_pourcentage
5.b)
dico_pourcent = pourcentages(dico_LaFontaine)
print(dico_pourcent)
{'a': 8.0, 'b': 1.0, 'c': 2.0, 'd': 3.0, 'e': 16.0, 'f': 1.0, 'g': 2.0, 'h': 1.0, 'i': 8.0, 'j': 1.0, 'k': 0.0, 'l': 6.0, 'm': 2.0, 'n': 6.0, 'o': 6.0, 'p': 3.0, 'q': 2.0, 'r': 8.0, 's': 6.0, 't': 9.0, 'u': 7.000000000000001, 'v': 2.0, 'w': 0.0, 'x': 0.0, 'y': 0.0, 'z': 0.0}
On vérifie que l'on a bien 100% au total, aux erreurs d'arrondi près :
round(sum(pourcent for pourcent in dico_pourcent.values()), 2)
100.0
On peut même faire un histogramme des fréquences.
import matplotlib.pyplot as plt
plt.bar(dico_pourcent.keys(), dico_pourcent.values(), width=0.7, color='g')
plt.show()
6.
def occurrences_chaine(chaine, message) :
n = len(message)
m = len(chaine)
compteur = 0
for i in range(n) :
j = 1
if message[i] == chaine[0] :
while i+j < n and j < m and message[i+j] == chaine[j] :
j += 1
if j == m :
compteur += 1
return compteur
occurrences_chaine('tortue', texte)
3
1.
import csv
fichier = open('countries.csv', 'r', encoding = 'utf-8')
lecture = csv.reader(fichier)
capitale = {ligne[1]: ligne[2] for ligne in lecture}
print(capitale['France'])
Paris
2. Le dictionnaire des continents :
fichier = open('countries.csv', 'r', encoding = 'utf-8')
lecture = csv.reader(fichier)
continent = {ligne[1]: ligne[5] for ligne in lecture}
fichier.close()
Le dictionnaire des monnaies :
fichier = open('countries.csv', 'r', encoding = 'utf-8')
lecture = csv.reader(fichier)
monnaie = {ligne[1]: ligne[7] for ligne in lecture}
fichier.close()
3. La liste des pays de l'Océanie :
pays_OC = []
for pays in continent :
if continent[pays] == 'OC' :
pays_OC.append(pays)
print(pays_OC)
['American Samoa', 'Australia', 'Cook Islands', 'Christmas Island', 'Fiji', 'Micronesia', 'Guam', 'Kiribati', 'Marshall Islands', 'Northern Mariana Islands', 'New Caledonia', 'Norfolk Island', 'Nauru', 'Niue', 'New Zealand', 'French Polynesia', 'Papua New Guinea', 'Pitcairn', 'Palau', 'Solomon Islands', 'Tokelau', 'Timor Leste', 'Tonga', 'Tuvalu', 'United States Minor Outlying Islands', 'Vanuatu', 'Wallis and Futuna', 'Samoa']
La liste des pays dont la monnaie est l'euro :
pays_euro = []
for pays in monnaie :
if monnaie[pays] == 'Euro' :
pays_euro.append(pays)
print(pays_euro)
['Andorra', 'Austria', 'Aland Islands', 'Belgium', 'Saint Barthelemy', 'Cyprus', 'Germany', 'Estonia', 'Spain', 'Finland', 'France', 'French Guiana', 'Guadeloupe', 'Greece', 'Ireland', 'Italy', 'Kosovo', 'Lithuania', 'Luxembourg', 'Latvia', 'Monaco', 'Montenegro', 'Saint Martin', 'Martinique', 'Malta', 'Netherlands', 'Saint Pierre and Miquelon', 'Portugal', 'Reunion', 'Slovenia', 'Slovakia', 'San Marino', 'French Southern Territories', 'Vatican', 'Mayotte']
4.
pays_nonEU_euro = []
for pays in continent :
if continent[pays] != 'EU' and monnaie[pays] == 'Euro' :
pays_nonEU_euro.append(pays)
print(pays_nonEU_euro)
['Saint Barthelemy', 'French Guiana', 'Guadeloupe', 'Saint Martin', 'Martinique', 'Saint Pierre and Miquelon', 'Reunion', 'French Southern Territories', 'Mayotte']
5.
dico_cont_mon = {}
for pays in continent :
cont = continent[pays]
mon = monnaie[pays]
if cont not in dico_cont_mon :
dico_cont_mon[cont] = [mon]
else :
if mon not in dico_cont_mon[cont] :
dico_cont_mon[cont].append(mon)
del dico_cont_mon['Continent']
print(dico_cont_mon)
{'EU': ['Euro', 'Lek', 'Marka', 'Lev', 'Belarusian ruble', 'Franc', 'Koruna', 'Krone', 'Pound', 'Kuna', 'Forint', 'Krona', 'Leu', 'Denar', 'Zloty', 'Dinar', 'Ruble', 'Hryvnia'], 'AS': ['Dirham', 'Afghani', 'Dram', 'Manat', 'Taka', 'Dinar', 'Dollar', 'Ngultrum', 'Yuan Renminbi', 'Lari', 'Rupiah', 'Shekel', 'Rupee', 'Rial', 'Yen', 'Som', 'Riels', 'Won', 'Tenge', 'Kip', 'Pound', 'Kyat', 'Tugrik', 'Pataca', 'Rufiyaa', 'Ringgit', 'Peso', 'Baht', 'Somoni', 'Lira', 'Dong'], 'NA': ['Dollar', 'Guilder', 'Euro', 'Colon', 'Peso', 'Krone', 'Quetzal', 'Lempira', 'Gourde', 'Cordoba', 'Balboa'], 'AF': ['Kwanza', 'Franc', 'Pula', 'Escudo', 'Dinar', 'Pound', 'Dirham', 'Nakfa', 'Birr', 'Cedi', 'Dalasi', 'Shilling', 'Dollar', 'Loti', 'Ariary', 'Ouguiya', 'Rupee', 'Kwacha', 'Metical', 'Naira', 'Euro', 'Leone', 'Dobra', 'Lilangeni', 'Rand'], 'AN': ['', 'Krone', 'Pound', 'Dollar', 'Euro'], 'SA': ['Peso', 'Boliviano', 'Real', 'Dollar', 'Pound', 'Euro', 'Sol', 'Guarani', 'Bolivar Soberano'], 'OC': ['Dollar', 'Franc', 'Kina', "Pa'anga", 'Vatu', 'Tala']}
2.
import random as rd
pays = rd.choice(list(capitale.keys()))
essai = input('Pays ' + str(pays) + ' quelle est sa capitale : ')
if essai == capitale[pays] :
print('Gagné !')
else :
print('Perdu ! La bonne réponse était : ' + str(capitale[pays]))
Pays Thailand quelle est sa capitale : Bangkok Gagné !
3.
nb_parties = 5
compteur = 0
for i in range(nb_parties) :
print('Partie n°' + str(i+1))
pays = rd.choice(list(capitale.keys()))
essai = input('Pays ' + str(pays) + '. Quelle est sa capitale ? ')
if essai == capitale[pays] :
compteur += 1
print('Gagné !')
else :
print('Perdu ! La bonne réponse était : ' + str(capitale[pays]))
print('Vous avez gagné ' + str(compteur) + ' parties.')
Partie n°1 Pays Curacao. Quelle est sa capitale ? ? Perdu ! La bonne réponse était : Willemstad Partie n°2 Pays Venezuela. Quelle est sa capitale ? Caracas Gagné ! Partie n°3 Pays South Africa. Quelle est sa capitale ? Pretoria Gagné ! Partie n°4 Pays Croatia. Quelle est sa capitale ? Zagreb Gagné ! Partie n°5 Pays Curacao. Quelle est sa capitale ? Willemstad Perdu ! La bonne réponse était : Willemstad Vous avez gagné 3 parties.
4.
nb_parties = 5
nb_essais = 3
compteur = 0
for i in range(nb_parties) :
pays = rd.choice(list(capitale.keys()))
print('Partie n°' + str(i+1) + '. Pays : ' + str(pays) + '. Quelle est sa capitale ?')
j = 0
essai = ''
while j < nb_essais and essai != capitale[pays] :
essai = input('Essai n°' + str(j+1) + ' : ')
if essai == capitale[pays] :
compteur += 1
print('Gagné !', end='\n\n')
else :
print('Perdu !')
j = j + 1
if essai != capitale[pays] :
print('La bonne réponse était : ' + str(capitale[pays]), end='\n\n')
print('Vous avez gagné ' + str(compteur) + ' parties.')
Partie n°1. Pays : Marshall Islands. Quelle est sa capitale ? Essai n°1 : Perdu ! Essai n°2 : Perdu ! Essai n°3 : Perdu ! La bonne réponse était : Majuro Partie n°2. Pays : U.S. Virgin Islands. Quelle est sa capitale ? Essai n°1 : Perdu ! Essai n°2 : Perdu ! Essai n°3 : Perdu ! La bonne réponse était : Charlotte Amalie Partie n°3. Pays : Qatar. Quelle est sa capitale ? Essai n°1 : Doha Gagné ! Partie n°4. Pays : Tonga. Quelle est sa capitale ? Essai n°1 : Perdu ! Essai n°2 : Perdu ! Essai n°3 : Perdu ! La bonne réponse était : Nuku'alofa Partie n°5. Pays : Sint Maarten. Quelle est sa capitale ? Essai n°1 : Philipsbourg Perdu ! Essai n°2 : Philipsburg Gagné ! Vous avez gagné 2 parties.