Aller au contenu

Un exercice de NSI en python


ShahZaib
 Share

Messages recommandés

  • E-Bahut

Bonsoir,

Tu ne veux pas au moins proposer un début de script ? Il y a plusieurs étapes :
*
Comment faire la saisie sans erreur d'un entier entre 5 et 20.
* Créer la liste de nombres aléatoires.
* Trier la liste.
* Calculer les sommes et les afficher.

Essaie au moins pour le début.

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

Le problème c’est pas que je veux pas c’est que j’arrive pas enfin la plupart du moins. Par exemple créer une liste de nombre aléatoire, la trier et l’afficher j’y arrive mais pour ce qui est du reste, j’ai beau réfléchir je sais pas comment faire

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut

Bonjour,

Pour la saisie sans erreur, une possibilité

verification=False
while verification==False:
    N=float(input("Entrer un entier compris entre 5 et 20, bornes comprises "))
    if N.is_integer():
        if 5<=N and N<=20:
            N=int(N)
            verification=True

Mais ceci ne teste pas une entrée autre qu'un nombre, par exemple une lettre. Je n'ai pas trouvé de méthode pour ce cas.

A toi pour la suite, puisque tu sais créer la liste. J'attends ta proposition de script.

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut
Il y a 3 heures, julesx a dit :

Bonjour,

Mais ceci ne teste pas une entrée autre qu'un nombre, par exemple une lettre. Je n'ai pas trouvé de méthode pour ce cas.

 

Bonjour Jules,

if type(N) == int  ( https://stackabuse.com/python-check-if-variable-is-a-number/ )
ou
x = N.isnumeric() ==> x est vrai ou faux. ( https://www.w3schools.com/python/ref_string_isnumeric.asp )
Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut

Bonjour Denis,

C'est ce à quoi j'avais pensé aussi, mais le problème se situe au niveau de la lecture de l'entrée. J'ai essayé plusieurs avatars d'input() mais ça n'a jamais marché avec des lettres.

Par exemple,  avec float(input), si je réponds par a, j'ai le message d'erreur
ValueError: could not convert string to float: 'a'

Je pense que la solution est du côté de try except, mais je ne m'en suis pas sorti pour le moment. Cela dit, au niveau première, on doit probablement se contenter de vérifier que la réponse est un entier compris entre les deux extrêmes. Mais je vais continuer à chercher à l'occasion.

 

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut

 "input()" renvoie une chaîne.

verification=False
while verification==False:
    N=(input("Entrer un entier compris entre 5 et 20, bornes comprises "))
    x = N.isnumeric()
    if x:
        N=int(N)
        if 5<=N and N<=20:
            verification=True
print(N)

 

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut

OK, ça marche, je n'avais pas (ou mal) approfondi le isnumeric. Par contre, pourquoi entourer le "input" de parenthèses, j'ai essayé, ce n'est pas utile. On peut aussi se passer du x

verification=False
while verification==False:
    N=input("Entrer un entier compris entre 5 et 20, bornes comprises ")
    if N.isnumeric():
        N=int(N)
        if 5<=N and N<=20:
            verification=True

Donc, si ShahZaib revient, qu'il prenne ta version ou celle ci-dessus.

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut

@ShahZaib

Si tu veux encore avoir de l'aide, ne te contente pas de regarder sur le site ce que les intervenants ont posté,  c'est juste le point de départ. Comme

Le 09/05/2022 à 20:19, ShahZaib a dit :

Par exemple créer une liste de nombre aléatoire, la trier et l’afficher

on attend de voir ceci pour continuer à intervenir si nécessaire.

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut

Bonjour Denis,

J'ai bien peur qu'il n'y aura plus de retour. Cela dit, à mon avis, la difficulté n'est pas le tri, le demandeur doit surement connaitre liste.sort(). Là où ça peut un peu coincer, c'est dans la génération de la liste avec absence de doublons, il faut penser à "in" si on veut traiter cette partie de façon simple.

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut
Citation

la génération de la liste avec absence de doublons

Il suffit de prendre le bout de programme que tu as mis dans l'autre fil.

 

Pour rigoler, un petit coup de Rot13.

(Il y a l'append 1456 à décommenter pour avoir une liste dont la longueur ne correspond pas à ce qui est demandé) : 😀

#---------------------- Rageér qh abzoer q'éyézragf ----------
irevsvpngvba=Snyfr
juvyr irevsvpngvba==Snyfr:
    Ao=(vachg("Ragere ha ragvre pbzcevf rager 5 rg 20, obearf pbzcevfrf "))
    k = Ao.vfahzrevp()
    vs k:
        A=vag(Ao)
        vs 5<=A naq A<=20:
            irevsvpngvba=Gehr
#cevag(A)
vzcbeg enaqbz

#---------------------- peéngvba qh gnoyrnh nyéngbver ----------
gno=[]
sbe v va enatr(0,A):
    a=enaqbz.enaqvag(1,1000)
    juvyr a va gno:
        a=enaqbz.enaqvag(1,1000)
    gno.nccraq(a)
#gno.nccraq(1456)
cevag("Gnoyrnh aba gevé :",gno)

#------------------------ Iéevsvpngvba qr yn ybathrhe ------------
Y = yra(gno)
vs Y == A:
    cevag("Obaar ybathrhe")
ryfr:
    cevag("Cnf oba, rffnvr rapber !")
    
#------------------------ Gevf ----------------------
Pebvff = fbegrq(gno)
Qépebvff = fbegrq(gno,erirefr=Gehr)
cevag("Beqer pebvffnag", Pebvff)
cevag("Beqer qépebvffnag", Qépebvff)

#------------------------   ----------------------
Vzcnve = 0
Cnve = 0
sbe v va enatr(0,yra(Qépebvff),2):
    Cnve += Qépebvff[v]
cevag("Fbzzr cnver", Cnve)

sbe v va enatr(1,yra(Qépebvff),2):
    Vzcnve += Qépebvff[v]
cevag("Fbzzr vzcnver", Vzcnve)

 

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut
il y a 55 minutes, Denis CAMUS a dit :

Il suffit de prendre le bout de programme que tu as mis dans l'autre fil.

J'avais déjà oublié (cf. Aloïs) que je l'avais mis dans un autre fil. Mais est-ce que le demandeur aura l'idée d'aller y voir ?

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut

En prenant ton morceau, le mien, en adaptant les variables, le plus dur est fait.

Le tri est simple. (j'ai utilisé "sorted"). Y a même croissant et décroissant pour qu'elle voit comment la même instruction donne les deux.

Et le calcul des sommes n'est pas compliqué non plus avec le pas de 2. (Non,c'est pas Le lac des Cygnes 😁).

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut

J'avais également pondu et essayé un script complet dès le départ, pour le fun d'une part, et aussi pour voir les difficultés éventuelles que pouvait rencontrer ShahZaib. Vu son "silence assourdissant", on ne saura jamais le fin mot de l'histoire. Tant pis.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
 Share

×
×
  • Créer...
spam filtering