初学者如何从C语言到Python的转化(北大陈斌老师的举例 )

Giacinta ·
更新时间:2024-09-21
· 705 次阅读

整理时间:2020-02-19
内容来源:B站视频-北大陈斌老师
内容大纲:通过几个例子帮助大家对比两者语言的不同点,理解如何转化

从hello world 开始 高斯求和 检验素数 打印一个朴素的三角形

1.hello world

C语言

#include int main() { // say hello world printf(“hello world!\n”); }

Python语言
代码1(带有C语言口音的Python代码)

def main(): #这里要以main来命名,这是和C的不同 # say hello world print(‘hello world’) main()

代码2(正统Python 表达)

print(‘hello world’)

对比说明:
(1)C语言是的代码运行过程是这样的,首先是Compile编译成机器码,然后Link 各种库链接,最后Excute 执行目标程序。
(2)为什么C代码第一句是“#include ”,因为后边的printf要用到这个库。
(3)Python是一种解释性语言,点击运行就直接运行了,不像是C语言需要编译,连接,执行这三步骤。
(4)C语言的格式要求不严格,你可以不考虑缩进与分行等;Python需要严格的格式,一定要注意缩进,还有冒号!!
(5)关于“分号(;)”,C语言因为格式要求不严格,如果不考虑美观易读,可以把代码写成一行,但是为了确定每一句代码的结束,必须以分号为结束标识,不然会报错。Python 因为要求的严格的格式,因此不需要分号。
(6)注释不同,C是‘//’,Python是‘#’。
(7)非常重要的一点,单引号和双引号这里,在C语言中有区别,单引号表示字符,双引号是字符串。而在Python中没有区别,在Python中都是字符串。顺便一说,Matlab中都是 单引号。

2.高斯求和

C语言

#include int main() { int s ,i ; s=0; //adding num 1 to 100 for (i=0;i<100;i++) { s+=(i+1); //这里是i+1是因为i是从0到99的 } printf(“sum= %d”,s); }

Python语言

s=0 #adding num 1 to 100 for i in range(100): #range(100)表示从0到99这100个数 s+=(i+1) #这里是i+1是因为i是从0到99的 print('sum=',s)

对比说明:
(1)Python 代码很简洁,不需要声明变量类型。
(2)C语言的for语句很底层很原始,是一个条件循环,先初始化,再判断是否满足条件,然后一步步循环如此。
(3)Python中的for语句相对高级了,它是迭代循环。

3.检验素数
C语言

#include #include //因为下面sqrtz这个函数会用到 int main() { int n,i,flag=0; printf(“please input a number”); scanf("%d",&n); for(i=2;i<sqrt(n);i++) //这里不用循环到n,循环到 n开平方 就够了 if (n%i ===0) { flag=1; break; } //循环到此执行完毕 if(flag==1) print("这不是一个素数") else print("这是一个素数") }

Python语言

from math import sqrt n=input('please input a number') for i in range(2,int(sqrt(n))): #Python中的int都是地板取整,即向下取整 if n%i ==0 : print('这不是一个素数') break else: print('这是一个素数')

对比说明:
(1)这个例子,能够学习使用C语言的 编程技巧,使用flag。
(2)Python中的冒号的重要性,注意if for else 这些都要加冒号。
(3)Python中有独特的for-else语句,这个语句可以省去例3中的flag。
(4)在输入一个数input这里,Python更简洁。
(5)Python中的import 和 C语言中的include 有相似之处。

4.打印一个朴素的三角形

C语言

#include int main() { int n,i,j; printf("请输入三角形的层数"); santf("%d",&n); for(i=0;i<n;i++) { for (j=0;j<i;j++) printf("*"); printf("\n"); } }

Python语言

n=int(input("请输入三角形的层数")) #顺便一说,注意input最前面有个int,这和matlab是不一样的。 for i in range(n): #数值从从0到到n-1,共n个数 print("*"*i)

运行结果:
注意第一行为空的,因为是从0开始,到9结束哦。
在这里插入图片描述
对比说明:
(1)这个例子,能够学习使用C语言的 嵌套循环。
(2)然而,Python只需要3行,在简洁方面上彻底完爆C语言。
(3)注意input最前面有个int,是把input输入的字符串转化为整型数据。
这点和Matlab是不一样的,Matlab中不需要加int ,直接默认为double类型的数据。

写在最后
(1)陈老师给的这几个例子对于初学者来说,很有代表性。
(2)代码一定要自己敲一遍,不要看参考,先按照自己的思路敲一遍。只看和动手自己写还是两码事。动手这一下很关键。
(3)== 人生苦短,我用Python! ==

结束。。。。


作者:AlexMario



陈斌 python的 北大 C语言 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号