- Python
编程基础与 turtle 绘图学习笔记
- 2025-8-2 20:52:52 @
编程基础与 turtle 绘图学习笔记
一、绘制矩形(基础语法与逻辑)
(一)需求分析
根据输入的高、宽、绘图字符、实心/空心标识,打印对应矩形。需处理用户输入、循环控制行列绘制,区分实心和空心逻辑。
(二)代码实现
# 接收用户输入的一行数据,按空格分割为四个参数,分别对应矩形的高(a)、宽(b)、绘图字符(t)、实心/空心标识(shi)
a, b, t, shi = input().split()
# 将高和宽转换为整数类型,因为输入的前两个参数是表示尺寸的整数
a = int(a)
b = int(b)
# 外层循环控制矩形的行数,range(a) 会生成 0 到 a - 1 的序列,共 a 次循环,对应矩形的 a 行
for i in range(a):
# 内层循环控制每行的列数,range(b) 生成 0 到 b - 1 的序列,共 b 次循环,对应矩形的 b 列
for j in range(b):
# 判断是否绘制实心矩形,当 shi 不是 '0' 时(即 shi 为 '1' ),绘制实心
if shi != '0':
# 打印绘图字符 t,end="" 表示不自动换行,让同一行的字符连续输出
print(t, end="")
else:
# 绘制空心矩形时,判断当前位置是否为矩形边界
# 边界条件:第一行(i == 0)、最后一行(i == a - 1)、第一列(j == 0)、最后一列(j == b - 1)
if i == 0 or i == a - 1 or j == 0 or j == b - 1:
# 边界位置打印绘图字符 t
print(t, end="")
else:
# 非边界位置打印空格,形成空心效果
print(" ", end="")
# 每行所有列绘制完成后,打印换行符,切换到下一行
print()
(三)代码解释
- 输入处理:
input().split()
读取用户输入并按空格拆分,分别赋值给a
、b
、t
、shi
,再通过int()
函数将a
、b
转为整数,用于控制矩形行列数。 - 循环控制:外层
for i in range(a)
控制矩形行数,内层for j in range(b)
控制每行的列数,嵌套循环遍历矩形每个位置。 - 实心/空心判断:
if shi != '0'
判断是否绘制实心,满足则直接打印字符;为空心时,进一步判断是否在边界(i == 0 or i == a - 1 or j == 0 or j == b - 1
),是边界打印字符,否则打印空格。 - 换行处理:内层循环结束(一行绘制完),执行
print()
输出换行符,开始下一行绘制。
二、长方形面积计算(数学逻辑与循环应用)
(一)需求分析
给定长方形面积(整数),求长和宽均为整数且长≥宽的长方形可能种数,需遍历可能的长和宽组合,统计符合条件的数量。
(二)代码实现(需补充,以下为示例思路)
A = int(input()) # 获取用户输入的长方形面积
count = 0 # 初始化计数器,记录符合条件的长方形种数
# 遍历可能的宽,从 1 到 int(A**0.5) ,因为长≥宽,宽最大不超过面积的平方根
for width in range(1, int(A**0.5) + 1):
if A % width == 0: # 判断当前宽度是否能整除面积,即存在对应的整数长
count += 1 # 符合条件,计数器加 1
print(count) # 输出可能的长方形种数
(三)代码解释
- 输入处理:
int(input())
读取用户输入的面积值,赋值给A
。 - 循环遍历:
for width in range(1, int(A**0.5) + 1)
遍历可能的宽,范围到面积平方根(避免重复计算,如长和宽交换的情况)。 - 条件判断:
if A % width == 0
判断当前宽width
能否整除面积A
,能整除说明存在对应的整数长(A // width
),此时长方形存在,count
加 1 。 - 结果输出:循环结束,
print(count)
输出符合条件的长方形种数。
三、turtle 绘图基础及案例
(一)turtle 库基础操作
- 库导入:
import turtle
导入turtle
库,后续可使用库中函数绘制图形,如turtle.forward()
(向前移动)、turtle.left()
(左转) 等。 - 画笔设置:
turtle.pensize(size)
:设置画笔粗细,size
为整数,代表像素值,如turtle.pensize(10)
设置画笔粗细为 10 像素。turtle.color(pencolor, fillcolor)
:设置画笔颜色和填充颜色,pencolor
为线条颜色,fillcolor
为填充颜色,如turtle.color("blue", "yellow")
。
- 图形绘制:
turtle.circle(radius, extent)
:绘制圆弧或圆形,radius
为半径,extent
为绘制的角度(可选,不填默认 360 度即圆形 ),如turtle.circle(100, 90)
绘制半径 100 像素、90 度的圆弧。turtle.forward(distance)
:让画笔向前移动distance
像素距离,绘制直线。turtle.left(angle)
:让画笔逆时针转动angle
角度,改变绘制方向。
- 填充控制:
turtle.begin_fill()
:开始填充,后续绘制的封闭图形会用设置的填充颜色填充。turtle.end_fill()
:结束填充,完成封闭图形的颜色填充操作。
- 保持窗口:
turtle.done()
使绘图窗口保持显示,防止程序结束后窗口立即关闭,方便查看绘制结果。
(二)练习案例 - 绘制彩色圆弧(练习 2 扩展理解)
import turtle
# 设置画笔粗细为 10 像素
turtle.pensize(10)
# 绘制红色、90 度圆弧
turtle.color("red")
turtle.circle(100, 90)
# 绘制黄色、90 度圆弧
turtle.color("yellow")
turtle.circle(100, 90)
# 绘制蓝色、90 度圆弧
turtle.color("blue")
turtle.circle(100, 90)
# 绘制绿色、90 度圆弧
turtle.color("green")
turtle.circle(100, 90)
# 保持绘图窗口显示
turtle.done()
解释:依次设置画笔颜色,调用 turtle.circle(100, 90)
绘制四个 90 度圆弧,拼接成类似彩色圆环的图形,turtle.done()
保证窗口不关闭。
(三)练习 1 - 绘制三角形
import turtle
t = turtle.Pen() # 创建画笔对象 t,方便后续操作
# 循环 3 次,绘制三角形三条边
for i in range(1, 4):
t.forward(100) # 画笔向前移动 100 像素,绘制边
t.left(120) # 画笔左转 120 度,调整方向
# 保持绘图窗口显示
turtle.done()
解释:turtle.Pen()
创建画笔对象 t
,通过 for
循环三次执行 t.forward(100)
(绘制边长)和 t.left(120)
(调整角度,三角形内角 60 度,外角 120 度,这里转外角实现转向 ),完成三角形绘制。
(四)练习 3 - 绘制五角星
import turtle
t = turtle.Pen() # 创建画笔对象 t
# 循环 5 次,绘制五角星五条边
for i in range(1, 6):
t.forward(100) # 画笔向前移动 100 像素
t.left(144) # 画笔左转 144 度,调整方向(五角星每个转向角度为 144 度 )
# 保持绘图窗口显示
turtle.done()
解释:利用 for
循环五次绘制边并调整角度,t.left(144)
依据五角星几何特点设置转向角度,循环结束后用 turtle.done()
保持窗口显示绘制的五角星。
(五)在线判题系统作业相关
- 作业页面功能:包含作业介绍、题目列表(如
T1097 画矩形
、P215 【例36.1】计算矩阵边缘元素之和
等 ),可查看题目状态(是否递交)、进行代码编辑递交、查看成绩等操作,助力练习和巩固知识。 - 使用建议:遇到对应题目,根据需求分析思路,结合课堂学的语法(如循环、条件判断、库函数使用等 )编写代码,在系统中递交测试,根据反馈调试优化,提升编程能力。
以上就是本节课涉及的编程基础(输入处理、循环、条件判断等 )和 turtle
绘图相关知识及实践案例,多动手练习这些代码,理解语法逻辑和图形绘制原理,逐步提升编程技能呀!
0 条评论
目前还没有评论...