Aller au contenu

Fonction python (Qui renvoi le nombre écrit en binaire)


rm57Sp

Messages recommandés

Membre, 20ans Posté(e)
rm57Sp Membre 17 messages
Forumeur balbutiant‚ 20ans‚
Posté(e)

Bonsoir, j'ai un tout petit problème sur un code python que j'ai utilisé d'internet qui renvoie l'écriture décimale de l'entier positif dont la représentation binaire est donnée par le tableau T

Voici le code

def convertir(T):
    """
    T est un tableau d'entiers, dont les éléments sont 0 ou 1 et
    représentant un entier écrit en binaire. Renvoie l'écriture
    décimale de l'entier positif dont la représentation binaire
    est donnée par le tableau T
    """
    resultat = 0
    puis = 1
    for i in range(len(T)-1, -1, -1):
        resultat = resultat + T*puis
        puis = puis*2
    return resultat

Je n'ai juste pas compris ce que font les lignes 3 et 4 (for i in range...) et pourquoi on a "puis" je ne comprend pas 

PS: je suis débutant en python:)

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant
Membre, Le prendre au sérieux, nuit gravement à la santé, Posté(e)
azad2B Membre 5 932 messages
Le prendre au sérieux, nuit gravement à la santé,
Posté(e)

On peut être débutant, car tout le monde l'a été un jour.

Pour convertir la liste A = [1,0,1,1,0,0,1,1] représentant un nombre binaire en écriture décimale on calcule

1 * 2⁷ + 0 * 2⁶ + 1 * 2⁵ + 1 * 2⁴ + 0* 2³ + 0 * 2² + 1* 2¹ + 1* 2⁰

ce qui donne le nombre en décimal

len(T) donne la longueur de la liste T

Fort de cette explication si tu sais comment fonctionne la boucle for, tu devrais trouver où tu t'es trompé en copiant ton exercice, ce n'est pas trop difficile

Au cas ou tu ne connaîtrais pas la syntaxe de la boucle for,

la voici sur un exemple adapté à son exercice

Si T est une liste [a,b,c,d] de 4 éléments

for i in range(len(T)-1, -1, -1):

va faire varier i (le compteur de boucle) entre len(T)-1 c'est dire 3 et -1 et cela par incrément de -1

Donc tu devrais comprendre que ce i qui sert à contrôler la boucle doit se trouver quelque part dans la définition de la fonction. Et tu l'as oublié, et c'est pas bien.

regarde à nouveau ceci et tu comprendras pourquoi on enlève 1 à la longueur du tableau (ou de la liste)

1 * 2⁷ + 0 * 2⁶ + 1 * 2⁵ + 1 * 2⁴ + 0* 2³ + 0 * 2² + 1* 2¹ + 1* 2⁰

et place le i là où il faut qu'il soit

 

 

Lien à poster
Partager sur d’autres sites

Membre, #GauloisRéfractaire, Posté(e)
LulzLamo Membre 4 233 messages
#GauloisRéfractaire,
Posté(e)

Enfin la force de Python est aussi sont accessibilité et là vous faite compliqué pour rien il me semble :

>>> binary = bin(22)
>>> print(binary)
0b10110
>>> temp = format(10, "b")
>>> print(temp)
1010
>>> temp = "{0:b}".format(10)
>>> print(temp)
1010
>>>

C'est plus simple, non ? :8P:

Un exemple pour len que je trouve sympas au passage :

>>> def rev_str(my_str):
...     length = len(my_str)
...     for i in range(length - 1, -1, -1):
...         yield my_str[i]
...
>>>
>>> # For loop to reverse the string
>>> for char in rev_str("hello"):
...     print(char)
...
o
l
l
e
h

Enfin bref Python c'est bien !

Lien à poster
Partager sur d’autres sites

Membre, Le prendre au sérieux, nuit gravement à la santé, Posté(e)
azad2B Membre 5 932 messages
Le prendre au sérieux, nuit gravement à la santé,
Posté(e)

@LulzLamoTu as tout à fais raison, mais tu t'égares cependant, car la question est avant tout une question d' algorithmique : il s'agit de comprendre et d'appliquer l'algorithme qui permet de convertir un nombre en un autre dans une base quelconque. Alors évidemment de la base 10 au binaire, on a le paramètre b qui fait l'affaire simplement. Et qu'aurais-tu répondu, si l'on avait dû transformer en base 5  ?

Mais tu veux mon avis ? Python c'est laid, ça pue, c'est minable et surtout, on ne peut rien faire avec un Python tout nu. Enlèves lui ses bibliothèques, et c'est inexploitable. Un Basic moderne fait mille fois mieux. Néanmoins je reconnais qu'il y a des gens, des chercheurs surtout qui ont besoin d'apprendre un langage de programmation pour mettre en application les idées qu'ils ont dans leur travail, et que justement, il y a des tas de bibliothèques spécialisées et adaptées à leurs travaux qui leur tendent les bras et qu'ils ne trouveront pas dans un Basic.

En plus,c'est interprété, et ça, c'est la catastrophe. Donne un beau script à un copain et qui lui rend de grands services. Ton copain a donc ce script chez lui, dans un dossier et bien évidemment un python installé. Comme tu es prudent tu lui a concocté un script shell qui va lancer le script Python, lequel va appeler l'interpréteur... et ça va marcher, jusqu'au moment où ton copain va faire une petite bêtise, diviser par zéro par exemple ou entrer une donnée incorrecte. Bingo, il va se retrouver avec ton script au milieu de l'écran et un beau curseur qui clignote dedans. Il va taper n'importe qoi sur son calvier avant d'avoir compris. Crois-tu qu'il va faire un Ctrt+Z ? Non, il va relancer ton script de démarrage, et vlan, nouvelle erreur. Bref t'as compris, faut lui réinstaller tout le toutim.

Et encore je n'ai rien dit sur l'édition du code essentiellement basé sur des tabulations. Chose que tout le monde reproche à Python.

Lien à poster
Partager sur d’autres sites

Membre, #GauloisRéfractaire, Posté(e)
LulzLamo Membre 4 233 messages
#GauloisRéfractaire,
Posté(e)

@azad2B Oui je reconnais que ton approches est bien plus pédagogique que la mienne qui est au mieux juste pratique.

Python c'est bien, ou pas... Je ne suis pas développeur, même si dans un passé lointain ma première licence fut en dev, mais j'ai passé à l'ennemie les gars de l'infra, enfin finalement cloud et services managés, devops avec de plus en plus un pied dans le SOC, bref tout ça pour dire que c'est pas le domaine ou j'excelle.

Mais aujourd'hui on va être expert dans 1, 2 ou 3 domaine, mais au final (dans l'IT) il faut apprendre à être moyen, même si l'objectif depuis l'école ou plus simplement societal c'est d'être bon partout, maintenant si tu prends en considération l'éclectisme des missions à gérer il faudra exceller dans son métier sans être excellent partout, et pareil avec les outils, il faut que ceci s'adaptent à nos besoins et pas le contraire, et Python le fait plutôt bien, et si il faut un portage différent avec un scope plus étendu, et bien voilà les équipes sont formée d'experts chacun dans leurs domaines, tout l'intérêt du devops ne plus travailler chacun dans notre petite zone de confort mais en communiquant en prenant en considération les spécificités de chacun dans une intégration global et continu, enfin voilà dans les grandes largeurs...

Interprété, semi-interprété, compilé, tabulation, espace... Au final rarement les outils sont mauvais mais bien plus les choix ou pire encore ceux qui les utilisent à mauvaise escient, non ?

J'ai des amis développeurs qui parfois me rendent jaloux, le dev plus qu'une science est un art, enfin en tous cas pratiqué par les bonnes personnes. 

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×