Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Nandinho

Erro na saída de uma conversão de str p/ int

Recommended Posts

Nandinho

Boa noite!

 

Sou um iniciante no python e na programação, fiz um pequeno programa, na qual estou a ter um erro:

x = input('How many dollars do you want to buy? ')
x = int(x)
y = input('Exchange rate (Meticais per dollar) :')
y = float(y)
payment = x * y
print("You have to pay " + payment, "Meticais")

Mas aparece um erro na consola do pycharm:

How many dollars do you want to buy? 100
Exchange rate (Meticais per dollar) :61.5
Traceback (most recent call last):
  File "C:/Users/Retagi/PycharmProjects/ITS100/hello.py", line 6, in <module>
    print("You have to pay " + payment, "Meticais")
TypeError: must be str, not float

Peço uma ajuda

Share this post


Link to post
Share on other sites
thoga31
2 horas atrás, Nandinho disse:

TypeError: must be str, not float

O Python está-te a dizer tudo - tentaste usar um float quando só é permitido ou esperado strings.

payment é do tipo float, não o podes "somar" a uma string. A forma correcta de colocar o valor na string é usando o método format:

print("You have to pay {0} Meticais".format(payment))

Cumprimentos.


Knowledge is free!

Share this post


Link to post
Share on other sites
Nandinho

Bom dia!

 

Mas eu utilizei a linha:

x = int(x)

antes da operação matematica (calculo do payment).

Mas retirando o meu codigo e inserindo a sua sugestão, deu algo estranho:

x = input('How many dollars you want to buy ?')
x = int(x)
y = input('Exchange rate (Meticais per dollar) :')

payment = x * y
#print("You have to pay " + payment, "Meticais")
print("You have to pay {0} Meticais".format(payment))

e na consola apareceu:

C:\Users\Retagi\AppData\Local\Programs\Python\Python36-32\python.exe C:/Users/Retagi/PycharmProjects/ITS100/entradas.py
How many dollars you want to buy ? 100
Exchange rate (Meticais per dollar) :61.6
You have to pay 61.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.661.6 Meticais

Process finished with exit code 0

 

Porque razão?

 

Cumprimentos

Share this post


Link to post
Share on other sites
M6

O teu valor y está a ser interpretado como uma string. E o payment não é mais do que essa string repetida x vezes.

Experimenta:

x = input('How many dollars you want to buy ?')
x = int(x)

y = input('Exchange rate (Meticais per dollar) :')
y = float(y) # Conversão numérica aqui

payment = x * y
print("You have to pay {0} Meticais".format(payment))

 


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.