一个学过C/C++的咸鱼,最近学起了Python,不得不说,知识还是老知识,语法也简单多了,但就是容易搞混。大致总结一下Python与C的区别,以后别张冠李戴啦,嘻嘻。
Part 1.输入与输出
输入任意类型的数据,python用的是input(),input()中无论输入什么,都会默认为字符串的形式,如果要输入数字,可以写为x=eval(input()),而对于确定类型的数字,比如要输入整型数字,可以写为x=int(input());而C语言对于整型、实型、字符(串)型数据,都可以用scanf。整型/实型scanf(“%d/f”,&x),要加引用符号“&”,而字符串不必加引用符号:scanf("%s",x)。对于(单一)字符型数据,用getchar()输入;对于字符串,除了scanf输入,还可以用gets()输入。
输出最常用的非print莫属啦(C语言为printf),但首先值得注意的是print自带换行功能,即print('xxx')等效于C语言中的printf("xxx\n"),当然,print中的单引号换成双引号也可以,但两种引号不能混搭(一边单引号,一边双引号)。Python中,不想换行怎么办?那就加上end=''关键字参数,即print('xxx',end='')等效于C语言中的printf("xxx")。对于具体的输出,与输入一样,C语言需要关键字%d、%s等等,而Python不必写这些形态符号,不同形态的输出也就更方便啦。C语言:printf("output:%d\n",x);Python:print('output:'+str(x));对于整型、实型数据的输出,如果伴随字符串,则要使用str()以字符形态输出,毕竟,字符型数据太傲娇,不愿与整型、实型数据为伍,后者不得不装扮成字符型数据呀。
Part 2.逻辑值
C++特有的bool型数据在Python当中会是怎样的呢?在绝大多数IDE中,C++的bool值是true和false,不能大写;而在Python中,True与False首字母要大写,其他逻辑含义不变,True仍代表1或非0整数,False仍为0。
在交互式环境中,“in”与“not in"语句可以判断某元素是否属于某一数组(列表),比如:列表spam=[1,2,3],我们判断3在不在里面,输入3 in spam,会返回结果:True;若是3 not in spam,则返回的判断结果为False,列表的具体内容我们会在之后讲解。
None值表示没有值,像print()这样的函数不会返回任何值,那么None就是它的返回值。
在Python中,and、or、not更加直白的表示了与、或、非,在C/C++中,它们分别是&&、||、!。如判断句:
Python版本:(2<3) and (4<5) or not (5==6)
C/C++版本:(2<3) && (4<5) || !(5==6)
其实,在基础语法中,C与Python最明显的区别还是——";"。Python的语句不用分号结尾!!!
Part 3.条件&循环语句
条件语句:
//C语言:
if(条件1){
语句内容;
}
else if(条件2){
语句内容;
}
else{
语句内容;
}
#Python语言:
if 条件1:
语句内容#要缩进
elif 条件2:
语句内容#要缩进
else:
语句内容#要缩进
while语句:
//C语言:
while(循环条件){
语句内容;
};
#Python语言:
while 循环条件:
语句内容#要缩进
for语句:
//C语言:
for(i=0;i<10;i=i+2){
语句内容;
}
#Python语言:
for i in range(0,10,2):
语句内容//要缩进
对于终止循环的continue与break,在两种语言中功能相同,不过Python中不必加上分号。
Part 4.导入与终止
导入某种功能(数学公式、排序函数等)时,C语言直接在头文件引用对应功能:#include,如果是导入自己写的头文件,
则为#include"xxx.h";Python则使用import关键字导入,如import random,也可以写为from random import*,后者在调用random模块时就不需要random.前缀了,不过为了使名称完整,最好使用前者的写法。
Python可以导入sys模块,使用sys.exit()函数终止程序运行;也可以按Ctrl+C强行终止程序。
C++中可以通过引入stdlib.h头文件,使用system("pause")实现程序的暂停;Python可以是使用input()语句实现程序的暂停。
Part 5.全局变量
在C/C++中,我们会用define或const语句进行全局定义,而在Python中,使用global语句定义。
Part 6.函数
C语言要写明函数类型int/char/void等,而形参也要标明类型。对于Python,函数定义为"def xxx():",形参也无需标明类型。
Part 7.代码实战
最后,举个栗子对上述内容做个总结吧:
Python版本:
def collatz(number):
if not(number%2):
number=number//2
return number
else:
number=number*3+1
return number
print("请输入一个整数:",end='')
num=int(input())#input默认输入字符型数据,输整数,则需用int()包含
while num !=1:
num=collatz(num)
print(num)
运行结果:
C版本:
#include
int collatz(int number){//要指明函数本身形态int以及形参的形态int
if(!(number%2)){
number/=2;//number为int型,得到结果均会转为整型,相当于整除
return number;
}
else{number=3*number+1;
return number;
}
}
int main(){
int num;
printf("请输入一个整数:");//python的print自带换行功能,如果不想换行,则要加上end=''关键字
scanf("%d",&num);//整型、实型数据用scanf输入,分别对应%d和%f/%lf
while(num!=1){
num=collatz(num);
printf("%d\n",num);//输出也要指明输出数据的形态
}
return 0;
}
运行结果:
感谢耐心观看,如有错误,欢迎指正。