Aller au contenu

Messages recommandés

Posté(e) (modifié)

Bonjour,

j'éprouve des difficulté pour l'exercice n°4, 5, 6, 7, 8; je comprends que ma demande est assez excessive, mais si vous pouviez m'aider pour au moins un des exercices, je serais honoré de votre aide, merci infiniment de m'avoir prêté un peu de votre temps et de votre attention. 

NSI 1.PNG

nsi2.PNG

nsi3.PNG

Modifié par cat24
  • E-Bahut
Posté(e)

Bonjour,

Après de longues cogitations et de multiples essais (car, comme dit, je débute), voilà à quoi j'aboutis pour le 4 et le 5 :

def maxi(t):
    return sorted(t)[len(t)-1]
           
print(maxi({2,9,4,7,3,-4})
positions={}
positions[(48.853585,2.301490)]="Paris"
positions[(11.611358,43.147752)]="Djibouti"
positions[(43.70000,7.250000)]="Nice"

def renvoieposition (x,y,positions):
    X0=(x,y)[0]*10000
    Y0=(x,y)[1]*10000
    for cle in positions:
        X=(cle[0]*10000)
        Y=(cle[1]*10000)
        if abs(X-X0)<=1 and abs(Y-Y0)<=1:
            P=positions[cle[0],cle[1]]
            break
        else:
            P="Position inconnue"                   
    return P
          
print(renvoieposition(43.70010,7.25000,positions))

Essaie, regarde si cela te convient et, si nécessaire, demande des explications.

Je vais regarder la suite, mais ça ne sera surement pas pour aujourd'hui car je commence à avoir la tête comme une citrouille.

Allez, un dernier pour la route.

def stat(texte):
    statistiques={}
    for i in texte:
        if 65<=ord(i)<=90 or 97<=ord(i)<=122:
            if i in statistiques:
                statistiques[i]=statistiques[i]+1
            else:
                statistiques[i]=1              
    statistiques=sorted(statistiques.keys())
    return statistiques

print(stat("Mignonne, allons voir si la rose"
"Qui ce matin avoit desclose"
"Sa robe de pourpre au Soleil,"
"A point perdu ceste vesprée"
"Les plis de sa robe pourprée,"
"Et son teint au vostre pareil."))

N.B.: Les print à la fin de chaque script sont là pour visualiser le résultat

Posté(e)

Bonjour Julesx,

Je te remercierai jamais assez pour ton aide,

grâce à toi, j'ai pu comprendre les exercices 4,5,6.

Merci d'avoir consacré de ton temps !

Cordialement

  • E-Bahut
Posté(e)

Bonjour,

Merci pour le retour. Qu'est-ce que tu fais maintenant, tu regardes le 7 et le 8 et tu essaies quelque chose dans l'optique des exercices précédentes ?

P..S. : Dans l'exercice 6, i faut modifier la ligne de tri ainsi
statistiques=sorted(statistiques.items())
sinon, on n'affiche que la liste des lettres, pas leurs nombres.

Posté(e)

Bonsoir,

Je l'avoue, j'ai un peu dû mal pour les deux derniers, si vous pouviez m'aiguiller, ça serait fort aimable de votre part,

Bonne soirée !

Cordialement

  • E-Bahut
Posté(e)

Bonsoir,

J'avoue que, pour le 7, j'ai du mal à comprendre ce qu'il faut faire à part qu'on doit comparer des vitesses d’exécution. Donc, j'ai zappé pour le moment en préférant regarder le 8. Si, toi, tu as mieux vu de quoi il retourne, dis-le. Je regarderai de toute façon demain cet exercice en espérant y voir plus clair

Donc pour le 8, j'ai cru comprendre qu'on se donnait une liste de mots, a priori de longueur au moins égale à 6 lettres (ce que j'ai pris comme postulat), qu'on doit classer par le nombre de points que cela rapporte au scrabble.
Je me suis dit qu'au départ, il faut déjà que le script doit comporter  la correspondance entre les lettres et les points correspondants. Ma première idée, un peu "bourrin", a été de créer la fonction "points" du premier script, à coups de "if". Après avoir réussi à écrire un script qui fonctionnait, je me suis dit qu'on pouvait peut-être partir d'une idée de dictionnaire des valeurs, d'où le deuxième script, qui ne diffère du premier que par la détection des valeurs de chaque lettre.

Je te laisse regarder tout cela et tester. J'attends tes critiques éventuelles et/ou tes remarques.

def points(l):
    pt=0 # évite de planter le script si un des mots ne contient
    #  aucune majuscule, mais cela ne devrait pas arriver.
    if l in "EAINORSTUL": pt=1
    if l in "DMG" : pt=2
    if l in "BCP" : pt=3
    if l in "FHV" : pt=4
    if l in "JQ" :  pt=8
    if l in "KWXYZ": pt=10
    return pt
   
liste=("CHOUCROUTE","HARICOT","FRAMBOISE","MANDARINE","ABRICOT","TOMAHAWK")

def valeur(t):
    liste1={}
    for i in range(len(t)):
        t1=t[i]
        somme=0
        for j in range(len(t1)):
            if j==5:
                somme=somme+3*points(t1[j])
            else:
                somme=somme+points(t1[j])
            liste1[t1]=somme
    liste1=sorted(liste1.items(), key=lambda x: x[1], reverse=True)
    return liste1
    
print(valeur(liste))

Deuxième script.

Dico={"E":1,"A":1,"I":1,"N":1,"O":1,"R":1,"S":1,"T":1,"U":1,"L":1,"D":2,
      "M":2,"G":2,"B":3,"C":3,"P":3,"F":4,"H":4,"V":4,"J":8,"Q":8,"K":10,
      "W":10,"X":10,"Y":10,"Z":10}
   
liste=("CHOUCROUTE","HARICOT","FRAMBOISE","MANDARINE","ABRICOT","TOMAHAWK")

def valeur(t):
    liste1={}
    for i in range(len(t)):
        t1=t[i]
        somme=0
        for j in range(len(t1)):
            if j==5:
                somme=somme+3*Dico[t1[j]]
            else:
                somme=somme+Dico[t1[j]]
            liste1[t1]=somme
    liste1=sorted(liste1.items(), key=lambda x: x[1], reverse=True)
    return liste1
    
print(valeur(liste))

 

 

Posté(e)

Bonsoir,

Merci beaucoup de vous démenez pour pouvoir me venir en aide, je les testerais avec plaisir demain, pour ma part je trouve que vos programmes sont véritablement bien !(la forme est correct, les techniques utilisées sont vraiment pas mal !) Comment faites-vous pour coder ainsi ?

Bonne soirée !

Cordialement

  • E-Bahut
Posté(e)

Bonjour,

Merci pour les compliments, mais je n'en mérite pas tant !

En fait, ça fait très longtemps que je fais un peu de programmation en amateur, par besoin quelquefois dans le cadre de mon enseignement. J'ai utilisé plusieurs logiciels, dont le Basic et le Pascal. Par contre, je n'ai découvert Python que depuis que je "sévis" comme papy. Je progresse donc petit à petit avec la méthode dite de l'essai-erreur. Mes expériences anciennes m'aident évidemment dans l'élaboration des démarches, mais surtout, à chaque fois que j'en ai besoin, je trouve sur la toile des explications et des portions de code. Ça  a été le cas en particulier pour tout ce qui concerne les dictionnaires.

  • E-Bahut
Posté(e)

Je vois que tu es passée par là. Comme annoncé, j'ai regardé cet après-midi l'exercice 7. Ci-dessous le résultat de mes cogitations. Je ne suis pas du tout sur que c'est cela qu'il fallait faire. Tu regardes et tu en fais ce que tu veux. Juste une remarque, avec les valeurs de l'énoncé, les temps affichés sont de 0,0 ! Du coup, j'ai tout multiplié par 10. N'hésite pas à faire plusieurs essais successifs, les temps affichés sont très variables.

L=[]
L1=[]
from random import shuffle
from time import time
for i in range (1060):
    L1=[i,i]
    L.append(L1)
shuffle(L)
Dico=dict(L)

def recherche1(L,k):
    for i in range(len(L)+1):
        if L[i][1]==k:
            break
    return k

st=time()
for k in range(500):
    recherche1(L,k)
print(time()-st)

def recherche2(Dico,k):
    for i in range(len(Dico)+1):
        if Dico[i]==k:
            break
    return k

st=time()
for k in range(500):
    recherche2(Dico,k)
print(time()-st)

 

Posté(e) (modifié)

Bonjour Julesx,

Je vous remercie particulièrement pour vos innombrables conseils, mais également pour votre soutien fournie, vous vous êtes démené pour pouvoir me venir en aide, grâce à vous, j'ai pu en apprendre davantage sur le python, de plus, j'ai eu la chance de pouvoir corriger certaines de mes lacunes notamment à l'aide de vos explications. Vos programmes ont été rigoureux, enfin, je tenais à vous exprimez, pour une personne qui débute dans le python, votre avenir s'annonce prometteur ! Je vous souhaite bon courage dans vos apprentissages !

je ne vous remercierai jamais assez !

Cordialement, cat24 🤗

Modifié par cat24
  • E-Bahut
Posté(e)

De rien, ça a été aussi un plaisir pour moi d'avoir quelqu'un qui suit une demande (c'est de plus en plus rare!). En plus, grâce aux exercices, j'ai pu découvrir quelques finesses de Python. Donc, le bénéfice a été partagé.

Bonne continuation.

P.S. : Comme j'ai en particulier un doute à propos de l'exercice 7, quand tu auras le corrigé, ce serait gentil de le poster à la suite de ce fil. Tu peux le faire également pour les autres si ma version diffère profondément de celle de ton professeur.

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
×
×
  • Créer...
spam filtering
spam filtering