---
# System prepended metadata

title: TP2 NSI STRUCTURES DE DONNEES

---

# 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))
