Inscription / Connexion Nouveau Sujet

1 2 +


Posté par
Franca26
re : algorithmique - fonction 28-10-22 à 18:34

L[6] = L [i]
Si L = [1, 2, 4, 5, 3], L[6] vaut (len(L)).
L[5] vaut (len(L)-1).

Posté par
carpediem
re : algorithmique - fonction 28-10-22 à 18:37

Franca26 @ 28-10-2022 à 18:34

L[6] = L [i] je ne comprends pas cette égalité !!
Si L = [1, 2, 4, 5, 3], L[6] vaut (len(L)). non par définition L[6] est ... ?
L[5] vaut (len(L)-1).  idem


combien de termes contient ta liste ?

que vaut len (L) ?

conclusion ?

Posté par
Franca26
re : algorithmique - fonction 28-10-22 à 18:45

Ma liste contient 4 termes.
(len(L)) vaut la longueur de la liste L.
L[6] est la dernière valeur connue de la liste

Posté par
carpediem
re : algorithmique - fonction 28-10-22 à 19:05



Franca26 @ 28-10-2022 à 18:34

L = [1, 2, 4, 5, 3]

L contient 4 termes ?

peux-tu me citer tous les termes de la liste :

L[...] = ...

en complétant tous les pointillés et du premier terme au dernier terme?

Posté par
ZEDMAT
re : algorithmique - fonction 28-10-22 à 19:10

Aide visuelle :

algorithmique - fonction

Posté par
Franca26
re : algorithmique - fonction 28-10-22 à 19:37

L contient 5 termes .

Tous les termes de la liste sont 1,2,4,5,3.

L[0] = 1
L[1] = 2
L[2] = 4
L[3] = 5
L[4] = 3

Posté par
ZEDMAT
re : algorithmique - fonction 28-10-22 à 19:49

donc ?

Citation :
Si L = [1, 2, 4, 5, 3], que vaut L[6] ?
(idem pour L(5))

Posté par
Franca26
re : algorithmique - fonction 28-10-22 à 20:40

Donc :
L[5]=6 et
L[6]=7.

Posté par
ZEDMAT
re : algorithmique - fonction 28-10-22 à 20:44

Non.
Où es tu allé chercher ces valeurs qui ne sont pas dans ta liste L ?

Posté par
Franca26
re : algorithmique - fonction 28-10-22 à 21:05

L[5] = (len(L))+1
L[6] = (len(L)) +2
Le terme L[5] ne figure pas dans (len(L)) et pour l'obtenir il faut ajouter un terme. C'est le même principe pour L[6].

Posté par
ZEDMAT
re : algorithmique - fonction 28-10-22 à 22:28

Franca26 @ 28-10-2022 à 21:05

L[5] = (len(L))+1
L[6] = (len(L)) +2
Le terme L[5] ne figure pas dans (len(L)) et pour l'obtenir il faut ajouter un terme. C'est le même principe pour L[6].


Attention, tu mélanges tout... et ce que tu écris n'a pas de sens.
Exemple :
Citation :
Le terme L[5] ne figure pas dans (len(L))

ne figure pas dans (len(L)) len(L) est un nombre (ici len(L)=5).
La composante L[5] est le nom que l'on donnerait à la 6ème composante de la liste L  si cette composante... existait ! Or elle n'existe pas puisque L n'a que 5 éléments. Regarde le dessin que je t'ai envoyé : le dernier élément de la liste L  donc le cinquième est L[4].

C'est pourquoi quand TON script appelle L[i+1] avec i=4 soit L[5], il "plante" (message d'erreur") : l'interpréteur ne trouve pas dans la liste L cette 6ème composante... qui n'existe pas dans L.

C'est un peu compliqué au début ; c'est pourquoi Carpediem
1) t'a alerté en te signalant ce problème d'index dans le range que tu utilisais
2) et surtout t'a incité à prendre un papier et un crayon et à écrire les valeurs successives de i, de L[i], de L[i+1], etc.

Reprends tout cela calmement ; tu n'es pas si loin du but... si tu comprends ce qui précède.

Pour la mise en œuvre dans le script, je rends bien sûr la main à Carpediem (mes excuses pour mon intrusion -plus longue que je ne l'avais imaginée-  dans ce fil).

Posté par
Franca26
re : algorithmique - fonction 29-10-22 à 09:55

Merci beaucoup Zedmat pour tes explications qui me sont très utiles. Effectivement, j'ai du mal avec les boucles (nouveau pour moi) et je mets peut être du temps à comprendre mais j'ai l'intention d'y arriver. Que Carpediem ne perde pas patience non plus.

def list_pas_ordre (L)
    T = False
    for i in range (len(L)-1) :
          if L[i] >= L[i+1]
             T=True
    return T

Posté par
ZEDMAT
re : algorithmique - fonction 29-10-22 à 10:25

Pas mal !!
As tu testé ce script avec des listes ? liste=[10,2,12,20,5] donne quoi ?
Satisfait ?

J'ai copié collé (tel quel) puis testé le code inséré dans ton message... j'ai obtenu : SyntaxError: invalid syntax mais au premier coup d'oeil tu devrais trouver où est (sont) le(s) problème(s) de syntaxe.

Si Carpediem est d'accord, il serait intéressant de finaliser l'autre méthode avec while.

Bon courage.

Posté par
Franca26
re : algorithmique - fonction 29-10-22 à 10:35

Oui j'avais testé avec une liste simple et je viens de tester avec la liste=[10,2,12,20,5], cela fonctionne.

def liste_pas_ordre (L):
    T = False
    for i in range (len(L)-1):
        if L[i]>=L[i+1]:
            T = True
    return T

Ha, vu, il manque les ":".

Posté par
ZEDMAT
re : algorithmique - fonction 29-10-22 à 11:47

Le code que tu mets dans tes messages, est ce que tu le saisis à nouveau ? Si oui, change de méthode :
* sous python tu copies (CTRL+C) ton code une fois sélectionné.
* puis sur Ile aux Maths, tu colles (CTRL+V) . Pour avoir les indentations, il suffit de mettre ce code collé (ou à coller) entre les balises  </> qui se trouvent dans les outils sous la fenêtre où tu écris ton message. Tu sais faire ?

Posté par
carpediem
re : algorithmique - fonction 29-10-22 à 13:11

ne vous inquiétez pas, je suis de retour et merci à ZEDMAT d'avoir pris le relai

quant au pb soulevé par ZEDMAT : oui Franca26 bien faire attention aux types de variables avec lesquelles tu travailles : entier, booléen, liste, élément d'une liste, ... et ne pas les mélanger !!

bien connaitre ensuite les bornes dans les boucles ou les variables "indiciables" comme une liste : c'est une des erreur les plus fréquentes (et que nous faisons tous)

et comme tu le vois même en algo il est utile voire nécessaire de prendre un papier et un crayon pour visualiser les choses


ok ton script marche mais il reste une dernière petite erreur mathématique et une indication pour te mettre sur la piste (car avec l'éducation de maintenant il te sera difficile de la trouver)  :

pour tout nombre a : a \le a qui se traduit en français a est inférieur à a" et à ne pas confondre avec a < b qui se traduit par a est inférieur strictement à b


pour le script avec un while on en est à

carpediem @ 27-10-2022 à 19:59

def liste_blabla (L) :
  T = False
  i = 0
  while L(i) <= L(i + 1) and i < ... :   pour le pb de la borne !!   tu sais quoi chercher maintenant
    i = i + 1
  if i ?? ... :          trouver le bon test !!
    T = ...
  return T

Posté par
Franca26
re : algorithmique - fonction 29-10-22 à 19:49

Zedmat Non, je ne connaissais pas l'astuce pour les indentations, j'essaierai la prochaine fois. Merci

Carpediem, pour le premier script, c'est du coup if L[i]>L[i+1]:

Posté par
carpediem
re : algorithmique - fonction 29-10-22 à 20:03

voila tout à fait !!

Posté par
Franca26
re : algorithmique - fonction 30-10-22 à 18:19

J'ai continué à chercher pour l'autre:
def liste_pas_ordre_deux (L):
    T = True
    i = 0
    while L[i]<=L[i+1] and i<i+1:
        i=i+1
    if i == i+1:
        T = False
    return T
Je pense que j'y suis presque mais je ne sais pas quoi modifier et comment. Python me le donne sans erreurs mais le résultat est toujours vrai.

Posté par
carpediem
re : algorithmique - fonction 30-10-22 à 18:25

Franca26 @ 30-10-2022 à 18:19

J'ai continué à chercher pour l'autre:
def liste_pas_ordre_deux (L):
    T = True
    i = 0
    while L[i] <= L[i + 1] and i < i + 1:  toujours vrai donc sans intérêt
        i = i + 1
    if i == i+1:  toujours faux donc sans intérêt
        T = False
    return T
c'est pourquoi tu n'obtiendras pas de résultat ...

voir mon msg de 13h11

Posté par
Franca26
re : algorithmique - fonction 30-10-22 à 18:30

J'ai relu le message mais par rapport à quoi? ( signes,bornes...). Je n'arrive pas à faire le lien.

Posté par
carpediem
re : algorithmique - fonction 30-10-22 à 18:35

donc tu as déjà oublié tout le travail que nous t'avons fait faire pour contrôler quand le test entre deux éléments de la liste est possible

Posté par
carpediem
re : algorithmique - fonction 30-10-22 à 18:38

ZEDMAT @ 28-10-2022 à 19:10

Aide visuelle :

algorithmique - fonction

Posté par
Franca26
re : algorithmique - fonction 30-10-22 à 18:39

Non, je n'ai pas oublié.

Posté par
Franca26
re : algorithmique - fonction 30-10-22 à 18:41

Il faut que j'arrive à mettre en pratique ces notions nouvelles pour moi.

Posté par
carpediem
re : algorithmique - fonction 30-10-22 à 18:47

def liste_blabla (L) :
  T = False
  i = 0
  while L(i) <= L(i + 1) and i < len (L) - 2 :   pour le pb de la borne !!
    i = i + 1
  if i < len (L) - 1 :
    T = True
  return T

Posté par
Franca26
re : algorithmique - fonction 30-10-22 à 18:54

D'accord, merci.
Je pensais à len(L)-1 mais je n'aurai pas pensé à mettre len(L)-2. J'ai compris le script et cela m'a permis d'apprendre Python avec while que je n'avais encore pas vu en cours.

Posté par
carpediem
re : algorithmique - fonction 30-10-22 à 19:19

REM : les deux scripts risque cependant de poser un pb si la liste ne contient que 1 (ou 2 ?) élément(s) ...

à toi d'essayer ...

Posté par
ZEDMAT
re : algorithmique - fonction 30-10-22 à 19:24

Citation :
J'ai compris le script

Fort bien mais.... l'as tu testé ?
Pour cela tu copies le script inscrit dans le message.
Sous Python, tu colles ce script (tu enlèves les textes de commentaire) et tu exécutes le script avec au moins 2 listes différentes pour tester les 2 résultats possibles (True ou False).

Posté par
Franca26
re : algorithmique - fonction 31-10-22 à 10:18

Zedmat, oui, j'ai testé avec les deux résultats possibles en prenant une liste. Aucun problème.
Carpediem, avec deux éléments, cela fonctionne et avec un élément, non mais cela n'est plus une liste donc cela me parait normal.

Posté par
carpediem
re : algorithmique - fonction 31-10-22 à 10:36

une liste à un élément est une liste !!!

Posté par
Franca26
re : algorithmique - fonction 31-10-22 à 22:07

Ha bon, d'accord.

1 2 +




Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !