Exercice python lycée

Fermé
Yamine_1411 Messages postés 12 Date d'inscription mercredi 30 décembre 2020 Statut Membre Dernière intervention 1 janvier 2021 - Modifié le 30 déc. 2020 à 14:48
jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 - 1 janv. 2021 à 20:14
Bonjour,

Voici mon exercice que je dois rendre en 1ère spécialité sur du Python, j'ai fais un code que je trouve valide mais il ne marche pas, pourriez vous m'indiquer vos conseils ?

def manhathanMaboul(N,M):
    amismax=0
    amis=0
    for i in range (len(M)):
        for k in range (len(M)):
            if M[i]<=M[k]<=(M[i]+N):
                amis=amis+1
            if amis>amismax:
                amismax=amis
    return amismax


Les indentations ne se marquent pas mais je les ai faites !

modération : Pour la mise en forme des sources, au dessus de la zone d'édition de tes messages, il y a des icones pour les enrichissements du texte. Celle qui a cet aspect
<> ▼
permet d'appliquer aux codes, suivant une liste de valeurs, le format correspondant à sa nature.
Un petit tuto là : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

3 réponses

Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
30 déc. 2020 à 18:22
Bonsoir

CCM, comme tous les sites de code qui se respectent disposent d'un outils pour mettre en forme le code (et donc conserver l'indentation), voir le texte et le lien (à lire attentivement) que jee pee a ajouté à la fin de ton message en le corrigeant.

Pour ton problème, selon ton énoncé M est un entier, tu ne peux donc ni récupérer sa longueur, ni l'indicer.

0
jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 231
Modifié le 30 déc. 2020 à 18:38
Bonjour,

On dirait que la réalisation ne respecte déjà pas l'énoncé, intervertissant M et N.

Franchement j'ai peu d'idée sur la solution ;-)

Après Yamine, pour que tout le monde soit d'accord sur l'énoncé, et sa solution, quelles réponses apporterais-tu à ces paramètres passés :

manhathanMaboul(7,[1,2,3,4,4,5,7,9,10,22,23,24])
manhathanMaboul(1,[1,2,3,4,4,5,7,9,10,22,23,4,24])
manhathanMaboul(0,[1,2,3,4,4,5,7,9,10,22,23,24,38])
manhathanMaboul(8,[22,25,26,1,4,7,8,10,141,2,3,4,4,5,7,9,10,22,23,24,67,27])
0
Yamine_1411 Messages postés 12 Date d'inscription mercredi 30 décembre 2020 Statut Membre Dernière intervention 1 janvier 2021 > jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024
30 déc. 2020 à 18:41
Bonjour, je n'ai pas bien compris ce que tu me demandes de faire ^^'
0
jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 231 > Yamine_1411 Messages postés 12 Date d'inscription mercredi 30 décembre 2020 Statut Membre Dernière intervention 1 janvier 2021
Modifié le 30 déc. 2020 à 18:51
Donner les réponses que doit restituer le programme. Pour programmer il faut être capable de faire tourner "à la main", dans sa tête, l’algorithme que l'on veut coder.
0
Yamine_1411 Messages postés 12 Date d'inscription mercredi 30 décembre 2020 Statut Membre Dernière intervention 1 janvier 2021
Modifié le 30 déc. 2020 à 18:36
Bonjour, merci beaucoup j'avais juste inversé N et M, mais il ne marche toujours pas malheureusement...
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
30 déc. 2020 à 19:05
j'avais juste inversé N et M


Oui c'était le premier point et comme jee pee, je ne suis pas sûr de comprendre l'énoncé.
Sa question est pertinente, pour voir si nous comprenons comme toi.

Si ton prof t'as donné des précisions ou un jeu de données de correction (valeurs d'entrées et résultat associé) se serait bien de nous les communiquer.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
30 déc. 2020 à 19:13
par exemple, avec le premier jeu de données que propose jee pee
manhathanMaboul(7,[1,2,3,4,4,5,7,9,10,22,23,24])


La façon dont je comprends l'énoncé donne 26 amis maximum, et ton code 49.
0
jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 231 > Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024
30 déc. 2020 à 19:39
Heureusement que je n'ai pas encore cherché à écrire le programme, moi je donnerais comme réponse 7.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931 > jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024
30 déc. 2020 à 20:36
mdr
0
Yamine_1411 Messages postés 12 Date d'inscription mercredi 30 décembre 2020 Statut Membre Dernière intervention 1 janvier 2021
30 déc. 2020 à 20:49
J'ai eu un exemple, il vous aidera surement à mieux comprendre :
0
jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 231
30 déc. 2020 à 20:55
Dans le fond je vais pouvoir l'écrire mon code ;-)

Yamine un indice : j'avais bien senti qu'il fallait trier la liste en entrée.
0
Yamine_1411 Messages postés 12 Date d'inscription mercredi 30 décembre 2020 Statut Membre Dernière intervention 1 janvier 2021 > jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024
30 déc. 2020 à 20:58
Trier en ordre croissant ? (j'y ai pensé mais je me suis dis que ça ne servais à rien)
Mon raisonnement : Je veux tester pour chaque valeur de N combien d'amis sont compris dans son temps de séjour M et trouver quelle est le nombre maximum d'amis qu'elle peut voir
0
jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 231 > Yamine_1411 Messages postés 12 Date d'inscription mercredi 30 décembre 2020 Statut Membre Dernière intervention 1 janvier 2021
Modifié le 30 déc. 2020 à 22:54
oui aussi, en triant je voulais faire une boucle moins longue en sortant sans explorer toute la liste.

en fait c'est l'initialisation de ton compteur amis qui est mal positionnée, il cumule toutes les boucles
0
Yamine_1411 Messages postés 12 Date d'inscription mercredi 30 décembre 2020 Statut Membre Dernière intervention 1 janvier 2021 > jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024
Modifié le 31 déc. 2020 à 11:06
Ok, j'avais essayé de rajouter une variable amismax qui stockerai du coup la valeur amis du tour de la boucle où il serait le plus haut , ce n'est pas la bonne solution ?

Je t'avoue que je suis un peu confus (je n'ai pas beaucoup d'experience en python je debute),la solution est à ma portée tu penses ?
Ou plutôt est-ce que je suis loin du bon résultat ?
0
jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 231 > Yamine_1411 Messages postés 12 Date d'inscription mercredi 30 décembre 2020 Statut Membre Dernière intervention 1 janvier 2021
31 déc. 2020 à 14:37
Tu es à une marche du bon résultat.

L’écriture d'un programme c'est une idée d'un processus (la tienne tient la route). Après cela ne fonctionne pas du premier coup, on attend une étincelle d'intelligence, ou le lendemain, ou on s'attelle à un travail de fond, le debug. Je suis toujours surpris dans les codes que l'on nous donne sur le forum de ne pas voir de print() pour comprendre ce qui se passe. On doit parfois en mettre après chaque ligne, pour voir où le programme passe et ce que contient chaque variable touchée.

Voilà ton code, qui pour l'exemple donné retourne 15. En une seule modification, mineure sur la forme, majeure sur la logique, il donne le 3 attendu. J'ai rajouté un print pour que tu t'interroges sur l'évolution des compteurs.
def manhathanMaboul(M,N):
    amismax=0
    amis=0
    for i in range (len(N)):
        for k in range (len(N)):
            if N[i]<=N[k]<=(N[i]+M):
                amis=amis+1
                print(i,k,N[i],N[k],N[i]+M,"compteurs", amis, amismax)
            if amis>amismax:
                amismax=amis
    print("Résultat",M,N," = ",amismax)
    return amismax

manhathanMaboul(5, [3,11,1,7,6,12])
0