从C转Python的小例子

来自数据结构与算法Python版_陈斌的课堂笔记

Hello World

C语言

#include<stdio.h>
int main()
{
    //say Hello
	printf("Hello World!\n");
}

哪怕是最简单的HelloWorld都要经过Compile编译-Link链接-Execute执行三步,而python作为解释型语言并不需要编译
main()是C语言特殊的主入口函数,而python不存在

def main():
	#say Hello
	print("Hello World!")
	
main()

这是C语言口音的python程序,可以看到,python定义函数利用def,而不是规定返回类型

正宗python程序:

#say Hello
print("Hello World!")

高斯的回家

#include<stdio.h>
int main()
{
	int s, i;
	s = 0;
	for (i=0 ;i<100 ;i++)
	{
		s += (i + 1);
	}
	printf("Sum= %d",s);
}

for语句在C语言中比较底层,为条件循环

s = 0
for i in range(100):
	s += (i+1)
print("Sum=",s)

在python中for语句为迭代循环

检验素数

#include <stdio.h>
#include <math.h>
int main( )
{
	int n, i, flag = 0;
	printf("Please input number:");
	scanf("%d", &n) ;
	for (i=2 ; i<sqrt(n) ;i++)
		if (n % i ==0)
		{
			flag = 1;
			break;
		}
	if (flag == 1)
		printf ("%d is NOT a prime number.", n);
	else
		printf ("%d is a prime number.", n);
}

在这段代码的for循环中,我们无法判断是正常退出(检验完全部的数发现是素数)循环还是break退出(检测到不是素数)循环的,我们需要用flag变量标记“是不是素数”,然后中断循环。

而python可以这样实现

from math inport sqrt
n = int(input("Please input number:"))
for i in range (2,int(sqrt(n))):
	if n % i == 0:
		print(f"{n} is NOT a prime number")
		break
else:
	print(f"{n} is a prime number")

这里的else对应for。如果for循环没有被break那么应该“奖励”执行else。python这种性质可以判断for循环是否正常执行。

打印三角形

#include<stdio.h>
int main()
{
	int n,i,j;
	print("Pleace input number");
	scanf("%d",&n);
	for (i = 0; i<n ; i++)
	{
		for (j = 0; j<i ; j++)
			printf("*")
		printf("\n");
	}
}

这里用了双重循环

如果用python语言只需要3行:

n = int(input("Please input number:"))
for i in range(n):
	print("*" * i)

因为python拥有字符串运算的性质

参考:

字符串操作符

操作符及使用 描述
x+y 连接两个字符串x和y
x+=str
n*xx*n 复制n次字符串x
x="a"*5
x in s 如果x是s的子串,返回True,否则返回False
posted @ 2021-09-20 01:07  隔篁竹闻水声  阅读(438)  评论(0)    收藏  举报