python 中文就是蟒蛇的意思。
在计算机中,它是一种编程语言。
Python(英语发音:/ˈpaɪθən/), 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C++重写。
1发展历程编辑
自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程。Python[1] 已经成为最受欢迎的程序设计语言之一。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。自从2004年以后,python的使用率是呈线性增长[2] 。
由于Python语言的简洁、易读以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学
已经采用Python教授程序设计课程。例如卡耐基梅隆大学的编程基础和麻省理工学院的计算机科学及编程导论就使用Python语言讲授。众多开源的科学
计算软件包都提供了Python的调用接口,
例如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。而Python专用的科学计算扩展库就更多了,例如如下3个十分经典的
科学计算扩展库:NumPy、SciPy和matplotlib,它们分别为Python提供了快速数组处理、数值运算以及绘图功能。因此Python语
言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。
说起科学计算,首先会被提到的可能是MATLAB。然而除了MATLAB的一些专业性很强的工具箱还无法替代之外,MATLAB的大部分常用功能都可以在Python世界中找到相应的扩展库。和MATLAB相比,用Python做科学计算有如下优点:
● 首先,MATLAB是一款商用软件,并且价格不菲。而Python完全免费,众多开源的科学计算库都提供了Python的调用接口。用户可以在任何计算机上免费安装Python及其绝大多数扩展库。
● 其次,与MATLAB相比,Python是一门更易学、更严谨的程序设计语言。它能让用户编写出更易读、易维护的代码。
● 最后,MATLAB主要专注于工程和科学计算。然而即使在计算领域,也经常会遇到文件管理、界面设计、网络通信等各种需求。而Python有着丰富的扩展库,可以轻易完成各种高级任务,开发者可以用Python实现完整应用程序所需的各种功能。
2产生
Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为程序的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者。
ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC
这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido 认为是非开放造成的。Guido
决心在Python 中避免这一错误。同时,他还想实现在ABC 中闪现过但未曾实现的东西。
就这样,Python在Guido手中诞生了。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。
3风格
Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。
设计者开发时总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。这在由Tim
Peters写的Python格言(称为The Zen of Python)里面表述为:There should be one-- and
preferably only one --obvious way to do it 这正好和Perl语言(另一种功能类似的高级动态语言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。
Python的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。其中很重要的一项就是Python的缩进规则。
一个和其他大多数语言(如C)的区别就是,一个模块的界限,完全是由每行的首字符在这一行的位置来决定的(而C语言
是用一对花括号{}来明确的定出模块的边界的,与字符的位置毫无关系)。这一点曾经引起过争议。因为自从C这类的语言诞生后,语言的语法含义与字符的排列
方式分离开来,曾经被认为是一种程序语言的进步。不过不可否认的是,通过强制程序员们缩进(包括if,for和函数定义等所有需要使用模块的地方),Python确实使得程序更加清晰和美观。
4设计定位
Python
的设计哲学是“优雅”、“明确”、“简单”。因此,Perl语言中“总是有多种方法来做同一件事”的理念在Python开发者中通常是难以忍受的。
Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝
花俏的语法,而选择明确的没有或者很少有歧义的语法。由于这种设计观念的差异,Python源代码通常被认为比Perl具备更好的可读性,并且能够支撑大
规模的软件开发。这些准则被称为Python格言。在Python解释器内运行import this可以获得完整的列表。
Python开发人员尽量避开不成熟或者不重要的优化。一些针对非重要部位的加快运行速度的补丁通常不会被合并到
Python内。所以很多人认为Python很慢。不过,根据二八定律,大多数程序对速度要求不高。在某些对运行速度要求很高的情况,Python设计师
倾向于使用JIT技术,或者用使用C/C++语言改写这部分程序。可用的JIT技术是PyPy。
Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。
虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrent,Google也广泛地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shellscript、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。
Python本身被设计为可扩充的。并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和
工具,以便程序员能够轻松地使用C语言、C++、Cython来编写扩充模块。Python编译器本身也可以被集成到其它需要脚本语言的程序内。因此,很
多人还把Python作为一种“胶水语言”(glue
language)使用。使用Python将其他语言编写的程序进行集成和封装。在Google内部的很多项目,例如Google
Engine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。《Python技术手册》的作者马特利(Alex
Martelli)说:“这很难讲,不过,2004 年,Python 已在 Google 内部使用,Google 召募许多 Python
高手,但在这之前就已决定使用Python,他们的目的是 Python where we can, C++ where we
must,在 *** 控硬件的场合使用 C++,在快速开发时候使用 Python。”
ls的兄弟,题目要求是用函数void draw(n, c)来实现功能的。。
下面的程序在vc60中通过编译。
#include <stdioh>
void draw(int n,char c)
{
int i,j,k;
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
printf(" ");
for(k=1;k<=2(i-1)+1;k++)
printf("%c",c);
printf("\n");
}
}
main()
{
int n;
char c;
scanf("%d%c",&n,&c);
draw(n,c);
}
#include <stdioh>
#include <stdlibh>
/
主函数main中输入一组(10个)C语言成绩值到数组score[ ]中,
并输出如图所示的主菜单,根据不同的选择调用相应函数,编
写函数分别实现:
1- 输出平均值
2- 排序成绩
3- 输出比平均值低的成绩和个数
4- 输出及格率
5- 查找成绩
6- 添加成绩
0- 结束程序
/
//1、平均成绩函数
double AveScores(double [], double);
double AveScores(double score[], double count)
{
int i;
double sums = 0;
double average;
for(i = 0; i < count; i++)
{
sums += score[i];
}
average = sums / count;
return average;
}
//排序成绩函数由小到大
void SortScores(double [], int);
void SortScores(double score[], int count)
{
int i, j;
double temp;
for(i = 0; i < count; i++)
{
for(j = 0; j < count - i - 1; j++)
{
if(score[j] > score[j + 1])
{
temp = score[j + 1];
score[j + 1] = score[j];
score[j] = temp;
}
}
}
}
//输出比平均值低的成绩个数
double LowAve (double [], int, double);
double LowAve (double score[], int count, double average)
{
int i= 0;
double countlow = 0;
for(i = 0; i < count; i++)
{
if(score[i] < average)
{
countlow++;
}
}
return countlow;
}
//查找成绩
void FindScore(double [], int);
void FindScore(double score[], int count)
{
int i;
int index;
double input;
printf("请输入要查找的成绩");
scanf("%lf", &input);
for(i = 0; i < count; i++)
{
if(score[i] == input)
{
printf("找到了!此成绩在第%d个\n",i);
}
}
}
//添加成绩
int AddScore(double [], int);
int AddScore(double score[], int count)
{
int i = 0;
printf("请用户输入要添加的成绩:");
while(scanf("%lf", &score[i + count]) != 1 || &score[i + count] < 0)
{
fflush(stdin);
printf("请重新输入正数:");
}
count++;
return count;
}
int main()
{
int i, j;
int index; //数组元素下标
int choice; //用户选择
double average; //平均成绩
double temp; //临时变量
int count = 10; //成绩个数最多支持100个
double countlow; //低于平均成绩的个数
double score[100] = {76, 68, 98, 87, 71, 65, 49, 54, 80, 61};
double lowScore[100]; //用来存放低于平均成绩的数组
do
{
printf("\n");
printf("1、输出平均值\n");
printf("2、排序成绩\n");
printf("3、输出比平均值低的成绩和个数\n");
printf("4、输出及格率\n");
printf("5、查找成绩\n");
printf("6、添加成绩\n");
printf("0、结束程序\n");
printf("\n");
printf("请选择功能:");
while(scanf("%d", &choice) != 1 || choice < 0 || choice > 6)
{
fflush(stdin);
printf("请重新输入0-6的数字:");
}
switch(choice)
{
case 1://1- 输出平均值
average = AveScores(score,count);
printf("平均成绩为%2lf\n", average);
break;
case 2://2- 排序成绩
SortScores(score,count);
printf("排序后成绩为:\n");
for(i = 0; i < count; i++)
{
printf("第%d个成绩:\t",i + 1);
printf("%2lf\n",score[i]);
}
break;
case 3://3- 输出比平均值低的成绩和个数
for(i = 0; i < count; i++)
{
lowScore[i] = score[i];
}
SortScores(lowScore,count);
average = AveScores(score, count);
countlow = LowAve(lowScore,count,average);
printf("低于平均成绩的个数为%0lf\n", countlow);
for(i = 0; i < countlow; i++)
{
printf("第%d个低于平均的成绩:\t",i + 1);
printf("%2lf\n",lowScore[i]);
}
break;
case 4://4- 输出及格率
average = AveScores(score, count);
countlow = LowAve(score,count,average);
printf("及格率为:%2lf%%%\n",100 - countlow / count 100);
break;
case 5://5- 查找成绩
FindScore(score,count);
break;
case 6://6- 添加成绩
count = AddScore(score,count);
break;
}
}while(choice != 0);
return 0;
}
a=list(eval(input(“请输入n个整数”)))
b=max(a)
c=len(a)
for i in range(1,c+1):
if a[i-1]==b:
print("最大的数是%d,是第%d个数"%(b,i))
C语言中一个完整的函数由函数首部和函数体构成,而且定义函数时两者都是必不可少的。函数定义的一般形式如下:类型标识符 函数名(形参表列) // 这是函数首部 // 以下{ }内的是函数体 { 说明部分执行部分 } 举例说明如下: // 定义一个不带返回值的函数 // 函数功能:输出形参的值 void fun(int a, int b) { printf("%d, %d\n", a, b); } // 定义一个带返回值的函数 // 函数功能:返回2个整数数的最大值 int fun(int a, int b) { return a>b a : b; }
(1)画什么函数的图像?数据是什么?
(2)生成100个[0, 100]的随机数,并画出分布直方图
x <- runif(100, 0, 100)hist(x)
首先需要绘图函数的头文件在TC20中是graphicsh
然后需要初始化图形模式
在利用绘图函数
矩形:bar
圆形:circle
直线:line
等等。你可以到graphicsh文件中去看这些函数的参数
举个例子
#include <stdioh>
#include <graphicsh>
int main(void)
{
int gdriver; /图形驱动器/
int gmode; /图形驱动模式/
gdriver = DETECT; /自动检测硬件,已确定图形驱动器/
initgraph(&gdriver,&gmode,\"\");初始化图形设备
setbkcolor(BLUE); /设置屏幕背景颜色为蓝色/
circle(getmaxx() / 2,getmaxy() / 2,100); /在屏幕中间绘制一个半
为100的圆/
closegraph(); /关闭图形模式/
return(0);
}
一个函数(function)是一个可以从程序其它地方调用执行的语句块。以下是函数定义格式:
type name ( argument1, argument2, ) statement
说明:
type 是函数返回的数据的类型
name 是函数被调用时使用的名
argument 是函数调用需要传入的参量(可以声明任意多个参量)。每个参量(argument)由一个数据类型后面跟一个标识名称组成,就像变量声明中一样(例如,int x)。参量仅在函数范围内有效,可以和函数中的其它变量一样使用, 它们使得函数在被调用时可以传入参数,不同的参数用逗号(comma)隔开
statement 是函数的内容。它可以是一句指令,也可以是一组指令组成的语句块。如果是一组指令,则语句块必须用花括号{}括起来,这也是我们最常见到情况。其实为了使程序的格式更加统一清晰,建议在仅有一条指令的时候也使用花括号,这是一个良好的编程习惯。
示例:每一个C语言程序有且只有一个main函数,本身main就是一个函数。结合上面的格式,自己理解一下。
int main(){
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)