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