Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

programme qui ne marche pas

2 réponses
Avatar
chuxfkuu
Bonjour, je galère depuis 1 semaine sur cet exercice que je comprends toujours pas. pourriez-vous s'il vous plait me rendre service en me guidant.

On supposera ici que les éléments des listes utilisées sont tous de même type.
Soit le code suivant :
def so(liste) :
s=0
for e in liste :
for i in e :
if i%2==0 :
s=s+i
li=eval(input()) #eval permet de transformer la chaîne de caractères saisie par sa valeur (une liste par exemple), voir avant-propos de la séance 6 sur PIXAL
print(so(li))

Répondez aux questions suivantes :
Pour que le programme fonctionne :
a) Quel devrait être le type de la variable i ? Expliquez comment on peut le déduire.
b) Quel devrait être le type de la variable e ? Expliquez comment on peut le déduire.
c) Quel devrait être le type de la variable liste ? Expliquez comment on peut le déduire.
d) Quel devrait être le type de la variable li ? Expliquez comment on peut le déduire.
e) Quel devrait être le type de la variable s ? Expliquez comment on peut le déduire.
f) Expliquez en une ou deux phrases ce que la fonction devrait faire en expliquant le rôle de la variable s . Que doit-on
ajouter pour obtenir le résultat souhaité ?
g) Donnez un exemple représentatif de valeurs pour li et indiquez quelles seraient les valeurs successives prises par les
variables e, i et s.
h) En l'état actuel, qu'affiche le programme complet ? Après modification et sur votre exemple, qu'affiche t'il ?


je connais les variables i, e, liste, et li sont de quel type mais je ne sais pas si ça va changer pour que le programme fonctionne.
pour la question f je crois que la fonction faut qu'elle insère une liste mais je suis pas sûre.
veuillez s'il vous plait me donner juste un coup de main parce que je suis complètement perdue.
merci d'avance :)

2 réponses

Avatar
Pascal en Trophy
Bonjour.
Le 13/11/2021 Í  02:14, chuxfkuu a écrit :
Bonjour, je galère depuis 1 semaine sur cet exercice que je comprends toujours
pas. pourriez-vous s'il vous plait me rendre service en me guidant.
On supposera ici que les éléments des listes utilisées sont tous de même type.
Soit le code suivant :
def so(liste) :
s=0
for e in liste :
for i in e :
if i%2==0 :
s=s+i

Une fonction sans return, ça marche moins bien.
Pascal, débutant en Python
Avatar
Alain Ketterlin
chuxfkuu writes:
On supposera ici que les éléments des listes utilisées sont tous de même type.
Soit le code suivant :
def so(liste) :
s=0
for e in liste :
for i in e :
if i%2==0 :
s=s+i
li=eval(input())
print(so(li))
Répondez aux questions suivantes :
Pour que le programme fonctionne :
a) Quel devrait être le type de la variable i ? Expliquez comment on peut le
déduire.
b) Quel devrait être le type de la variable e ? Expliquez comment on peut le
déduire.
c) Quel devrait être le type de la variable liste ? Expliquez comment
on peut le déduire.
d) Quel devrait être le type de la variable li ? Expliquez comment on peut le
déduire.
e) Quel devrait être le type de la variable s ? Expliquez comment on peut le
déduire.

Pour "deviner" le type des variables, il faut regarder ce qu'on fait
avec. Pour les variables de ton programme :
- s reçoit la valeur zéro et on lui additionne i
- i est un élément de la liste e ; on peut calculer sa parité (son
modulo 2)
- e est un élément de la liste liste
On sait que e et liste sont des listes parce qu'on fait "for e in liste"
et "for i in e" : on peut faire cela uniquement quand la variable nommée
après le "in" est une liste (en fait il y d'autres possibilités, mais
dans cet exercice c'est un argument suffisant). On voudrait savoir : des
listes de quoi ? Pour s et i, on sait ce qu'on fait avec, donc on sait
de quel type elles doivent être.
Les trois point ci-dessus permettent de déterminer le type de toutes les
variables dans cet exercice.
f) Expliquez en une ou deux phrases ce que la fonction devrait faire en
expliquant le rÍ´le de la variable s . Que doit-on
ajouter pour obtenir le résultat souhaité ?

Est-ce que le sujet explique ce qu'est ce résultat souhaité ? (Il
devrait le faire.) A mon avis, le résultat souhaité est l'affichage d'un
nombre. Je pense qu'en entrant "[[1,2,3], [4,5,6]]" (sans les quotes)
elle devrait afficher 3.
g) Donnez un exemple représentatif de valeurs pour li et indiquez quelles
seraient les valeurs successives prises par les
variables e, i et s.
h) En l'état actuel, qu'affiche le programme complet ? Après
modification et sur votre exemple, qu'affiche t'il ?

Il faut que tu exécutes le programme pour voir ce qui se passe.
je connais le type des variables i, e, liste, et li mais je ne sais
pas si ça va changer pour que le programme fonctionne.

Cette phrase est incompréhensible : que signifie "ça" ? Il vaut mieux
que le type des variables ne change pas, je pense que ce n'est pas ça la
question.
pour la question f je crois que la fonction faut qu'elle insère une
liste mais je suis pas sͻre.

Non. La fonction calcule quelque chose (dans la variable s). Tu peux
considérer que ce calcul est juste (sauf si le sujet précise autre chose
Í  calculer). C'est ça qu'on veut voir, et on ne le voit pas.
-- Alain.