本文详解如何正确解析 CSV 格式的绘图指令文件,并调用 Turtle 函数绘制多个螺旋图形;重点纠正 read_file 中文件读取与数据解析的常见错误,确保指令被准确提取并执行。
本文详解如何正确解析 csv 格式的绘图指令文件,并调用 turtle 函数绘制多个螺旋图形;重点纠正 `read_file` 中文件读取与数据解析的常见错误,确保指令被准确提取并执行。
在使用 Python 的 turtle 模块实现基于文件指令的绘图时,一个典型陷阱是:文件被打开后未正确解析内容,导致绘图逻辑从未触发。你遇到的“空白窗口、无任何图形”问题,根源正在于 read_file 函数中对文件内容的误操作。
原始代码中存在两处致命问题:
以下是修复后的完整、健壮的 read_file 函数(含必要类型转换与错误处理):
from turtle import *def draw(col, arc_number, basic_radius, rad_growth, pen_weight): color(col.strip()) # 去除可能的空格 pensize(int(pen_weight)) for i in range(int(arc_number)): circle(float(basic_radius), 90) basic_radius = float(basic_radius) + float(rad_growth)def read_file(name_of_file): try: with open(name_of_file, 'r', encoding='utf-8') as f: for line_num, line in enumerate(f, start=1): line = line.strip() if not line: # 跳过空行 continue try: parts = line.split(',') if len(parts) != 5: print(f"警告:第 {line_num} 行格式错误(期望5项,实际{len(parts)}项):{line}") continue col, arc_number, basic_radius, rad_growth, pen_weight = parts draw(col, arc_number, basic_radius, rad_growth, pen_weight) except ValueError as e: print(f"警告:第 {line_num} 行数据类型转换失败:{line} — {e}") except FileNotFoundError: print(f"错误:找不到文件 '{name_of_file}'") except Exception as e: print(f"读取文件时发生未知错误:{e}")# 启动绘图read_file("instruction.txt")done()
black,35,9,6,1red,15,25,4,2blue,12,-19,-4,3
每行对应一个螺旋:颜色、弧段数、初始半径、半径增量、画笔粗细。运行后将依次绘制黑色大螺旋、红色中型螺旋、蓝色逆向(内卷)螺旋。
通过以上修正,你的 Turtle 窗口将不再空白——指令被真实解析、参数被正确传递、绘图函数得以执行。核心原则始终是:读取即处理,解析需转换,容错保稳定。