Lire en entier sur l'entrée standard en Python
J'ai le morceau de code suivant où je prends un entier n à partir de stdin, de les convertir en binaire, l'inverse de la chaîne binaire, puis de les convertir en arrière en entier et de sortie.
import sys
def reversebinary():
n = str(raw_input())
bin_n = bin(n)[2:]
revbin = "".join(list(reversed(bin_n)))
return int(str(revbin),2)
reversebinary()
Cependant, j'obtiens cette erreur:
Traceback (most recent call last):
File "reversebinary.py", line 18, in <module>
reversebinary()
File "reversebinary.py", line 14, in reversebinary
bin_n = bin(n)[2:]
TypeError: 'str' object cannot be interpreted as an index
Je ne suis pas sûr que le problème est.
OriginalL'auteur Phil Kurtis | 2013-05-31
Vous devez vous connecter pour publier un commentaire.
Vous êtes de passage d'une chaîne à la
bin()
fonction:Lui donner un entier à la place:
en tournant le
raw_input()
résultat àint()
:Astuce: vous pouvez facilement inverser une chaîne de caractères en lui donnant un négatif tranche de foulée:
sorte que vous pouvez simplifier votre fonction:
ou encore:
OriginalL'auteur Martijn Pieters
Vous voulez convertir en entrée un entier qui n'est pas une chaîne, c'est déjà une chaîne de caractères. Donc cette ligne:
devrait être quelque chose comme ceci:
OriginalL'auteur James Holderness
Elle est entrée brute, c'est à dire une chaîne de caractères, mais vous avez besoin d'une int:
OriginalL'auteur Mike Müller
bin
prend l'entier en paramètre et vous mettez la chaîne de là, vous devez les convertir en entier:OriginalL'auteur Tomáš Diviš