小派的故事:Python以开放的姿态进入高中新课程

2017-10-31 23:55王爱胜
中国信息技术教育 2017年19期
关键词:C语言编程运算

王爱胜

修订后的高中信息技术课程中将会出现一个靓丽的身姿,那就是目前最流行的计算机编程语言之一——Python。因为其更接近自然语言的风格和开放标准的优异功能,能够给课程带来更多的青春活力,所以在这里,不妨亲切地称Python为“小派”。结合在网上学习的一些心得(部分程序来源网络,特此鸣谢),我从特点、功能、语法、技术等角度给大家讲一些小派的故事,一起准备迎接新课程教学吧。

小派来自开放自由的北欧

北欧,尤其是荷兰、芬兰、瑞典、挪威等国家生活节奏并不快,但人们的思维却非常活跃。大家都知道,诺基亚凭借发明专利现在死而不倒,Linux掀起开源风暴打下微软半壁江山,如今来自荷兰的Python几度占据了程序设计语言排行第一。发明人Guido在编程中从管理员常用的shell得到启发,用shell去写一些常用的脚本,以进行一些系统维护的工作,如定期备份、文件系统管理等。shell可以像胶水一样,将UNIX下的许多功能连接在一起。Guido曾参与荷兰ABC语言的开发,与当时大部分语言不同的是,ABC语言的目标是“让用户感觉更好”。1991年,第一个Python编译器诞生了,它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python就已经具有了类、函数、异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。

Python相当开放,又容易拓展,所以当用户不满足于现有功能时,能很容易对Python进行拓展或改造。随后,这些用户将改动发给Guido,并由Guido决定是否将新的特征加入到Python或者标准库中。因为模块的开放性,让Python不断升级成物种丰富的热带雨林。由此可知,小派最大的特点是标准模块开放,这种开源思维是它成功的根本原因,也是新技术教育应该接纳与提倡的重要思想。

◎技术小派送

笔者以Python3.6安装、应用图形模块为例,让大家了解小派最基本的“模块引用”技术,体验其编程特点。

①下载图形模块和函数模块。从官网(https://pypi.python.org/pypi/matplotlib/)下载图形模块:matplotlib-2.0.2-cp36-cp36m-win32.whl。从官网(https://pypi.python.org/pypi/numpy)下载函数模块:numpy-1.13.1-cp36-none-win32.whl。

②复制以上文件到Python的Scripts文件夹中。例如,C:\Python36\Scripts。

③安装模块。Shift+右键,进入命令窗口。输入安装命令,粘贴相应文件名,进行安装。例如,pip install matplotlib-2.0.2-cp36-cp36m-win32.whl。需注意:电脑中只能安装一个版本的小派,如果有两个请全部卸载重新安装最新版;相应模块要与小派版本一致;在“计算机”属性的高级系统中,新建Python位置的环境变量。

④以函数作图为例学习模块引用。

import numpy as np

import matplotlib.pyplot as plt

X = np.linspace(-10, 10, 1024) #作图区域

Y = .25 * (X + 4.) * (X + 1.) * (X - 2.) #计算任意函数值,2.表示 2.0 ,小数运算

plt.title('$f(x)=\\frac{1}{4}(x+4)(x+1)(x-2)$') #显示表达式

plt.plot(X, Y, c = 'r') #用红色画点

plt.show() #激活圖形窗口

小派具有随意而懒惰的性格

在初学计算机编程语言时,遇到的第一个混沌往往就是严格的语法加上“或、与、非”等逻辑运算。小派在这点上就很随意,所以说它更接近自然语言。

以往用VB等语言表示的if 5

小派更懒惰的运算还有很多,如在输入语句中直接可以嵌套数据函数,you=int(input('请你出(1.剪刀;2.石头;3.布):'))等。

正是这样的懒惰运算,让小派在强大的模块支持下更容易编程,也能更多地抛弃繁琐的语法、常规算法而有精力去创造,有时间创新思维。

技术小派送

小派懒惰运算有很多相关的模块支持,如常见的斐波那契迭代算法,以前的计算机语言需要构造数组,数组之间要进行数据的交换,逐步迭代出后面的数组元素。小派提供解决这类问题的专门功能——迭代器,让数据不用经过交换就可以迭代进列表中,这样就简化了程序,提高了效率。

#!/usr/bin/python

import sys #调取迭代函数,支持以下命令

def fibonacci(n): # 自定义生成器函数,构成斐波那契

a, b, counter = 0, 1, 0 # 对应赋值也很有意思吧?

while True:

if (counter > n):

return

yield a #运行迭代生成器,允许存一对数值进列表中

a, b = b, a + b #迭代赋值

counter += 1

f = fibonacci(20) # f 是一个迭代器,由生成器返回生成

while True:

try:#如果没有发生异常,python运行try子句,然后继续

print (next(f), end=" ") #遍历所有的数列,显示

except StopIteration: #数列结束

sys.exit()

今天,我给大家讲的两个小故事,涉及模块引用、懒惰运算两类编程技术,其实都归结到Python的开放性特征,正是这个特征让编程更容易,让程序设计人群更接近用户,回避了很多高冷的底层设计,这一点非常符合国际编程潮流,在基础教育中是比较适合编程教学的,教师不妨多多尝试,积累经验,促进编程技能的培养与提高。

猜你喜欢
C语言编程运算
“C语言程序设计”课程混合教学探索
玩游戏学编程,Blockly Games上手玩
纺织机上诞生的编程
长算式的简便运算
编程屋完成数百元万天使轮融资
基于C语言的计算机软件编程技术探究
中职C语言单片机课堂教学中的趣味性探讨
学编程,先画画
加减运算符号的由来
计算机原理中C语言的应用价值