# TP2 NSI STRUCTURES DE DONNEES
## EX1
```python=
# Inverser un dictionnaire
# Question 1 :
# version 1 :
def inverse_dictionnaire(dico):
resultat = {}
for i in dico:
resultat[dico[i]] = i
return resultat
# version 2 :
def inverse_dictionnaire2(dico):
resultat = dict()
for cle,val in dico.items():
resultat[val]=cle
return resultat
# version 3 :
def inverse_dictionnaire3(dico):
return {val:cle for cle,val in dico.items() }
# programme principal :
# test fonction inverse_dictionnaire
capitales = {"France": "Paris", "Italie": "Rome"}
# version 1
print(inverse_dictionnaire(capitales))
# version 2
# version 3
print(inverse_dictionnaire3(capitales))
#2/On a besoin de s’assurer que les clés et les valeurs sont toutes les deux uniques autrement l’inversion au sein du dictionnaire est impossible.
#Question2:
def carte_valide(carte):
couleurs = ["Pique", "Coeur","Carreau", "Trèfle"]
if type(carte[0]) == int and type(carte[1]) == str:
if carte[0] > 1 and carte[0] < 15 and carte[1] in couleurs:
return True
else :
return False
else :
return False
print(carte_valide((5,"Pique")))
print(carte_valide((1, "Toto")))
print(carte_valide(("Titi", "Toto")))
#2/
# version 1
def nom_carte(carte):
valeurs = {14 : "AS", 2 : "2", 3 : "3",
4 : "4", 5 : "5", 6: "6", 7 : "7",
9 : "9", 10 : "10", 11 : "Valet",
8 : "8", 12 : "Dame", 13 : "Roi"
}
return valeurs[carte[0]] +" de "+ carte[1]
# version 2
def nom_carte2(carte):
valeurs = {14 : "AS", 11 : "Valet",
12 : "Dame", 13 : "Roi"
}
if carte[0] >= 2 and carte[0]<= 10:
return str(carte[0]) +" de "+ carte[1]
else :
return valeurs[carte[0]] +" de "+ carte[1]
# test
print(nom_carte((14,"Pique")))
print(nom_carte2((14,"Pique")))
#3/
# version 1
def nom_carte(carte):
valeurs = {14 : "AS", 2 : "2", 3 : "3",
4 : "4", 5 : "5", 6: "6", 7 : "7",
9 : "9", 10 : "10", 11 : "Valet",
8 : "8", 12 : "Dame", 13 : "Roi"
}
return valeurs[carte[0]] +" de "+ carte[1]
# version 2
def nom_carte2(carte):
valeurs = {14 : "AS", 11 : "Valet",
12 : "Dame", 13 : "Roi"
}
if carte[0] >= 2 and carte[0]<= 10:
return str(carte[0]) +" de "+ carte[1]
else :
return valeurs[carte[0]] +" de "+ carte[1]
# test
print(nom_carte((14,"Pique")))
print(nom_carte2((14,"Pique")))
#Question4
def tirage_aleatoire():
jeu = jeux_cartes()
index_carte = randint(1,52)
return jeu[index_carte]
print(tirage_aleatoire())
#MELANGER UN TABLEAU
from random import
def melanger():
tab = [1,12,34,68]
for i in tab :
print(tab.pop(randint))
#correction:
from random import randint
def melanger(tab):
for x in range(len(tab)):
# selection d'un index d'élement de façon aléeatoire
y=randint(0,(len(tab)-1))
# stockage de la valeur de l'element à supprimer dans une variable intermédiaire
n=tab[y]
# on retire l'élément d'indice y dans tab
tab.pop(y)
# on ajoute en dernière position l'élément retiré précédemment
tab.append(n)
return tab
t = [1,2,3,4,5]
print(melanger(t))
#inverser tableau
def inverse_tableau(tableau):
tableau1 = []
for i in range(len(tableau)):
tableau1.append(tableau[len(tableau)-i-1])
return tableau1
tableau2=[87,87,79,90]
print(inverse_tableau(tableau2))