integer = input("Number: ")
rslt = int(integer)+2
print('2 + ' + integer + ' = ' + rslt)
double = input("Point Number: ")
print('2.5 + ' +double+' = ' +(float(double)+2.5))
Donne moi
Traceback (most recent call last):
File "C:\...", line 13, in <module>
print('2 + ' + integer + ' = ' + rslt)
TypeError: Can't convert 'int' object to str implicitly
Je suis assez nouveau dans le domaine de la programmation et je ne connais pour l’instant que les bases de C #. Je voulais essayer d'apprendre Python en réalisant tous mes projets d'école C # sur Python. Je suis habitué à la syntaxe simple de C # qui ressemblerait à ceci:
int integer = Convert.ToInt32(Console.ReadLine())
ou
double double = Convert.ToDouble(Console.ReadLine())
Ce qui prend une chaîne d'entrée utilisateur et la convertit en ce que j'ai spécifié.
Je pense avoir lu que py2.x a une commande appelée raw_input qui fonctionne un peu mieux que la commande d'entrée de py3.x à cet égard.
J'essayais de me trouver un format similaire à celui auquel je suis habitué en C # à utiliser en Python, mais il s'avère étonnamment difficile de trouver une méthode pour convertir la chaîne de saisie de l'utilisateur en entier après avoir googlé et tout essayé. Je pouvais penser à (et que j'ai trouvé sur Google) j'ai décidé qu'il était temps de demander. Pouvez vous aider?
Vous devez convertir l'entier en chaîne:
print('2 + ' + str(integer) + ' = ' + str(rslt))
Ou passez-le comme argument à print
et print le fera pour vous:
print('2 +', integer, '=', rslt)
Je le ferais en utilisant le formatage de chaîne:
print('2 + {} = {}'.format(integer, rslt))
Votre problème ne concerne pas la conversion de l'entrée en un entier. Le problème est que lorsque vous écrivez ' = ' + rslt
, vous essayez d'ajouter un entier à une chaîne et vous ne pouvez pas le faire.
Vous avez quelques options. Vous pouvez reconvertir integer
et rslt
en chaînes pour les ajouter au reste de votre chaîne:
print('2 + ' + str(integer) + ' = ' + str(rslt))
Ou vous pouvez simplement imprimer plusieurs choses:
print('2 + ', integer, ' = ', rslt)
Ou utilisez le formatage de chaîne:
print('2 + {0} = {1}'.format(integer, rslt))
En Python 3.x - input
est l'équivalent du raw_input
... de Python 2.x.
Vous devriez utiliser un formatage de chaîne pour cela - et effectuer une vérification des erreurs:
try:
integer = int(input('something: '))
print('2 + {} = {}'.format(integer, integer + 2))
except ValueError as e:
print("ooops - you didn't enter something I could make an int of...")
Une autre option - qui semble un peu compliquée est de permettre à l'interprète de deviner sa valeur, puis de relever un élément qui n'est pas int
ou float
:
from ast import literal_eval
try:
value = literal_eval(input('test: '))
if not isinstance(value, (int, float)):
raise ValueError
print value + 2
except ValueError as e:
print('oooops - not int or float')
Cela donne un peu plus de flexibilité si vous voulez par exemple des nombres complexes, des listes ou des n-uplets ...
Si vous souhaitez convertir une valeur en entier, utilisez la fonction intégrée int
, et pour convertir une valeur en nombre à virgule flottante, utilisez la fonction intégrée float
. Vous pouvez ensuite utiliser la fonction intégrée str
pour reconvertir ces valeurs en chaînes. La fonction intégrée input
renvoie des chaînes, vous utiliserez donc ces fonctions dans le code comme ceci:
integer = input("Number: ")
rslt = int(integer)+2
print('2 + ' + integer + ' = ' + str(rslt))
double = input("Point Number: ")
print('2.5 + ' +str(double)+' = ' +str(float(double)+2.5)
integer = int(input("Number: "))
print('2 + %d = %d' % (integer, integer + 2))
double = float(input("Point Number: "))
print('2.5 + %.2f = %.2f' % (double, double + 2.5))