Найти - Пользователи
Полная версия: ошибка при конвертации типа данных float
Начало » Python для новичков » ошибка при конвертации типа данных float
1 2
wavedocs
Только начал изучать питон, по книге Бизли Д. - Подробный справочник(4 изд.)
В книге рассматривается пример:
import sys
if len(sys.argv) != 2:
    print("File")
    raise SystemExit(1)
f = open(sys.argv[1])
lines = f.readline()
f.close()
fvalues = [line for line in lines]
print(min(fvalues))
print(max(fvalues))

запускаю
wavedocs@vm010-001-042-003:~/python$ python3 list.py log
Print file:log
Traceback (most recent call last):
  File "list.py", line 11, in <module>
    fvalues = [float(line) for line in lines]
  File "list.py", line 11, in <listcomp>
    fvalues = [float(line) for line in lines]
ValueError: could not convert string to float: 

файл log:
19.34342
1.34327
0.657
479.325654
FishHook
это ошибка.
на какой странице в книге это написано?
ну или скан дай.
wavedocs
FishHook
это ошибка.на какой странице в книге это написано?ну или скан дай.

http://imageshack.us/photo/my-images/843/kmnm.png/

Страница 33, книга у меня в эл. виде
4kpt
Скинь файл, из которго читаешь цифры…

P.S. Прошлая аватарка была лучше :)
wavedocs
4kpt
Скинь файл, из которго читаешь…

wavedocs@vm010-001-042-003:~/python$ cat log 
19.34342
1.34327
0.657
479.325654
4kpt
Капец. Файлом. Есть разные кодировки. Может быть вставлено начало и конец файла, который считывается…
wavedocs
Архивчик
wavedocs
4kpt
Капец. Файлом. Есть разные кодировки. Может быть вставлено начало и конец файла, который считывается…
Сории, всех тонкостей не знаю)
FishHook

wavedocs
http://imageshack.us/photo/my-images/843/kmnm.png/
Еще раз внимательно посмотри в скрин и найди одно отличие от твоего кода.
Я пока приберегу сентенцию о книгах и фигах.
4kpt
Во-первых: Меод readline() считывает одну строку. Вам нужен метод readlines()
Во-вторых: В этой строке есть символ окончания строки “\n”. В какое число прикажете его переводить?
В-третьих: Вам нужно предварительно удалить все пробельные символы (можно перестраховаться) вначале и в конце строки (Ваше “\n”). Для этого служит метод .strip(). В вашем случае это будет выглядеть так:
import sys
if len(sys.argv) != 2:
    print("File")
    raise SystemExit(1)
file_ = open(sys.argv[1])
lines = file_.readlines()
file_.close()
fvalues = [float(line.strip()) for line in lines]
print(min(fvalues))
P.S. Бизли - не самый лучший вариант для начинающего :)
P.S.S. Кроме того, он по 2.Х, а Вы работаете в 3.Х.
P.S.S.S. Впредь, будьте внимательны, чтобы не третировать учасников :)
P.S.S.S.S. Хотите - можете кинуть на мыло свой скайп, я Вам подброшу литературки…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB