Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 26, 2016 04:55:50

angeline
Зарегистрирован: 2016-11-11
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Возведение в степень, имеющую вид десятичной дроби

Использую модуль xlrd для считывания:

 veter = float(wind.row_values(d+2)[1])
 print veter
Получаю ошибку:
ValueError: could not convert string to float:
0.0
1.0
2.0
3.0
4.4
6.3
8.5
12.0


В чем я не права?
Считывает и выводит на экран все верно, но почему числовые данные воспринимаются не в числовом формате?


Из любопытства добавила строку:
 print type(veter)
Получаю прежнюю ошибку и будто бы нет никаких проблем:
<type ‘float’>
<type ‘float’>
<type ‘float’>
<type ‘float’>
<type ‘float’>
<type ‘float’>
<type ‘float’>
<type ‘float’>

Как так может быть?

Отредактировано angeline (Дек. 26, 2016 05:58:43)

Офлайн

#2 Дек. 26, 2016 05:14:56

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

Возведение в степень, имеющую вид десятичной дроби

А вы не кастуйте к флоату, посмотрите для начала что такое

 print wind.row_values(d+2)[1], type(wind.row_values(d+2)[1])



Офлайн

#3 Дек. 26, 2016 05:39:18

angeline
Зарегистрирован: 2016-11-11
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Возведение в степень, имеющую вид десятичной дроби

FishHook
А вы не кастуйте к флоату, посмотрите для начала что такое

На самом деле оно дает абсолютно тот же результат и тип float…
Только это все равно не решает мою изначальную проблему.

У меня есть функция, которая выполняется с ошибкой:
 def modul_skor():
    h = 150
    vys_flyugera = 10
    u_j = veter * ((h / vys_flyugera) ** e_j)
    return u_j
e_j тоже считывается из файла, и его я тоже перед отправкой данного сообщения ещё раз проверила, тип float
File “Dpyto_p/rassey_modul_prizem_sk.py”, line 13, in modul_skor
u_j = veter * ((h / vys_flyugera) ** e_j)
TypeError: can't multiply sequence by non-int of type ‘float’

Update. Ладно, я туплю, если правильно понимаю, то надо e_j перевести в тип int, но это будет некорректным, т.к. e_j является десятичной дробью (к примеру, 0,06), хотя ошибка пропадает.
Неужели совсем нет способа возвести в степень, имеющую вид десятичной дроби?

Отредактировано angeline (Дек. 26, 2016 05:59:34)

Офлайн

#4 Дек. 26, 2016 06:24:39

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

Возведение в степень, имеющую вид десятичной дроби

Нет никаких проблем с дробной степенью



Офлайн

#5 Дек. 26, 2016 06:27:39

angeline
Зарегистрирован: 2016-11-11
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Возведение в степень, имеющую вид десятичной дроби

FishHook
Нет никаких проблем с дробной степенью
Почему тогда я в ответ получаю вышеописанную ошибку?…
Хмм.. может ли это быть из-за используемой версии python 2.7?

Отредактировано angeline (Дек. 26, 2016 06:29:15)

Офлайн

#6 Дек. 26, 2016 06:31:42

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

Возведение в степень, имеющую вид десятичной дроби

angeline
Почему тогда я в ответ получаю вышеописанную ошибку?…
Да откуда ж я знаю? Вы ничего не дали для фиксации проблемы. У вас в стартовом посте одно, потом оказывается, что на самом деле другое. Дайте минимальный тестовый пример возникновения ошибки. Дайте код, который я могу вставить в ИДЕ, запустить и увидеть эксепшен. Мне нужно его проанализировать дебаггером и понять. А так, заказывайте гадалку с хрустальным шаром.



Офлайн

#7 Дек. 26, 2016 06:50:21

angeline
Зарегистрирован: 2016-11-11
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Возведение в степень, имеющую вид десятичной дроби

FishHook
Да откуда ж я знаю?
может ли это быть из-за используемой версии python 2.7?


Вот корявенькая заготовка:
 def modul_skor():
    h = 150
    vys_flyugera = 10
    u_j = sr_god_veter * (pow((h / vys_flyugera), (e_j ))
    return u_j
python/rassey/results_modul.xls')

update. Нет, от версии питона эта беда не зависит =/

Отредактировано angeline (Дек. 26, 2016 08:45:25)

Офлайн

#8 Дек. 26, 2016 07:08:14

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

Возведение в степень, имеющую вид десятичной дроби

angeline
Вы издеваетесь что ли?
В вашем примере вообще нет операции **



Офлайн

#9 Дек. 26, 2016 07:11:27

angeline
Зарегистрирован: 2016-11-11
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Возведение в степень, имеющую вид десятичной дроби

FishHook
В вашем примере вообще нет операции **
То есть Вы хотите сказать, что функция pow() и ** - не являются тождественными функциями возведения в степень?

Что ж, извольте. Результат не изменится:
 def modul_skor():
    h = 150
    vys_flyugera = 10
    u_j = sr_god_veter * ((h / vys_flyugera) ** e_j )
    return u_j

Отредактировано angeline (Дек. 26, 2016 08:46:05)

Офлайн

#10 Дек. 26, 2016 08:15:28

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

Возведение в степень, имеющую вид десятичной дроби

Замечательно, а теперь дайте то, что я просил.
Мне не интересно, какие конкретно эксель-книги вы открываете. У вас же ошибка не в экселе, у вас ошибка в функции modul_skor. В этой функции не хватает двух переменных, чтобы эту функцию можно было запустить безо всего остального шлака, который к проблеме не относится и в данной теме он вообще не нужен. Покажите мне функцию, которой не нужны модули для работы с экселем, файлы и все остальное прочее. Вам нужно дать минимальный код, который воспроизводит ошибку.

я вас прошу вот об этом

 def modul_skor():
    h = 150
    vys_flyugera = 10
    e_j = 2.45
    sr_god_veter = 25
    u_j = sr_god_veter * ((h / vys_flyugera) ** e_j )
    return u_j
print(modul_skor())
Работает? Тогда смотрите, что именно у вас в каждой переменной используемой в этой функции. Хотя бы принтом. Возникает ошибка - показывайте.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version