首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果通过迭代执行语句,则错误:“float”对象不能解释为整数。

如果通过迭代执行语句,则错误:“float”对象不能解释为整数。
EN

Stack Overflow用户
提问于 2017-11-18 19:42:46
回答 2查看 54关注 0票数 1

你好,我正在尝试使用函数,如果通过一个excel单元的迭代。但是,我得到的错误‘w_s’对象不能解释为整数。我试图在“w_s”中搜索所有在10-11范围内的值。有人能建议我修改代码吗?

代码语言:javascript
复制
import openpyxl
import numpy

import os
os.system('cd c:\Code')

wb = openpyxl.load_workbook('SPLtest.xlsx')
turbine_data = wb.get_sheet_by_name('Turbinedata')
windspeed = wb.get_sheet_by_name('SPLvalues')


for row in range(2, windspeed.max_row+1):
    w_s = windspeed['A' + str(row)].value
for value in range(w_s):
    if value in numpy.arange(10.00,11.00,0.01) :
        print('107')
    else:
        print('no')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-18 19:49:09

问题是,当您从excel工作表中提取数据时,它们就会成为浮动数据。range函数只接受ints,因为有非整数指数是没有意义的.就像这样说吧

代码语言:javascript
复制
for value in range(int(w_s)):
票数 0
EN

Stack Overflow用户

发布于 2017-11-18 19:55:32

您的脚本有很多问题,但是您想要的一个更改是np.linspace而不是np.arange,假设您想迭代一些类似于[10.00, 10.01, 10.02, ..., 10.98, 10.99, 11.00]的内容。

所以你想做的是:

代码语言:javascript
复制
if value in numpy.linspace(start=10,stop=11,num=101) :
    print('107')
else:
    print('no')

np.linspace将在startstop (包括在内)之间给出num线性行距值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47370267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档