Python 循环不工作 (xlwt)
Python cycle is not working (xlwt)
我在 Python 中有这段代码,应该可以工作。
python
import xlwt
#== change variables according to requirements ==#
numoftopcol = 5
numoftestcases = 4
coltext = ['Test Case', 'Test Name', 'Duration', 'Factual Result', 'Result (Pass/Fail)']
testN = ['void','Get Counter Result', 'Read Stats', 'Client Initialization', 'Start Server']
#== change variables according to requirements ==#
styleH = xlwt.easyxf('font: name Arial, bold on, color-index blue;')
styleH.font.height = 400
stylee = xlwt.easyxf('font: name Arial')
wb = xlwt.Workbook()
ws = wb.add_sheet('Test Case Overview')
c = 0
numoftopcol += 1
for c in range(c,numoftopcol):
ws.write(0, c, coltext[c], styleH),
ws.col(c).width = 7000
import random
c = 1
numoftestcases += 1
for c in range(c,numoftestcases):
strC = str(c),
ws.write(c,0,'TC-'+strC,stylee),
ws.write(c,1,testN[c],stylee),
ws.write(c,2,'DUR',stylee),
ws.write(c,3,'RandomStr',stylee),
randomint = random.randint(0,1),
if randomint == 0:
ws.write(c,4,'PASS',stylee)
else:
ws.write(c,4,'FAIL',stylee)
现在,第一个周期运行良好(带有 styleH 的周期)。第二个不起作用(stylee)。调试我发现,c=1 和 numoftestcases=5。所以如果 c < numoftestcases 或 1<5,那么循环应该有效,对吗?
显然不是。我在 cmd 中得到以下错误输出(第二个周期)。
forTraceback (most recent call last):
File "", line 2, in
IndexError: list index out of range
Traceback (most recent call last):
File "", line 3, in
TypeError: cannot concatenate 'str' and 'tuple' objects
这有什么问题?
我记得早些时候这个工作。我没有更改循环代码,但现在它不起作用。
我也试过在第二个循环的第一行打印一个 print(c) 并且输出只有 1。后面没有更多的数字。
检查xls文件,电子表格中只写了第一个周期。
我将此代码存储在一个文本文件中,这样我就可以在需要时在 cmd 中调用此命令。
首先:索引超出范围:您将 numoftopcol
定义为列表的 len
5,但就在循环之前您递增它...现在访问该索引会产生超出范围...
错误的根本原因是 excel 坐标从 1 开始,但 python 列表是从 0 开始索引的。我会做从 0
到 n
的循环,并且只为 xlwt
调用添加 1,而不是做你正在做的所有 +1
事情。
第二:连接错误:你没有 post 任何堆栈跟踪,但
strC = str(c),
创建一个 tuple
。下一行:
ws.write(c,0,'TC-'+strC,stylee),
尝试将 str
添加到 tuple
。
我发现了问题所在。我必须将 c
和 numoftestcases
的数据类型转换为 int.
int(c)
int(numoftestcases)
案件破案。现在可以使用了。
我在 Python 中有这段代码,应该可以工作。
python
import xlwt
#== change variables according to requirements ==#
numoftopcol = 5
numoftestcases = 4
coltext = ['Test Case', 'Test Name', 'Duration', 'Factual Result', 'Result (Pass/Fail)']
testN = ['void','Get Counter Result', 'Read Stats', 'Client Initialization', 'Start Server']
#== change variables according to requirements ==#
styleH = xlwt.easyxf('font: name Arial, bold on, color-index blue;')
styleH.font.height = 400
stylee = xlwt.easyxf('font: name Arial')
wb = xlwt.Workbook()
ws = wb.add_sheet('Test Case Overview')
c = 0
numoftopcol += 1
for c in range(c,numoftopcol):
ws.write(0, c, coltext[c], styleH),
ws.col(c).width = 7000
import random
c = 1
numoftestcases += 1
for c in range(c,numoftestcases):
strC = str(c),
ws.write(c,0,'TC-'+strC,stylee),
ws.write(c,1,testN[c],stylee),
ws.write(c,2,'DUR',stylee),
ws.write(c,3,'RandomStr',stylee),
randomint = random.randint(0,1),
if randomint == 0:
ws.write(c,4,'PASS',stylee)
else:
ws.write(c,4,'FAIL',stylee)
现在,第一个周期运行良好(带有 styleH 的周期)。第二个不起作用(stylee)。调试我发现,c=1 和 numoftestcases=5。所以如果 c < numoftestcases 或 1<5,那么循环应该有效,对吗?
显然不是。我在 cmd 中得到以下错误输出(第二个周期)。
forTraceback (most recent call last): File "", line 2, in IndexError: list index out of range
Traceback (most recent call last): File "", line 3, in TypeError: cannot concatenate 'str' and 'tuple' objects
这有什么问题? 我记得早些时候这个工作。我没有更改循环代码,但现在它不起作用。
我也试过在第二个循环的第一行打印一个 print(c) 并且输出只有 1。后面没有更多的数字。
检查xls文件,电子表格中只写了第一个周期。
我将此代码存储在一个文本文件中,这样我就可以在需要时在 cmd 中调用此命令。
首先:索引超出范围:您将 numoftopcol
定义为列表的 len
5,但就在循环之前您递增它...现在访问该索引会产生超出范围...
错误的根本原因是 excel 坐标从 1 开始,但 python 列表是从 0 开始索引的。我会做从 0
到 n
的循环,并且只为 xlwt
调用添加 1,而不是做你正在做的所有 +1
事情。
第二:连接错误:你没有 post 任何堆栈跟踪,但
strC = str(c),
创建一个 tuple
。下一行:
ws.write(c,0,'TC-'+strC,stylee),
尝试将 str
添加到 tuple
。
我发现了问题所在。我必须将 c
和 numoftestcases
的数据类型转换为 int.
int(c)
int(numoftestcases)
案件破案。现在可以使用了。