Python 通过迭代执行If语句,错误:';浮动';对象不能解释为整数

Python 通过迭代执行If语句,错误:';浮动';对象不能解释为整数,python,python-3.x,openpyxl,Python,Python 3.x,Openpyxl,您好,我正在尝试通过excel单元格的迭代来使用该函数。但是我得到的错误是“float”(w_s)对象不能解释为整数。我试图通过“w_s”中的值搜索10-11范围内的所有值。有人能建议我修改代码吗 import openpyxl import numpy import os os.system('cd c:\Code') wb = openpyxl.load_workbook('SPLtest.xlsx') turbine_data = wb.get_sheet_by_name('Turbi

您好,我正在尝试通过excel单元格的迭代来使用该函数。但是我得到的错误是“float”(w_s)对象不能解释为整数。我试图通过“w_s”中的值搜索10-11范围内的所有值。有人能建议我修改代码吗

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')

问题是,当您从excel工作表中提取数据时,它们会变成浮动。range函数只接受整数,因为非整数索引没有意义。说点什么

for value in range(int(w_s)):

问题是,当您从excel工作表中提取数据时,它们会变成浮动。range函数只接受整数,因为非整数索引没有意义。说点什么

for value in range(int(w_s)):

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

所以你想做:

if value in numpy.linspace(start=10,stop=11,num=101) :
    print('107')
else:
    print('no')

np.linspace
将为您提供
num
介于
start
stop
(包括)之间的线性间隔值。

您的脚本有很多问题,但您需要的一个更改是
np.linspace
而不是
np.arange
,假设您希望迭代类似
[10.00、10.01、10.02、…、10.98、10.99、11.00]

所以你想做:

if value in numpy.linspace(start=10,stop=11,num=101) :
    print('107')
else:
    print('no')

np.linspace
将为您提供
num
start
stop
之间的线性间隔值(包括)。

range(w_s)
range(int(w_s))
这将修复错误,但我认为这不是您想要实现的目标。system('cd c:\code'))没有任何问题,但是没有你的数据,就无法真正解决你的问题。
range(w_'s)
=>
range(int(w_'s))
这将修复错误,但我认为这不是你想要实现的。因此,操作系统('cd c:\code')没有任何问题,但是没有你的数据,就无法真正解决你的问题。