Уведомления

Группа в Telegram: @pythonsu

#1 Июль 29, 2013 11:53:09

wavedocs
Зарегистрирован: 2013-07-29
Сообщения: 9
Репутация: +  1  -
Профиль   Отправить e-mail  

ошибка при конвертации типа данных float

Только начал изучать питон, по книге Бизли Д. - Подробный справочник(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

Офлайн

#2 Июль 29, 2013 12:15:31

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

ошибка при конвертации типа данных float

это ошибка.
на какой странице в книге это написано?
ну или скан дай.



Офлайн

#3 Июль 29, 2013 12:21:20

wavedocs
Зарегистрирован: 2013-07-29
Сообщения: 9
Репутация: +  1  -
Профиль   Отправить e-mail  

ошибка при конвертации типа данных float

FishHook
это ошибка.на какой странице в книге это написано?ну или скан дай.

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

Страница 33, книга у меня в эл. виде

Офлайн

#4 Июль 29, 2013 12:23:00

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

ошибка при конвертации типа данных float

Скинь файл, из которго читаешь цифры…

P.S. Прошлая аватарка была лучше :)



Отредактировано 4kpt (Июль 29, 2013 12:24:51)

Офлайн

#5 Июль 29, 2013 12:26:49

wavedocs
Зарегистрирован: 2013-07-29
Сообщения: 9
Репутация: +  1  -
Профиль   Отправить e-mail  

ошибка при конвертации типа данных float

4kpt
Скинь файл, из которго читаешь…

wavedocs@vm010-001-042-003:~/python$ cat log 
19.34342
1.34327
0.657
479.325654

Отредактировано wavedocs (Июль 29, 2013 12:29:01)

Офлайн

#6 Июль 29, 2013 12:30:29

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

ошибка при конвертации типа данных float

Капец. Файлом. Есть разные кодировки. Может быть вставлено начало и конец файла, который считывается…



Офлайн

#7 Июль 29, 2013 12:30:39

wavedocs
Зарегистрирован: 2013-07-29
Сообщения: 9
Репутация: +  1  -
Профиль   Отправить e-mail  

ошибка при конвертации типа данных float

Архивчик

Прикреплённый файлы:
attachment lesson.tar (10,0 KБ)

Офлайн

#8 Июль 29, 2013 12:32:20

wavedocs
Зарегистрирован: 2013-07-29
Сообщения: 9
Репутация: +  1  -
Профиль   Отправить e-mail  

ошибка при конвертации типа данных float

4kpt
Капец. Файлом. Есть разные кодировки. Может быть вставлено начало и конец файла, который считывается…
Сории, всех тонкостей не знаю)

Офлайн

#9 Июль 29, 2013 12:36:13

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

ошибка при конвертации типа данных float


wavedocs
http://imageshack.us/photo/my-images/843/kmnm.png/
Еще раз внимательно посмотри в скрин и найди одно отличие от твоего кода.
Я пока приберегу сентенцию о книгах и фигах.



Офлайн

#10 Июль 29, 2013 12:38:52

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

ошибка при конвертации типа данных float

Во-первых: Меод 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. Хотите - можете кинуть на мыло свой скайп, я Вам подброшу литературки…



Отредактировано 4kpt (Июль 29, 2013 12:46:08)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version