|
大家好,我是纪宁。文章将从C语言出发,深入介绍python的基础知识,也包括很多python的新增知识点详解。文章目录1.python的输入输出,重新认识helloworld,重回那个激情燃烧的岁月1.1输出函数print的规则1.2输入函数input的规则1.3用print将数据写入文件2.数据类型、基本操作符与注释2.1数据类型2.2基本操作符2.21算数操作符2.22逻辑操作符2.23位操作符及操作符优先级2.3注释3.数据的存储python中数据如何存储4.分支和循环4.1分支语句if-else4.2循环4.3pass语句5.python基础数据结构5.1列表——python中的数组5.1.1列表的增删查改5.1.2对列表进行其他操作5.2字典——python中的结构体5.2.1字典常用的操作5.2.2字典的特点5.3元组5.4集合5.4.1集合常用的操作5.5字符串5.51字符串常用操作5.52字符串的比较及字符的Unicode编码5.53格式化字符串5.54字符串的编码转化5.6生成式合集5.6.1字典生成式5.6.2列表生成式5.6.3集合生成式5.7切片6.函数——新瓶装旧酒思维导图:1.python的输入输出,重新认识helloworld,重回那个激情燃烧的岁月在C语言中,在进行输入输出的时候,通常要遵循一定的格式,如变量名必须与变量的类型严格对应,输出输入的每一个变量都要在数量和格式上都要一一对应,而python变得更加简洁和方便1.1输出函数print的规则python中的输入函数是print,相比于C语言,少了一个f,但功能却方便了很多。想输出什么(变量或者直接输出),就直接往print函数里面塞就行了,不用管什么格式,数据类型。但它的多组输出还是会有一定的规则,否则使用者也难以很好的把握输出的格式。下面是print函数输出不同于C的一些规则:在同一个print函数的输出中,通常会默认每个数据之间以空格分开(C中却是默认不分开),而要去掉这以规则,可以在print函数内部加上sep参数。给sep参数赋值可以使一个print函数打印出的每个数据之间以任意方式隔开,如空字符,逗号等等。而在多个print函数的输出中,通常会默认这些数据之间会自动换行,如果想去掉这一规则,可以在print函数内部加上end参数,给end参数赋值,可以是每个print输出的值以给end赋的值隔开。为什么可以这样呢?其实在python的print函数内部,是有end参数和sep参数的,只不过在不使用这两个参数的情况下,系统会默认end参数的值为‘\n’,sep参数的值为‘’(空格),所以就出现上述情况。1.2输入函数input的规则python中的输入函数是input,相对于C语言,input函数也是比较方便。input函数可以直接读取从终端(键盘)输入的数据并存储到变量中,也可以在给出提示后,将想要的答案通过键盘输入并存储到变量中。上面代码意思是从控制台输入一个值,再将这个值赋值给变量,其中input括号里的文字提示在没有的情况下,效果是一样的,但有问题提示就比较人性化一点。有个问题需要注意的是,因为input函数在输入的时候没有规定数据类型,所以输入的数据默认都是以字符串的形式返回并赋值给变量。如果要进行计算,需要及时将输入的数据进行类型转化,否则就会报错。需要什么类型的数据进行计算就转化为什么类型的数据。1.3用print将数据写入文件同C一样,python中如果要对文件进行操作,也需要先打开文件,操作完关闭文件。python中打开文件的函数为open函,关闭文件的函数为close。open函数的第一个参数为要写入文件的路径,第二个参数为对文件进行读写的模式。print函数的第一个参数是要写入的数据内容,第二个参数是要写入的文件对象。下表为文件操作的一些常用模式如下图,打开D盘中的text.txt文件,即可看到写入的helloworld。2.数据类型、基本操作符与注释2.1数据类型python中的数据类型分为4类,整型,浮点型,布尔型,字符串。整型、浮点型就不必多说了,和C完全相同。而python的布尔类型则是对真假的判断,True为真,False为假,并且他们True的值默认为1,False的值默认为0。除了以下图片里的布尔值为False,其余均为True字符串类型是不可变类型,可以用单引号、双引号,多引号来定义,其中单、双引号定义的字符串都必须在同一行,三引号定义的字符串可以在一行或者多行,如下图。不同类型的数据如果要一起使用必须转化为同一种类型,浮点数和整形会自动将结果转化为浮点型数据,其他的类型在可转化的前提下可以使用类型转化函数将数据进行类型转化。2.2基本操作符2.21算数操作符算数操作符中,最基本的加减乘、取模都与C相同。不同的是python中进行了除法分类,并加入了幂运算符。python将除法分为了整数除法(//)和普通除法(/),而整数除法就是向下取整,大家应该懂的,和C一样,而普通除法可以进行正常的运算,两个整数相除也可以得到浮点数。幂运算符(**)前面的操作数是幂运算的底数,后面的操作数是幂运算的次数。2.22逻辑操作符逻辑与and、逻辑或or、逻辑非not,分别对应C语言中的&,||,!运算符。而in则是用于判断一个元素是否在一个容器中,具体来说,可以用于判断元素是否在列表、字符串、元组、集合、字典中,notin正好相反,是判断元素是否不在容器中。2.23位操作符及操作符优先级python的位操作符与C是一样的,有&按位与,|按位或,^按位异或,~按位取反,<< 左移, >>右移。具体方法与C中是一样的,这里就不过多赘述。操作符的优先级严格按照下面的优先级进行运算,如果不确定或者要先计算优先级低的运算记得加括号。2.3注释python的注释方式也进行了改变,注释方式改为在语句前加#号在PyCharm中,对多段语句进行整体注释方式是Ctrl+/3.数据的存储python中数据如何存储python存储数据的逻辑图每个数据都有自己的id,而变量中存储的仅仅是这个数据的id,编译器通过这个id就找到了这块的数据,进而进行一系列操作,这里的id类似于C中的地址,而这样的访问方式类似于指针。可以用is来比较两个变量的id时候相等返回True,说明变量a和b访问是同一块内存空间,完全相等。在C中,数据会被存储到多个区域中,如堆区,栈区等等,下图为C中数据存储的区域python中也有大量的区域供使用者存储数据栈区:存储基本数据类型及其对象(如int、float、bool等),以及函数调用时的参数、返回值和局部变量等。栈内存自动分配和释放,具有快速的存取速度。堆区:存储复杂对象(如列表、元组、字典等)及其对象。堆内存的分配与释放由Python解释器自动进行,可以通过Python中的垃圾回收机制自动释放内存。数据区:存储全局变量和静态变量,以及常量等数据。代码区:存储Python的字节码,即转换成机器码之前的中间代码。在C中,需要手动分配和释放动态内存,而在Python中,内存管理是自动的,Python解释器会根据需要自动分配和释放内存。4.分支和循环分支和循环这里与C语言大同小异,逻辑上大同,语法规则上小异。4.1分支语句if-elsepython语法如下,与C相比,只是去掉了括号,如果if中包含多条语句,则可使用相同的缩进来代替C中的大括号。ifcondition:#codetobeexecutedifconditionisTrueelse:#codetobeexecutedifconditionisFalse1234其中,condition是一个表达式,如果结果为True,代码块1就会被执行,否则代码块2就会被执行。下面是一个示例:a=10ifa>0:print("aispositive")else:print("aisnotpositive")12345'运行运行python将elseif改成了elif语句,用于添加多个条件分支。条件表达式python中的条件表达式类似于C语言中的三目操作符例如,以下代码用条件表达式来检查变量x是否大于5,如果是,则将变量y的值设置为10,否则将其设置为0:x=7y=10ifx>5else0print(y)#输出10123'运行运行在这个例子中,条件表达式的条件是“x>5”,如果为True,则返回值为10(即“y=10”),否则返回值为0(即“y=0”)。但这种条件表达式只适用于较为简单的分支情况,更复杂的条件逻辑,应该使用if语句来代替。4.2循环while循环基本与C是一样的,一直循环某种结构,直到满足特定的条件为止。while条件:循环体12代码示例i=0whilei2}print(squares)123'运行运行添加条件x>2后,只有当x.2时,才进行迭代生成集合表达式。5.7切片字符串、列表、元组等有序数据结构中支持切片操作,切片可以获取这些有序数据结构的子序列。切片操作不会改变原序列,它会返回一个新序列,包含指定范围的元素。切片语法:string=str[start:stop:step]1start为切片的起始位置,stop为切片的结束位置(不包括该位置对应的元素),step为切片的步长。如果省略start,则默认为0;如果省略stop,则默认为序列的长度;如果省略step,则默认为1。6.函数——新瓶装旧酒同C语言一样,在Python中,函数是一种可重用的代码块,用于执行某些特定的任务。函数可以带有参数或不带参数,也可以返回值或不返回值。C语言函数详解函数定义的一般语法:defadd_numbers(num1,num2):"""Thisfunctionaddstwonumbers."""result=num1+num2returnresult1234'运行运行def:定义函数的关键字;function_name:函数名称,应以字母或下划线开头;parameters:函数参数,可以是一个或多个,也可以为空;docstring:函数文档字符串,对函数的功能进行描述,可选;statements:函数体,函数需要执行的代码语句。下面用python实现一个简易的计算器,帮助大家更好的理解函数#加法defadd(self,x,y):returnx+y#减法defsubtract(self,x,y):returnx-y#乘法defmultiply(self,x,y):returnx*y#除法defdivide(self,x,y):ify==0:return"除数不能为0"returnx/y#获取用户输入print("请选择运算:")print("1、加法")print("2、减法")print("3、乘法")print("4、除法")choice=input("请输入需要进行的运算符号(1/2/3/4):")num1=int(input("请输入第一个数字:"))num2=int(input("请输入第二个数字:"))#执行计算,传递两个参数num1和num2ifchoice=='1':print(num1,"+",num2,"=",add(num1,num2))elifchoice=='2':print(num1,"-",num2,"=",subtract(num1,num2))elifchoice=='3':print(num1,"*",num2,"=",multiply(num1,num2))elifchoice=='4':print(num1,"/",num2,"=",divide(num1,num2))else:print("请输入正确的选项")12345678910111213141516171819202122232425262728293031323334Python函数传参的特点如下:位置参数:按照形参定义位置传递的参数;关键字参数:按照形参名称传递的参数;默认参数:在函数定义时给形参指定默认值,如果没有传入对应的实参,则使用默认值;可变参数:*args,用来传递任意个参数,以元组的形式传递;关键字可变参数:**kwargs,用来传递任意个关键字参数,以字典的形式传递。位置实参:和C语言函数传参的规则相同,实参和形参一一对应将10传给形参a,20传给形参b关键字实参根据形参名进行实参传关键字实参的传参规则是,先在形参里找实参关键字,将找到的实参传递给对应形参,剩余的则进行依次传参。可变参数将形参定义为*args,可接受任意个实参传递,结果为一个元组。关键字可变实参将形参定义为**args,可接受任意个关键字实参,结果为一个字典。函数传参的内存图例如下面的代码deffun(arg1,arg2):print("agr1=",arg1,"agr2=",arg2)arg1=100arg2.append(10)print("agr1=",arg1,"agr2=",arg2)n1=10n2=[22,33,44]print("n1=",n1,"n2=",n2)fun(n1,n2)print("n1=",n1,"n2=",n2)12345678910'运行运行运行结果:说明同C语言一样,C中形参是实参的一份临时拷贝,对实参的改变不影响实参。在python程序中,实参是临时定义的一个与实参指向相同的变量,改变形参的指向不能改变实参的指向,但在形参指向的首地址后面添加或删除数据是可以的起到改变实参值的作用的,因为实参也是指向这块内存的首地址,但绝对改变不了实参的指向。
|
|