Inscription / Connexion Nouveau Sujet
Niveau exercices
Partager :

suite

Posté par
flight
04-03-21 à 21:27

Bonsoir

Vous connaissez certainement ce genre de suite :

123
111213
31121113
1321123113
1113122112132113
ect...

écrire tout simplement un algorithme dans le langage de votre choix pour générer
10 lignes ce cette suite

Posté par
matheuxmatou
re : suite 04-03-21 à 22:46

bonsoir
voici un petit programme Python pour la chose

 Cliquez pour afficher

Posté par
LittleFox
re : suite 05-03-21 à 09:57


@matheuxmatou
Ce programme est correct (il donne un terme de plus qu'attendu mais c'est du chicanement). Et il est énormément documenté.
Par contre ça ne ressemble pas du tout à du python, on dirait du bash ou du vieux Basic.


Je te propose une version revisitée de ton programme en suivant les convention de nommage et de documentation de python:

 Cliquez pour afficher


Ensuite en voici une version nettoyée (assignation inutiles, moins de variables globale, les noms des fonctions sont des actions, ...):
 Cliquez pour afficher


Et enfin, voici une version en utilisant les fonctions qui existent déjà dans python et un générateur:
 Cliquez pour afficher



Les trois programmes font la même chose mais avec un niveau de plus en plus avancé.

Posté par
matheuxmatou
re : suite 05-03-21 à 10:53

LittleFox

non ! c'est du Python 3

avec des commentaires pour déclarer les variables et les fins de boucle pour le rendre plus lisible et rigoureux

Posté par
LittleFox
re : suite 05-03-21 à 11:23


Oui, oui. Ton programme tourne sous Python 3. C'est dans ce sens là que je dis qu'il est correct.
Par contre il ne suit pas les conventions. Entre autres dans la façon de déclarer les variables.

Toi :


    # VARIABLES LOCALES
    #                       i   : entier
    i=0


Python 3 (avec typing) :

    i: int = 0


C'est beaucoup plus concis et clair pour moi.
Les fin de boucles et de fonctions sont marquées par la fin de l'indentation et c'est suffisant.
La documentation d'une fonction est par convention dans un commentaire multiligne:

"""Mon commentaire."""


Le nom des fonctions et variables est par convention en minuscules séparé par des soulignés. Les noms commençant par une majuscule étant réservés aux classes.
Il vaut mieux être explicite dans le noms des variables (cara, posit, L, ...)

Toutes des conventions qui ne changent rien pour l'ordinateur mais rendent le code lisible pour les autres développeurs.

Ces conventions sont rassemblées dans le PEP8. En voici un petit résumé pour commencer:

Posté par
matheuxmatou
re : suite 05-03-21 à 11:28

LittleFox
je sais bien qu'il n'y a pas besoin de déclarer les variables en Python, et que les les fins de boucles sont les désindentations... !

mais, pour l'avoir enseigné, je "forçais" à mettre en commentaires ces éléments pour visualiser les boucles comme c'était le cas dans tous les autres langages (quasiment) et les étudiants s'y retrouvaient mieux. Le python est un langage peu pédagogique à mon sens.

donc si tu veux tu peux virer tous les commentaires, mais c'était mes conventions et voilà

Posté par
LittleFox
re : suite 05-03-21 à 13:51


Tu enseignais l'informatique?

Posté par
matheuxmatou
re : suite 05-03-21 à 14:00

non, les maths et l'algorithmique... donc le travail sur papier ! ils avaient ensuite des cours d'informatique et manipulaient plusieurs langages

disons que dans le cadre du programme, d'éminents inspecteurs ont jugé bon d'imposer le Python... mais bon, pour moi l'algorithmique, c'est un pseudo-langage en français qui permet de décortiquer un problème... et ensuite chacun le traduit dans le langage qu'il veut.

Depuis que je me suis mis à la programmation (disons 1982) j'ai manipulé une bonne quinzaine de langages. Je dois avouer que pour moi le Python est le plus mauvais au niveau de la rigueur d'écriture.

J'attribuerais volontiers la palme au feu "turboPascal" qui était très rigoureux et "mathématique".

Vu la difficulté des étudiants à localiser les boucles et à jongler avec les variables sans se préoccuper de leur type ou des ambiguïtés, on a adopté (en accord avec moult collègues enseignant dans le même BTS) des conventions d'écriture (sous forme de commentaires inutiles à la machine) restituant les contraintes des langages un peu rigoureux.

Donc voilà.

Posté par
matheuxmatou
re : suite 05-03-21 à 14:04

(mais bon, je ne suis pas sûr que cette conversation ait sa place ici... et encombre inutilement le post de flight )

Posté par
LittleFox
re : suite 05-03-21 à 14:26


flight a beaucoup trop de post, on peut bien lui en prendre un

J'ai commencé avec le Basic vers les années 2000 (pas le dot.net, celui sur commodore), ensuite turboPascal et casioBasic, puis c/c++, java, C# et enfin Python (avec quelques languages plus différents comme Lisp, ou Comet).

Je trouve Python le language le plus naturel, beaucoup plus proche de l'humain que de la machine.
Le typing en python est relativement récent (python 3.5 en 2015) mais couvre la plupart des conventions que tu utilises dans ton code.

Je suis d'accord que l'algorithmique est tout à fait différent du language. Plutôt comment penser un programme. Beaucoup plus rigoureux avec, entre autres, ces fameux invariants de boucles.

Un language est aussi rigoureux que l'on veut. Après tout, la machine ne peut pas deviner ce qu'on lui demande (quoique peut-être un jour ).
Python a beaucoup de conventions acceptées par la communauté pour rendre les programmes plus lisibles et plus rigoureux. Je trouve dommage de ne pas les suivre et d'en inventer d'autres.

Je ne dis pas qu'il ne faut pas déclarer ses variables, je dis qu'il y a un moyen propre à Python de le faire

Posté par
matheuxmatou
re : suite 05-03-21 à 17:33

LittleFox

moi j'ai arrêté en 2016 ... donc je n'utilisais pas cette version de Python (c'était la 3.2 je crois)

mais si ils ont ajouté le typage c'est très bien



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

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 !