刚刚开始学习Python,对循环和列表不是很懂,自己练习从excel文件(获取的代码是从网上复制的),想把获取的列表内的数据用while循环打印出来。结果报错了,麻烦大家帮我看看怎么修改谢谢啦
import xlrd
from xlrd import xldate_as_tuple
import datetime
data1 = xlrd.open_workbook(r'D:\test.xlsx')
table = data1.sheets()[0]
tables = []
def import_excel(excel):
for test in range(excel.nrows):
array = [table.cell_value(test, 0), table.cell_value(test, 1),
table.cell_value(test, 2), table.cell_value(test, 3),
table.cell_value(test, 4)]
tables.append(array)
if name == '__main__':
import_excel(table)
for i in tables:
# pass
print(i)
num1 = tables[0]
num2 = tables[1]
num3 = tables[2]
num4 = tables[3]
num5 = tables[4]
nu1 = 1
while nu1 < num2:
print("%d\t%d\t%d\t%d\t%d" % (nu1, num2, num3, num4, num5))
nu1 = nu1 + 1
输出结果:
D:PythontestvenvScriptspython.exe D:/Python/test/test_excel.py
[2.0, 4.0, 6.0, 8.0, 10.0]
[1.0, 3.0, 5.0, 7.0, 9.0]
....
[3.0, 5.0, 7.0, 8.0, 10.0]
Traceback (most recent call last):
File "D:/Python/test/test_excel.py", line 33, in <module>
while nu1 < num2:
TypeError: '<' not supported between instances of 'int' and 'list'
这个报错的意思是 两个变量数据类型不同,一个 nu1 是 int 整型,一个 num2 是 list 列表类型 ,数据类型不同所以不能直接比较
第一次循环判断的时候 ,你是 用 nu1 < num2 比较
而 nu1 此时等于 1
num2 此时是个列表 [1.0, 3.0, 5.0, 7.0, 9.0]
你可以把 while nu1 < num2:
改为 while nu1 < len(num2):
这样应该就可以了。
顺便说一句,我也是菜鸟,