Régles du jeu¶
🥊 2 équipes
❔ 10 questions - 5 questions par équipe
🥇 2 points par question : 1 point pour la bonne réponse et 1 point pour l'explication
❔ Question N°2 🎃¶
Que contient la variable var_1
?
var_1 = [[3, 4, 5]]
var_2 = var_1[:]
var_2[0].append(6)
❔ Question N°3 🎃¶
Que renvoie le code Python suivant ?
print(
(1==1) in [1],
1 <= 0 <= 1,
1 <= (0 <= 1)
)
✅ Réponse B :¶
True False True
Pour le code print((1==1) in [1])
, la condition 1==1
est vraie donc on a print(True in [1])
. Comme le booléen True
est équivalent à 1
, la première ligne renvoie True
.
Le code print(1 <= 0 <= 1)
est équivalent à print(1 <= 0 and 0 <= 1)
donc à print(False and True)
. La seconde ligne renvoie donc False
.
Pour le code print(1 <= (0 <= 1))
, la condition 0 <= 1
est vraie donc on a print(1 <= True)
. Comme le booléen True
est équivalent à 1
, la troisième ligne renvoie True
.
📚 Ressources :¶
❔ Question N°4 🎃¶
Que contient la variable dico
?
dico = {}
dico[True] = "var_1"
dico[1] = "var_2"
dico[1.0] = "var_3"
✅ Réponse D :¶
{True: 'var_3'}
Les dictionnaires en Python utilisent une fonction de hashage pour gérer les clés. Comme True
, 1
et 1.0
ont le même hash, il s'agit donc de la même clé de dictionnaire.
hash(True)==hash(1)==hash(1.0)
>>> True
La première clé du dictionnaire est enregistrée avec son hash. Par contre, les valeurs sont toutes enregistrées et elle écrase la valeur précédente donc c'est la dernière valeur qui est conservée.
📚 Ressources :¶
❔ Question N°5 🎃¶
Que renvoie le code Python suivant ?
print(
all([]),
all([[]]),
all([[[]]]),
all([[[[]]]]),
)
✅ Réponse C :¶
True False True True
La fonction all()
est implémentée de la façon suivante en Python :
def all(iterable):
for element in iterable:
if not element:
return False
return True
La liste vide []
renvoie True
car il n'y a pas d'élèments dans l'itérable. La liste 2 [[]]
contient un élèment mais il s'agit de la liste vide []
qui est considérée comme False
. Pour les listes 3 et 4, elles contiennent des listes qui ne sont pas vides.
📚 Ressources :¶
❔ Question N°6 🎃¶
Que renvoie le code Python suivant ?
a = "".join(["s", "a", "l", "u", "t"])
b = "s" + "a" + "l" + "u" + "t"
c = 'salut'
print(a is b, a is c, b is c)
✅ Réponse C :¶
False False True
L'interpréteur Python arrive à détecter que les chaines de caractères b
et c
sont identiques et la même adresse mémoire est allouée. Pour la variable a
, la méthode join()
est appelée plus tard par l'interpréteur et donc une autre adresse mémoire est allouée.
📚 Ressources :¶
❔ Question N°7 🎃¶
Que renvoie le code Python suivant ?
print(
0 == False,
0+0j == False,
0.0000000000000000000000000000000001 == False,
9e-500 == False,
)
❔ Question N°8 🎃¶
Comment expliquer ce comportement de Python ?
value = 10
valuе = None
valuе= 1010
print(value)
>>> 10
🕸️ Réponse A :¶
Dans certains cas, les espaces dans les variables sont pris en compte dans le nom de la variable
🕷️ Réponse B :¶
Le nom des variables semble être le même mais en réalité ce n'est pas le cas
👻 Réponse C :¶
Comme 1010
en binaire correspond à 10
en décimal, il n'y a pas de modification de la valeur
🏚️ Réponse D :¶
Le fait de réaffecter la variable à None
ne modifie pas la valeur de la variable
❔ Question N°9 🎃¶
Que renvoie le code Python suivant ?
def t(a,b):
return (b,a)[a<b]
print(t(5, 8), t(8, 5))
❔ Question N°10 🎃¶
Que renvoie le code Python suivant ?
print(
re.search(
'^#?([a-f0-9]{6}|[a-f0-9]{3})$',
'12f1'
)
)