文本文件说明:
Joe,Bloggs,J.bloggs@anemailaddress.com,01269512355, 1 ,0, 0, 0, 0
Fname, Lname, Email, number, Value i want checking ^ , ...,...,...,...
目标:检查键的值[4]中的数字不是0或7。 如果为0,则变为1;如果为7,则变为6。 如果是0,那么是+1,如果是7,那么是-1。你知道吗
文本文件:
Joe,Bloggs,J.bloggs@anemailaddress.com,01269512355, 1,0, 0, 0, 0
Sarah,Brown,S.brown@anemailaddress.com,01866522555, 5,0, 0, 0, 0
Andrew,Smith,A.smith@anemailaddress.com,01899512785, 7,0, 0, 0, 0
Kevin,White,K.white@anemailaddress.com,01579122345, 0,0, 0, 0, 0
Samantha,Collins,S.collins@anemailaddress.com,04269916257, 0,0, 0, 0, 0
代码运行后,应该如下所示:
Joe,Bloggs,J.bloggs@anemailaddress.com,01269512355, 1,0, 0, 0, 0
Sarah,Brown,S.brown@anemailaddress.com,01866522555, 5,0, 0, 0, 0
Andrew,Smith,A.smith@anemailaddress.com,01899512785, 6,0, 0, 0, 0
Kevin,White,K.white@anemailaddress.com,01579122345, 1,0, 0, 0, 0
Samantha,Collins,S.collins@anemailaddress.com,04269916257, 1,0, 0, 0, 0
到目前为止,我的代码产生了一个错误:
fileinfo[j] = i[0] + ',' + i[1] + ',' + i[2] + ',' + i[3] + ',' + str(value) + ',' + i[5] + ',' + i[6] + ',' + i[7]+ ',' + i[8] + '\n'
IndexError: list assignment index out of range
代码:
f = open ("players.txt","r")
fileinfo = f.readlines()
f.close()
j = 0
for i in fileinfo:
i = i.strip()
i = i.split(",")
value = int(i[4])
if value == "0":
value = value + 1
fileinfo[j] = i[0] + ',' + i[1] + ',' + i[2] + ',' + i[3] + ',' + str(value) + ',' + i[5] + ',' + i[6] + ',' + i[7]+ ',' + i[8] + '\n'
j = j + 1
if value == "7":
value = value - 1
fileinfo[j] = i[0] + ',' + i[1] + ',' + i[2] + ',' + i[3] + ',' + str(value) + ',' + i[5] + ',' + i[6] + ',' + i[7]+ ',' + i[8] + '\n'
j = j + 1
f = open ("players.txt","w")
for i in fileinfo:
f.write(i)
f.close()
这可能是一个非常复杂的方式做我想做的事。你能帮我实现目标吗。请随意重写我的全部代码,但您能详细解释一下您所做的工作吗。我对编码很陌生。你知道吗
面向未来读者
有两个答案是有效的。我只能勾选其中一个。希望这个问题能像我一样帮助未来的读者。你知道吗
下面是您的代码的简化版本(完全未经测试)。你知道吗
代码的问题如下:
在将数字转换为int之前,应删除数字周围的空白:
value = int(i[4])
如果数字周围有空格,则会崩溃。使用value = int(i[4].strip())
修复此问题。将值转换为整数,然后将该整数与字符串进行比较。这将始终计算为
False
。你知道吗value = int(i[4]) if value == "0":
每个循环增加} 而不是手动维护
j
两次,这就是为什么代码会与索引器崩溃的原因。我建议使用^{j
。固定代码可以如下所示:
在循环中每次递增
j
两次,此时它应该跟踪每一行的位置,因此它变得太大并导致错误。你知道吗相关问题 更多 >
编程相关推荐