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

David Pintassilgo

Trasformar x,y em x.y

15 mensagens neste tópico

Boas.

O titulo diz tudo, como faço para 'converter' uma string por exemplo "3,44" num numero "3.44" para poder fazer contas com o 'animal' ?

Eu julgo que me basta mudar a , para . certo? Mas como fazer isso de uma assentada?

(aquilo está tudo num array é só fazer um ciclo e converter o conteudo, nao sei é como converter)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

string="3,44"

x=0
for i in string:
if i==',': newstring=string[0:x]+'.'+string[x+1:]
x+=1

print newstring

Deve haver 1 metodo para descobrir qual a posição de certo char numa string. E assim já não precisas do x.

Anyway, fica aí.

Cumps

P.S.: Daqui a nada aparece o rolando2424 ou djthyrax com 1 solução melhor! ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu estava á espera de um só comando que fizesse isso...

Em falta de melhor serve mais que bem :D vou aguardar um pouco para ver se há alguma solução mais correcta.

Obrigado desde já. :D  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou seja,... posso fazer

for x in range(0, 79):
    novovalor[x] = valores[x].replace("," ".")

certo?

(acho que estou a meter a 'patola' algures, não?)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Presumo que queiras,

valores[x].replace(",", ".")

Exacto! Estava agorinha mesmo a editar. ;)

edit:

Mas isto do replace não está a rullar....

  File "enviar_beta.py", line 20, in <module>

    novovalor[x] = valores[x].replace("," ".")

TypeError: replace() takes at least 2 arguments (1 given)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

falta-te a virgula a separar os argumentos...

Pois falta.

Mas dá-me erro

NameError: name 'novovalor' is not defined

Eu se meter antes qq coisa como:

]
novovalor = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
#mas com 80 zeros

Fica a funcionar, mas não me parece muito correcto..:S

Como é que preparo um array para receber dados 'como deve de ser' ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Queres criar uma lista logo com 80 zeros?

novoValor = [0 for i in range(80)]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

;) É isso mesmo.

Já está resolvido.. (axo eu! LOL )

Obrigadão! :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu bem me parecia que estava a correr bem de mais...... :D:);) :wallbash:

Há um problema:

Como há valores que inicialmente são por exemplo:

1.234,345  (separador dos milhoes)

No fim passo a virgula a . mas o ponto do separador fica a estrovar

Estava a pensar, antes de mudar todas as virgulas para pontos passo todos os pontos para nada assim:

for x in range(0, 79):
    nvalores[x] = valores[x].replace("." , "")
for x in range(0, 79):
    valores[x] = nvalores[x].replace("," , ".")

Estou a pensar bem, ou estou prestes a escavacar isto tudo?  :D

isto aparentemente funciona... era suposto, não era?  :-[ :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, isso deve funcionar. Mas podes fazer isso directamente, não precisas de 2 ciclos.

for x in range(0, 79):
   valores[x] = valores[x].replace(".", "").replace(",", ".")

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

valores = ["1.122.123.123,434534", "1.111", "0,9"]
for x in range(0, len(valores)-1):
    valores[x] = valores[x].replace(".", "").replace(",", ".")

Suponho que seja isto que queres não é? Se fores fazer contas a seguir, podias converter logo o valor para int/float, mas não sei até que ponto isso seria bom, uma vez que float("1.1") dá 1.100000000000001...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mah! Estou mesmo mal! Nem me consigo lembrar da porra dum replace! É pá, tenho de voltar a ler sobre isso! :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora