【发布时间】:2021-12-02 20:15:27
【问题描述】:
import re
with open("day2.txt", "r") as file:
line=file.read().split("\n")
forward=0
pos=0
for i in range(0,len(line)-1):
a=line[i]
print(a)
if (re.findall('^f',a)[0]) == 'f':
forward=forward+int(((re.findall('\d',a)[0])))
if (re.findall('^u',a)[0]) == 'u':
pos=pos-int(((re.findall('\d',a)[0])))
if (re.findall('^d',a)[0]) == 'd':
pos=pos+int(((re.findall('\d',a)[0])))
print(forward*pos)
这里 a or line[i] 是一个字符串。 input.txt 文件中的测试用例是这样的,不过几千行
forward 6
up 4
forward 8
down 6
forward 9
理想情况下,输出应该是6+8 的总和
当我将它作为脚本运行时出现错误,我得到 list index out of range,但当我通过 shell 逐行运行时没有错误
确切的错误信息是:
Traceback (most recent call last):
File "day2.py", line 10, in <module>
if (re.findall('^u',a)[0]) == 'u':
IndexError: list index out of range
我哪里错了?
【问题讨论】:
-
input.txt长什么样子? -
这是一个包含几千行文本的文本文件,其模式类似于测试用例下的代码框。即
forward 6\n up 4\n forward 8\n,对提到相同的问题进行了编辑。谢谢 -
好的,您能否在您的问题中添加几行,并确保它们包含导致您的问题的行。
-
现在更新了,我的错
-
问题是你的
re.findall('^f',a)什么也没找到,所以索引0超出了范围。你真的需要在这里使用regex吗?您的文件是否只有forward和up后跟数字?
标签: python regex data-manipulation