赞
踩
程序2-7-7主要使用turtle.forward前进操作和turtle.left左转操作在屏幕上画星星。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#2-7-8.py
import turtle
turtle.color('Green','yellow')
while True:
turtle.forward(200)
turtle.left(150)
print(turtle.pos())
if abs(turtle.pos()) < 1:
break
print('按回车键退出')
input()
程序2-7-7.py运行结果如下:
同时,程序2-7-7.py还输出了如下所示的线转角处(绘制一条直线后转角绘制另一个直线,2条直线的交点)的位置信息:
(200.00,0.00)
(26.79,100.00)
(126.79,-73.21)
(126.79,126.79)
(26.79,-46.41)
(200.00,53.59)
(0.00,53.59)
(173.21,-46.41)
(73.21,126.79)
(73.21,-73.21)
(173.21,100.00)
(0.00,-0.00)
按回车键退出
现对程序2-7-7.py分析如下:
1、该程序使用了以下几个函数:
(1)forward函数前进200,用于绘制直线。
(2)left函数左转150度,用于转角,绘制另一条直线。
(3)turtle.pos()返回当前位置坐标 (x,y) (坐标为 Vec2D 矢量类对象)。
(4) abs函数返回一个数的绝对值。 参数可以是整数、浮点数或任何实现了 abs() 的对象,当参数是一个复数时,返回它的模。在该程序中, abs的作用如下:
使用pos返回一个当前坐标后,abs求该Vec2D坐标到原点的距离(从原点出发的向量长度)。矢量空间内的所有矢量赋予非零的正长度或大小,在二维的欧氏几何空间 R中定义欧氏范数,在该矢量空间中,元素被画成一个从原点出发的带有箭头的有向线段,每一个矢量的有向线段(向量)的长度即为该矢量的欧氏范数。
由于Vec2D是一个二维矢量类,用来作为实现海龟绘图的辅助类,也可以在海龟绘图程序中使用,它派生自元组,因此矢量也属于元组。Vec2D主要提供以下运算 (a, b 为矢量, k 为数值):
a + b 矢量加法
a - b 矢量减法
a * b 内积
k * a 和 a * k 与标量相乘
此外,Vec2D类还实现了 abs操作,如下面代码片断所示(摘自Vec2D类源代码)。
class Vec2D(tuple):
...
def __abs__(self):
return (self[0]**2 + self[1]**2)**0.5
2、程序2-7-7.py的执行过程如下:
(1)通过turtle.color(‘Green’,‘yellow’)函数设置颜色为绿色画笔、黄色填充。
(2)创建循环体,循环体内容为:
首先,将海龟定位于原点。
然后,turtle.forward(200)前进200步,turtle.left(150)左转150度,print(turtle.pos())打印出当前海龟位置。
最后,通过abs(turtle.pos())判断当前向量(从原点到当前海龟位置的向量)的长度,如果长度<1,说明当前位置已经回到了起点(原点),就退出循环。如果长度>=1,则继续循环。
Python None 对象,表示缺乏值、空值。
下面代码定义了x和y共2个变量,其中,x初始化值为0,而y设为了空值,x虽然为0,但仍然属于有值状态,而y属于空值状态。
>>>x=0
>>>y=None
>>>x==None
False
>>>y==None
True
Python定义函数使用关键字 def,后跟函数名与括号内的形参列表。函数语句从下一行开始,并且必须缩进。
程序2-7-10-1.py定义了函数getSum,完成参数求和后返回 。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#2-7-10-1.py
def getSum(x1,x2,x3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。