Diogo Matias Posted December 4, 2012 at 04:52 PM Report #485704 Posted December 4, 2012 at 04:52 PM boas, numa lista de listas de strings ou seja: [['11.3','12.5','15.6',],['13.2','11.2'],['17.4','13.4','13.2','16.2']] ao tentar definir uma funçao que passasse as strings para float deu-me um erro que diz: "cannot convert strings to float". nao entendo o porquê, se alguem poder ajudar agradecia por favor!
thoga31 Posted December 4, 2012 at 04:54 PM Report #485706 Posted December 4, 2012 at 04:54 PM Se mostrares o código que estás a utilizar seria bom. Isso dito assim pode ser muita coisa... Knowledge is free!
Diogo Matias Posted December 6, 2012 at 06:14 PM Author Report #486042 Posted December 6, 2012 at 06:14 PM (edited) do género: n = 0 i = 0 while n < len(x): while i < len(x[n])-1: if x[n] == '\n': del x[n] else: x[n] = x[n].strip().split() x[n][i] = float(x[n][i]) n = n + 1 print x alem do n = n +1 tambem i = i +1 claro Edited December 6, 2012 at 06:31 PM by apocsantos geshi
Pedro C. Posted December 6, 2012 at 07:00 PM Report #486046 Posted December 6, 2012 at 07:00 PM (edited) Diogo o código que meteste parece estar ainda a criar a lista de floats e não a convertê-la directamente. Há alguns pontos que convém ter em atenção: a) Embora não tenha a certeza se o teste do ciclo é feito apenas uma vez não é boa prática usar um len(x[n]) quando estas a alterar a própria natureza do x[n]. b) A função float consegue lidar com os "\n" pelo que não é necessário apaga-los. c) Tens de reiniciar o teu contador antes de começares um novo ciclo com ele: i = 0 d) Também o split deve começar antes do segundo ciclo se iniciar porque tu queres converter os elementos separados por ele. e) Tens de ter cuidado com o len() pois se o usares numa lista ele dá-te o número de elementos mas se a tua ideia é que ele seja usado na string dentro da lista tens de seleccionar a string primeiro, ex: x[n][0] Ficam as correções: x = [['11.3 12.5 15.6\n'],['13.2 11.2\n'],['17.4 13.4 13.2 16.2\n']] n = 0 i = 0 while n < len(x): x[n] = x[n][0].strip().split() i = 0 while i < len(x[n]): x[n][i] = float(x[n][i]) i = i + 1 n = n + 1 print x NOTA: deixei o strip lá embora não faça ideia de para que serve. Edited December 6, 2012 at 07:09 PM by apocsantos geshi
Diogo Matias Posted December 6, 2012 at 08:07 PM Author Report #486049 Posted December 6, 2012 at 08:07 PM pois eu entedia isso mas nao conseguia solucionar a questao, inclusive ate me aparecia list index out of range, eu entedia porque mas nao conseguia solucionar o problema. Obrigado! Cumprimentos
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now