本专栏主要基于北大的数据结构与算法教程(Python版)进行整理,包括课程笔记和OJ作业。
课程链接
相信大多数同学接触到第一门程序设计语言都是C语言,本篇博客用四个简单的例子,从C到Python进行过渡,对C和Python的区别有一个直观的认识。
1. Hello Word
- C语言(编译型语言)程序的执行包括三步:1)编译:把程序代码编译为机器码 2)链接:链接程序中引入的各种库 3)执行:执行目标程序;Python(解释型语言)语言程序的执行只有一步:逐行执行代码
- C语言中main函数比较特殊,是程序主入口函数,必不可少且只能有一个,其返回类型为int;Python中不存在主入口函数这一说,main函数只是一个普通的函数,可以任意命名,也没有返回类型,hello word完全可以用一行代码实现。
- C语言中的printf定义在库文件stdio.h中,使用时需引入库文件;Python语言中print是内置函数,可以直接用。
- C语言的代码块一般用一对{}包裹;Python语言代码块用冒号和缩进表示。在C中,缩进并不是强制要求的,完全可以把代码全写到一行,也可以正常执行,不过缩进可以提高可读性。
2. 1-100求和
- 解决相同的问题,Python 的代码量明显比C少
- C语言需要声明变量的类型;Python不需要
- C语言的语句需要结束符’;’ ;Python中没有(强调格式)
- C语言单行注释用// ;Python语言单行注释用#
- C语言中的for循环实际上是一个条件循环,包含初始化,循环条件,和每次循环的操作;Python语言的for循环是一个迭代循环,每次从range(100)中取一个数进行操作。
- range(100)可以产生0-99这100个数,它是一个生成器,只有在循环环境或一些函数如list()下才会实体化。(更详细的说明可以查看我的博客Python相关的专栏)
3. 检验素数
输入一个数,检验该数是不是素数。
- 解决相同的问题,Python 的代码量明显比C少
- C语言中可以用scanf接收用户输入(匹配型输入,%d限制输入类型为整数);Python语言使用input接受输入,输入类型为字符串,需要用int()将字符串中的数字转换为整数。注意Python中虽然不需要定义数据类型,但他是强类型语言,不同类型的数据不能在一起运算。
- Python中之所以不需要使用flag变量,是因为python中for循环后面可以跟一个else,注意这个else不是和if对应的,而是for-else语句。当for循环完整执行结束时,会执行else语句,当for循环执行过程中被break中断时,则不执行else语句。
4. 打印一个朴素的三角形
- 解决相同的问题,Python 的代码量明显比C少。C需要两重循环,Python只需要一重。
- C语言需要额外添加换行printf(’\n’),python中的print函数自动换行。