首先,该课程实例11的内容为自动绘制轨迹
课程所给定的代码如下
#AutoTraceDraw.py
import turtle as t
t.title('自动轨迹绘制')
t.setup(800,600,0,0)
t.pencolor("red")
t.pensize(5)
#数据读取
datals=[]
f=open("data.txt")
for line in f:
line=line.replace("\n","")
datals.append(list(map(eval, line.split(",")))
f.close()
#自动绘制
for i in range(len(datals)):
t.pencolor(datals[i][3],datals[i][4],datals[i][5])
t.fd(datals[i][0])
if datals[i][1]:
t.right(datals[i][2])
else:
t.left(datals[i][2])
data.txt文本内容为
300,0,144,1,0,0
300,0,144,0,1,0
300,0,144,0,0,1
300,0,144,1,1,0
300,0,108,0,1,1
184,0,72,1,0,1
184,0,72,0,0,0
184,0,72,0,0,0
184,0,72,0,0,0
184,1,72,1,0,1
184,1,72,1,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
代码全部敲进去,首次运行,提示报错
Traceback (most recent call last):
File "F:/PycharmProjects/untitled/1.py", line 10, in <module>
for line in f:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence
这里问题主要出在第10行代码
f=open("data.txt")
通过查找资料,原因可能是python识别不了txt文件的编码,这里需要声明一下
可以修改为
f=open("data.txt",encoding="utf-8")
再次运行,依然报错(这个错误也就是本文要说的主要问题,我花了一天的时间查找资料,反复尝试才找到解决办法),错误提示为:
Traceback (most recent call last):
File "F:/PycharmProjects/untitled/1.py", line 12, in <module>
datals.append(list(map(eval, line.split(","))))
File "<string>",

在学习中国大学MOOC的《python语言程序设计》课程中,实例11自动轨迹绘制遇到SyntaxError: invalid character in identifier的问题。原因是Python无法识别txt文件的编码。解决方案是声明文件编码为utf-8-sig,而非utf-8,因为txt文件可能包含'BOM'字符。通过测试和分析,最终在读取文件时使用正确的编码成功解决了问题,实现了预期的轨迹绘制效果。
最低0.47元/天 解锁文章
4126





