• STATISTIQUES
  • Il y a eu un total de 0 membres et 47482 visiteurs sur le site dans les dernières 24h pour un total de 47 482 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Newbie Contest
    Crackme: 35, Cryptographie: 49, Hacking: 27, Javascript/Java: 17, Logique: 31, Programmation: 23, Stéganographie: 53
    Challenges
    [FR] NewbieContest
    Nous vous proposons une série de challenges regroupant plusieurs domaines allant de l'exploitation de fail...
    Hacking
    [EN] Astalavista
    JavaScript: 1, Exploit: 2, Crypto: 34, CrackIt: 15, Stegano: 8, Programming: 12, Logic: 36, Special: 6, Science: 4, Info...
    Challenges
    [FR] PHP France
    Pour tout savoir sur le PHP, en français. Vous trouverez des tutoriels, des exemples, des astuces, toute la do...
    Hacking
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    Challenges
    [EN] Net Force
    Javascript: 9, Java Applets: 6, Cryptography: 16, Exploits: 7, Cracking: 14, Programming: 13, Internet: 15, Steganograph...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Python]Situer mon niveau.
31-10-2016, 15h30 (Modification du message : 17-11-2016, 13h43 par ark.)
Message : #1
InforMods Hors ligne
Newbie
*



Messages : 20
Sujets : 4
Points: 6
Inscription : Jul 2016
[Python]Situer mon niveau.
Bonjour,

j'ai pas mal avancé en Python et j'aimerais me lancer dans l'apprentissage d'un autre langage plus bas niveau (j'ai choisis le C++).

Je ne sais pas si j'ai acquis un niveau acceptable en Python et que je peut m'autoriser à apprendre un autre langage ou alors je me suis totalement tromper et j'ai encore énormément de chose à apprendre en Python.

Donc, je cherche quelques exercices pour évalué mon niveau.

J'ai trouver un exercice :

On a un plateau (un tableau contenant deux tableaux) qui contient des True ou des False, imaginez que les True sont des murs et les False sont des chemins, vous devez écrire une fonction chemin qui parcours le plateau en passant par les False.

Ce n'est pas ce qui est vraiment énoncé dans l'exercice mais sa donne une idée.

Voilà ce que j'ai rendu :
Code PYTHON :

plateau = [[True, False, False, True, False, True],
           [False, True, True, False, False, False]]
 
def chemin(p):
    h, i = 0, 0
 
    while i < len(p[0]):
        if p[h][i] is False:
            print (h, "-", i)
            i += 1
        else:
            if h is 0:
                h = 1
            else:
                h = 0
 
chemin(plateau)
 


(il affiche les cordonnés par les-quels il (le script) passe).

Je vous donne ça pour vous donnez une petite idée de mon niveau.

Merci d'avance.
+1 (1) -1 (0) Répondre
31-10-2016, 15h34 (Modification du message : 31-10-2016, 15h36 par supersnail.)
Message : #2
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,609
Sujets : 71
Points: 465
Inscription : Jan 2012
RE: [Python]Situé mon niveau.
Bonjour,

Je me suis permis d'insérer ton code directement sur le forum (on a des balise [CODE=langage ], autant en profiter Big Grin)

Ensuite, c'est assez difficile de juger sur si peu de code , mais de ce que je vois c'est assez propre, après remplacer ton
Code PYTHON :
if h is 0:
    h = 1
else:
    h = 0
par un simple
Code PYTHON :
h = 1 - h
(merci MacYavel d'avoir vu mon atrocité d'avant :þ).

Après ça pourrait être amusant de faire ça pour une grille n x n si tu veux complexifier un peu le truc Tongue
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (1) -1 (0) Répondre
31-10-2016, 15h41
Message : #3
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
RE: [Python]Situé mon niveau.
Salut,

C'est impossible de juger ton niveau sur un exercice aussi court. Néanmoins:

- le print au milieu d'une fonction, qui mélange l'algorithme de résolution du problème et l'affichage du résultat, indique possiblement un manque d'expérience dans l'écriture de code modulaire
- Une meilleure simplification (désolé supersnail): h = 1 - h, son absence indique un manque d'habitude avec les algos low-level
- if x is False: un programmeur expérimenté ecrit "if x" ou "if not x"
- L'algorithme ne détecte pas les cas ou aucune solution n'existe
+1 (2) -1 (0) Répondre
31-10-2016, 16h16
Message : #4
InforMods Hors ligne
Newbie
*



Messages : 20
Sujets : 4
Points: 6
Inscription : Jul 2016
RE: [Python]Situé mon niveau.
(31-10-2016, 15h41)b0fh a écrit : Salut,

C'est impossible de juger ton niveau sur un exercice aussi court. Néanmoins:

- le print au milieu d'une fonction, qui mélange l'algorithme de résolution du problème et l'affichage du résultat, indique possiblement un manque d'expérience dans l'écriture de code modulaire
- Une meilleure simplification (désolé supersnail): h = 1 - h, son absence indique un manque d'habitude avec les algos low-level
- if x is False: un programmeur expérimenté ecrit "if x" ou "if not x"
- L'algorithme ne détecte pas les cas ou aucune solution n'existe
Oui, dans un algorithme on ne fais pas de print et on renvoi uniquement des valeurs, c'est ça ?

Merci de vos réponses (toi et supersnail).
+1 (0) -1 (0) Répondre
31-10-2016, 17h57
Message : #5
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,609
Sujets : 71
Points: 465
Inscription : Jan 2012
RE: [Python]Situé mon niveau.
Disons qu'on préfère séparer le plus possible le traitement des données de l'affichage pour rendre la maintenance du code plus pratique, ce qui a donné des naissance à certains "design pattern", dont le plus connu est MVC.

Ton programme pourrait par exemple renvoyer une liste de coordonnées pour ton chemin, qui pourront ensuite être affiché par un "print" ou autre moyen d'affichage de ton choix :]. Bref, le meilleur moyen pour progresser c'est encore de coder des trucs, et partager ce que t'as fait pour qu'on puisse t'aider à t'améliorer Wink (et hésite pas là-encore à passer sur IRC et rester, même si c'est pas animé sur le moment, mais disons que c'est là que la majorité des échanges ont lieu :þ).

Par le passé, on avait aussi des défis programmation, et tu peux toujours t'amuser à essayer de faire le défi et poster ta solution et regarder celle des autres, et ça tombe bien, y'a d'autres pythonneux dans le coin :3. Sachant qu'il faut quelques années de pratique avant de pouvoir se proclamer "bon" en programmation :þ
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (1) -1 (0) Répondre
31-10-2016, 20h14
Message : #6
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [Python]Situé mon niveau.
salut,

(31-10-2016, 15h30)InforMods a écrit : Je ne sais pas si j'ai acquis un niveau acceptable en Python et que je peut m'autoriser à apprendre un autre langage ou alors je me suis totalement tromper et j'ai encore énormément de chose à apprendre en Python.

de mon point de vue et en bref :
  • tu t'autorises bien ce que tu veux, si t'as envies de te mettre au C++ just do it™, c'est juste que c'est plus ou moins pertinent selon ton niveau global en programmation
  • et puisqu'on en parle justement le meilleur moyen de connaitre son niveau dans un langage donné c'est encore de se mettre en situation, "tiens si j'étais confronté à tel problème, j'aurai besoin d'un programme qui fait ci ou ça => est-ce que je suis capable de le coder actuellement, et si oui en combien de temps ?"

l'idée derrière c'est de savoir se (re?)donner des objectifs, se rappeler pourquoi on code finalement, pourquoi on a appris la programmation et pourquoi on continue, dans quel but

my 2 cents,
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (2) -1 (0) Répondre
31-10-2016, 20h38 (Modification du message : 31-10-2016, 20h39 par InforMods.)
Message : #7
InforMods Hors ligne
Newbie
*



Messages : 20
Sujets : 4
Points: 6
Inscription : Jul 2016
RE: [Python]Situé mon niveau.
(31-10-2016, 20h14)gruik a écrit : salut,

(31-10-2016, 15h30)InforMods a écrit : Je ne sais pas si j'ai acquis un niveau acceptable en Python et que je peut m'autoriser à apprendre un autre langage ou alors je me suis totalement tromper et j'ai encore énormément de chose à apprendre en Python.

de mon point de vue et en bref :
  • tu t'autorises bien ce que tu veux, si t'as envies de te mettre au C++ just do it™, c'est juste que c'est plus ou moins pertinent selon ton niveau global en programmation
  • et puisqu'on en parle justement le meilleur moyen de connaitre son niveau dans un langage donné c'est encore de se mettre en situation, "tiens si j'étais confronté à tel problème, j'aurai besoin d'un programme qui fait ci ou ça => est-ce que je suis capable de le coder actuellement, et si oui en combien de temps ?"

l'idée derrière c'est de savoir se (re?)donner des objectifs, se rappeler pourquoi on code finalement, pourquoi on a appris la programmation et pourquoi on continue, dans quel but

my 2 cents,
Merci beaucoup de ta réponse, je ne voulais pas apprendre le C++ si j'ai encore beaucoup de lacunes en Python, je ne veut pas laisser tomber ce langage.

Sinon, j'ai écrit un petit programme qui génère des nombres premier dans un fichier :

Code PYTHON :

def verifier(n) :
    """
    -Fonction qui vérifie si un nombre est un nombre premier ou pas
    """


    i = 2
    p = True

    while i < n :
        if n % i == 0 :
            p = False

        i += 1

    return p

s = open("liste_nombre_premier", "w")
x = ""

for i in range(2, 1000) :
    r = verifier(i)

    if r :
        x += str(i) + "\n"

s.write(x)
s.close()
 


J'ai appliquer vos conseils, par exemple j'ai fais "if r" au lieu de "if r is True" et je ne sais pas si c'est plus propre mais j'ai mis des espaces avant les ":".

Puis, je n'ai pas fais de "print" mais uniquement un "return".

Voilà, si vous avez des trucs à dire sur ce petit code.
+1 (0) -1 (0) Répondre
31-10-2016, 22h27
Message : #8
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,609
Sujets : 71
Points: 465
Inscription : Jan 2012
RE: [Python]Situé mon niveau.
D'un point de vue code j'ai pas grand-chose à redire, c'est propre (après tu pourrais faire un for i in range(...) plutôt qu'un while i incrémenté à la main :p).

D'un point de vue algorithmique, tu pourrais optimiser légèrement en faisant un crible d'Ératosthène, et vu que tu veux générer une liste de nombre premiers, c'est l'occasion rêvée de s'initier aux générateurs et le mot-clé "yield" Big Grin
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (2) -1 (0) Répondre
31-10-2016, 22h35
Message : #9
Junky Hors ligne
Snorky Master
*



Messages : 228
Sujets : 35
Points: 203
Inscription : Mar 2013
RE: [Python]Situé mon niveau.
Bonjour,

Ou même faire de la récursivité.
Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier

+1 (1) -1 (0) Répondre
31-10-2016, 22h53 (Modification du message : 31-10-2016, 22h53 par InforMods.)
Message : #10
InforMods Hors ligne
Newbie
*



Messages : 20
Sujets : 4
Points: 6
Inscription : Jul 2016
RE: [Python]Situé mon niveau.
(31-10-2016, 22h27)supersnail a écrit : D'un point de vue code j'ai pas grand-chose à redire, c'est propre (après tu pourrais faire un for i in range(...) plutôt qu'un while i incrémenté à la main :p).

D'un point de vue algorithmique, tu pourrais optimiser légèrement en faisant un crible d'Ératosthène, et vu que tu veux générer une liste de nombre premiers, c'est l'occasion rêvée de s'initier aux générateurs et le mot-clé "yield" Big Grin
Okay encore une fois, merci de ta réponse.

Quand tu parle de générateur, c'est ça ? :
Code PYTHON :

>>> def creerGenerateur() :
...     myList = range(3)
...     for i in myList:
...         yield i * i
...
>>> generateur = creerGenerateur()
>>> print (generateur)
<generator object creerGenerateur at 0x7f68a8b21bd0>
>>> for i in generateur:
...     print (i)
...
0
1
4
 
+1 (0) -1 (0) Répondre
31-10-2016, 22h57
Message : #11
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,609
Sujets : 71
Points: 465
Inscription : Jan 2012
RE: [Python]Situé mon niveau.
C'est exactement ça Big Grin
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (1) -1 (0) Répondre
31-10-2016, 23h11
Message : #12
InforMods Hors ligne
Newbie
*



Messages : 20
Sujets : 4
Points: 6
Inscription : Jul 2016
RE: [Python]Situé mon niveau.
(31-10-2016, 22h57)supersnail a écrit : C'est exactement ça Big Grin
Okay donc, je vais me pencher un peu plus sur ça.
+1 (0) -1 (0) Répondre
01-11-2016, 01h46
Message : #13
InforMods Hors ligne
Newbie
*



Messages : 20
Sujets : 4
Points: 6
Inscription : Jul 2016
RE: [Python]Situé mon niveau.
J'ai écrie un programme contenant plusieurs algorithmes permettant de traiter les tableaux de proportionnalités :
Code PYTHON :

def verifier(tableau):
    """
    -Fonction permettante de vérifier la proportionnalité d'un tableau
    -Prend en entré le tableau sous forme de liste
    """


    coefficient = tableau[1][0] / tableau[0][0]
    proportionnalite = True
    j = 0

    for i in tableau[0]:
        if i * coefficient != tableau[1][j]:
            proportionnalite = False

        j += 1

    return proportionnalite

def corriger(tableau):
    """
    -Fonction permettante de corriger un tableau non proportionnel
    -Prend en entré le tableau sous forme de liste
    -Renvoie le tableau corrigé
    """


    for i in range(len(tableau[0])):
        tableau[1][i] = tableau[0][i] * tableau[1][0] / tableau[0][0]

    return tableau

def completer(tableau):
    """
    -Fonction permettante de completer un tableau
    -Prend en entré le tableau à compléter
    -Renvoie le tableau complété
    """


    coefficient = tableau[1][0] / tableau[0][0]

    for i in range(len(tableau[0])):
        if tableau[0][i] == "x":
            tableau[0][i] = tableau[1][i] / coefficient
        elif tableau[1][i] == "x":
            tableau[1][i] = tableau[0][i] * coefficient

    return tableau

def generer(a, b, n):
    """
    -Fonction permettante de générer un tableau proportionnel
    -Prend en entré a (le premier nombre du haut), b (le premier nombre du bas), n (le nombre de collones à générer)
    -Renvoie le tableau générer
    """


    tableau = [[a], [b]]
    i = tableau[0][0] + 1

    for j in range(n):
        tableau[0].append(i)
        tableau[1].append(tableau[0][j + 1] * b / a)

        i += 1

    return tableau
 


Je pense que mon code est assez propre.
+1 (0) -1 (0) Répondre
01-11-2016, 11h37 (Modification du message : 01-11-2016, 11h38 par supersnail.)
Message : #14
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,609
Sujets : 71
Points: 465
Inscription : Jan 2012
RE: [Python]Situé mon niveau.
On voit le fainéant qui veut déléguer ses devoirs de maths à sa machine :þ. Plus sérieusement j'ai toujours pas compris l'intérêt d'enseigner les tableaux de proportionalité, même plus de 10 ans après :')

Sinon niveau code, dans corriger et completer tu peux précalculer le coefficient de proportionnalité au lieu de faire le calcul à chaque tour de boucle Smile.

Je rejoins aussi ce que disait gruik, tu peux aussi écrire des programmes qui font des trucs utiles/résolvent un problème plus concret que simplement de l'exercice de style (par exemple j'avais écrit un truc pour saisir mes notes & calculer la moyenne quand j'avais à peu près ton âge, et je m'en suis jamais servi en fin de compte, et le code est vraiment affreux donc nan vous verrez pas :>).
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (1) -1 (0) Répondre
01-11-2016, 12h26 (Modification du message : 01-11-2016, 12h26 par InforMods.)
Message : #15
InforMods Hors ligne
Newbie
*



Messages : 20
Sujets : 4
Points: 6
Inscription : Jul 2016
RE: [Python]Situé mon niveau.
(01-11-2016, 11h37)supersnail a écrit : On voit le fainéant qui veut déléguer ses devoirs de maths à sa machine :þ. Plus sérieusement j'ai toujours pas compris l'intérêt d'enseigner les tableaux de proportionalité, même plus de 10 ans après :')

Sinon niveau code, dans corriger et completer tu peux précalculer le coefficient de proportionnalité au lieu de faire le calcul à chaque tour de boucle Smile.

Je rejoins aussi ce que disait gruik, tu peux aussi écrire des programmes qui font des trucs utiles/résolvent un problème plus concret que simplement de l'exercice de style (par exemple j'avais écrit un truc pour saisir mes notes & calculer la moyenne quand j'avais à peu près ton âge, et je m'en suis jamais servi en fin de compte, et le code est vraiment affreux donc nan vous verrez pas :>).
Oui, comme j'ai pas du tout d'idée j'écris un programme qui fait ce que je vois en cours.

Oui, c'est vrai que sur un programme beaucoup plus grand cela ferais baisser pas mal les performances de re-calculer les coefficient à chaque tour de boucle.

J'ai trouver un truc pas mal qui donne des "défis" de programmation : https://callicode.fr/pydefis/listedefis.

Le programme qui calcule une moyenne :
Code PYTHON :

def calculer_moyenne(n):
    """
    -Fonction permettante de calculer une moyenne
    -Prend en entré les notes représentés sous forme de liste
    -Renvoie la moyenne
    """

   
    m = 0

    for i in n:
        m += i

    return m / len(n)

note = []
n = int(input("Entrez le nombre de note(s) : "))

for i in range(n):
    t = int(input("Note : "))
    note.append(t)

print (calculer_moyenne(note))
 


Pour une fois, je l'ai adapté à l'utilisateur avec des input(), comme ça on n'a pas besoin de modifier le script.
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [PYTHON] un bot IRC basique darcosion 1 137 13-06-2016, 20h40
Dernier message: Yttrium
  [python] ANBU ::: TCP Session Hunter St0rn 2 222 25-02-2016, 18h45
Dernier message: otherflow
  [Python] Une autre façon de gérer les Virtualenv et Packages thxer 2 122 18-01-2016, 12h06
Dernier message: thxer
  [Python] rot script ark 9 433 08-03-2015, 00h37
Dernier message: ark
  [Python] Todo Manager ark 5 347 03-03-2015, 10h55
Dernier message: ark
  [python] Un décorateur pour inventorier les objets b0fh 1 156 04-12-2014, 17h50
Dernier message: thxer
  [python] UPnP Scanner St0rn 2 179 29-10-2014, 14h50
Dernier message: St0rn
  [python] Buffer Overflow : EBP et EIP St0rn 0 124 25-10-2014, 12h58
Dernier message: St0rn
  [Python] QuickHex thxer 9 419 15-08-2014, 20h26
Dernier message: sakiir
  Python : QuickBIn octarin 1 133 13-08-2014, 19h05
Dernier message: thxer

Atteindre :


Utilisateur(s) parcourant ce sujet : 8 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut