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

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

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

1.hello world

C语言

#include <stdio.h>

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 <stido.h>”,因为后边的printf要用到这个库。
(3)Python是一种解释性语言,点击运行就直接运行了,不像是C语言需要编译,连接,执行这三步骤。
(4)C语言的格式要求不严格,你可以不考虑缩进与分行等;Python需要严格的格式,一定要注意缩进,还有冒号!!
(5)关于“分号(;)”,C语言因为格式要求不严格,如果不考虑美观易读,可以把代码写成一行,但是为了确定每一句代码的结束,必须以分号为结束标识,不然会报错。Python 因为要求的严格的格式,因此不需要分号。
(6)注释不同,C是‘//’,Python是‘#’。
(7)非常重要的一点,单引号和双引号这里,在C语言中有区别,单引号表示字符,双引号是字符串。而在Python中没有区别,在Python中都是字符串。顺便一说,Matlab中都是 单引号。


2.高斯求和

C语言

 #include <stdio.h>
 
 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 <stdio.h>
#include <math.h>   //因为下面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 <**.h> 有相似之处。


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

C语言

#include <stdio.h>

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! ==


结束。。。。

发布了105 篇原创文章 · 获赞 90 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/hahahahhahha/article/details/104385587