程序员python小课——零基础入门——学习笔记

你要偷偷的学Python,然后惊呆所有人(第一天)

2020-10-21  本文已影响0人  python阿喵

标题无意冒犯,就是觉得这个广告挺好玩的

好,切入正题

文章目录

前言

Python语言概览

Python语言的起源

数据类型

Number数据类型

容器数据类型

str 字符串型

元字符串

字符串的格式化

list 列表型([])

列表的修改

tuple 元组型 ( () )

set 集合型 ({})

dict 字典 ( {"aaa":"bbb",})

补充

四则运算

字符串拼接

强制类型转换

str()

int()

float()

总结一下

标准输入输出

print()函数

input()函数

注意点

控制语句

条件控制语句

if判断

if···else···

if···elif···else

if嵌套

for···in···循环

range()函数

循环使用 else 语句

while循环

其他

break

continue

pass

对比两种循环

练手小项目

前言

本系列文默认各位有一定的C或C++基础,因为我是学了点C++的皮毛之后入手的Python。

本系列文默认各位会百度,会用在线编译器,因为我是突击学Python的,之前的编译环境都删了,但是吧,我发现在线编译是真的爽,浪费那时间去搭那环境干啥,学好了Python,会差那点请人搭环境的钱吗?

如果大家在学习中遇到困难,想找一个python学习交流环境,可以加入我们的python圈,裙号930900780,可领取python学习资料,会节约很多时间,减少很多遇到的难题。

本系列也会着重培养各位的自主动手能力,毕竟我不可能把所有知识点都给你讲到,所以自己解决需求的能力就尤为重要,所以我在文中埋得坑请不要把它们看成坑,那是我留给你们的锻炼机会,请各显神通,自行解决。

Python语言概览

Python语言的起源

老生常谈了,但是追本溯源有时候会有它意想不到的好处,全在个人悟性了。

Python的作者,Guido von Rossum,确实是荷兰人。1982年,Guido从阿姆斯特丹大学(University of Amsterdam)获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。用他的话说,尽管拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的活儿。

在那个时候,他接触并使用过诸如Pascal、C、 Fortran等语言。这些语言的基本设计原则是让机器能更快运行。所有的编译器的核心是做优化,以便让程序能够运行。为了增进效率,语言也迫使程序员像计算机一样思考,以便能写出更符合机器口味的程序。在那个时代,程序员恨不得用手榨取计算机每一寸的能力。

然而,这种思考方式让Guido感到苦恼。Guido知道如何用C语言写出一个功能,但整个编写过程需要耗费大量的时间 。他的另一个选择是shell。然而,shell的本质是调用命令。它并不是一个真正的语言。比如说,shell没有数值型的数据类型,加法运算都很复杂。总之,shell不能全面的调动计算机的功能。

Guido希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻松的编程。

1989年,为了打发圣诞节假期,Guido开始写Python语言的编译/解释器。Python来自Guido所挚爱的电视剧Monty Python’s Flying Circus 。他希望这个新的叫做Python的语言,能实现他的理念(

一种C和shell之间,功能全面,易学易用,可拓展的语言)。Guido作为一个语言设计爱好者,已经有过设计语言的(不很成功)的尝试。这一次,也不过是一次纯粹的hacking行为。

1991年,第一个Python编译器(同时也是解释器)诞生。它是用C语言实现的,并能够调用C库(.so文件)。从一出生,Python已经具有了:类(class),函数(function),异常处理(exception),包括表(list)和词典(dictionary)在内的核心数据类型,以及模块(module)为基础的拓展系统。

数据类型

Number数据类型

int 整型 (正整形 0 负整型)

float 浮点型即小数

bool 布尔型 (True 真 False假)

插一个

complex 复数类型(这个我写代码两年多,也是没用过了)

#表达方式一:complexvar = 5 + 6j      complexvar = 3 - 2jprint(type(complexvar))print(id(complexvar))#表达方式二:  complex(实数,虚数)      res = complex(14,2)print(res)   => (14,2)12345678910

容器数据类型

str 字符串型

'''用引号引起来的就是字符串,三种引号:单引号  双引号  三引号'''转义字符:\  (1)把有意义的字符转变为无意义的字符        (2)把无意义的字符转变的有意义     \n  或者 \r\n :  代表"换行"意思     \t       :  代表"一个缩进"意思     \r       :  代表将\r后面得所有字符拉到该行首12345678

至于其他转义字符,这里不多赘述

特征:可以获取,但不可以修改,有序排列获取字符串中的数据:跟列表list元组tuple的取值一模一样(正向下标,反向下标)12

元字符串

‘’‘元字符串可以让转义字符失效’’’

字符串的格式化

“%d %f %s”  语法 : “字符串” % (实际值)

%d 占位符 d代表整型数据,%nd表示占n个位置

结果:XXX买了3个充气娃娃

%f 占位符 f代表浮点型数据 默认保留6位小数点,f前面有数值,则根据数值是多少保留对应小数点

结果:今天大白菜2.35元一斤

结果:今天大白菜2.3元一斤

%s 占位符 代表字符串

list 列表型([])

‘’‘特征:可以获取和修改数据,排列有序’’’

列表的修改

tuple 元组型 ( () )

‘’‘特征:可以获取但不能修改数据,排列有序’’’

获取元组中的数据 : 跟列表list的取值一模一样 (正向下标,反向下标)

set 集合型 ({})

setvar = {}     数据类型显示是一个dict 字典

特征:不可获取,也不可以修改,无序排列,自动去掉重复数据

dict 字典 ( {“aaa”:“bbb”,})

冒号左边是键,右边是值,键值对之间用逗号隔开

特征:可以获取,可以修改,无序排列底层使用了哈希算法,储存的数据是散列,键值对储存的数据获取字典当中的数据:可以获取,直接输入冒号左边的键即可取值的数据修改字典当中的数据:可以修改,直接将要改的值替换掉键就可实现修改一般在命名字典的键时,推荐使用字符串,按照变量命名的字符串.12345

补充

获取数据类型的函数:type()

获取变量地址的函数:id()

四则运算

不过,对于这么多的算术运算符,我建议你先看一遍,有个大致的印象就行。你可以先把这张图保存上,等用的时候再找出来,对应着查阅就可以。

咱们再说说一样的——运算优先级:Python世界的运算优先级,和我们平时的计算优先级是一样的。

字符串拼接

Python有一个很优秀的点我很喜欢,那就是它的字符串拼接。

曾经有人说,编程,说到底就是对字符串的操作,我觉得他说的很有道理,别看那些花里胡哨的,说到底都是操作字符串。

反正C/C++里的字符串操作已经让我喝好几壶了,还没喝够。

Python里面字符串拼接的方法可简单了,就是利用字符串拼接符号【+】,将需要拼接的变量连在一起就行了。

但是,既然是字符串拼接,那它的限制其实就很明显了,你得拿字符串来拼接。

那如果我要拿去拼的东西参差不齐呢?怎么办?别急

强制类型转换

负责转换数据类型的函数一共有3种:str()、 int()和float()。

str()

str()函数能将数据转换成其字符串类型,不管这个数据是int类型还是float类型,只要放到括号里。这个数据就能摇身一变,成为字符串类型。

是不是挺简单的?我们只需通过str(number)一个步骤,便可以将整数类型的【153】转化为字符串类型的【153】,成功完成数据拼接。

int()

将数据转换为整数类型的方法也很简单,就是int()函数。其使用方法同str()一样,将你需要转换的内容放在括号里就行,像这样:int(转换的内容)。

不过对于int()函数的使用,大家要注意一点:只有符合整数规范的字符串类数据,才能被int()强制转换。

别看它虽然只有一句话,但它其实带有三层含义:

首先,整数形式的字符串比如'6'和'1',可以被int()函数强制转换。其次,文字形式,比如中文、火星文或者标点符号,不可以被int()函数强制转换。最后,小数形式的字符串,由于Python的语法规则,也不能使用int()函数强制转换。123

虽然浮点形式的字符串,不能使用int()函数。但浮点数是可以被int()函数强制转换的(去尾法)

float()

首先float()函数的使用,也是将需要转换的数据放在括号里,像这样:float(数据)。其次,float()函数也可以将整数和字符串转换为浮点类型。但同时,如果括号里面的数据是字符串类型,那这个数据一定得是数字形式。12

那么,经过之前str()和int()操练,float()函数是不是好懂了一些?

总结一下

标准输入输出

好滴吧,可能有的人会犯嘀咕,为什么不讲输入输出。莫急嘛

print()函数

括号内是数字的情况print(520)括号内是单引号的情况。print('一起玩吧')括号内是双引号的情况。print("一起玩吧")括号内单双引号同时存在的情况。print("Let's play")当然,括号内也可以是三引号,参考上面单双同时出现的情况就知道了。12345678910111213

之所以现在才说输入输出,是因为这里面实在可以包含太多东西了,不要被上面的这几个例子所迷惑,print可以打印各种数据类型,参考本文前面出现的print()以及后面将会出现的print()

input()函数

首先,让我们通过一段代码,来看一看input()函数是如何使用的:

input('请在以下四个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字:')1

input()函数是输入函数。就上面例子来讲,它需要你输入针对括号内’请在以下四个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字:'的答案。

所以,当你在函数的括号内写出问题时,input()函数会将此问题原样显示在屏幕上,并在终端区域等待你针对此问题的回答。

可是,我们为什么要在终端处输入回答呢?不输入行不行?

事实上,我们可以把input()函数当作一扇

链接现实世界与代码世界的门。

当问题从代码世界传递给我们,可我们却没有回答时,这扇等待输入的input()大门,就会一直处于敞开状态,一直等着你往里送回答。

注意点

对于input()函数来说,不管我们输入的回答是什么,不管你输入的是整数1234,还是字符串『隐形斗篷是我最想拥有的魔法』,input()函数的输入值(搜集到的回答),永远会被【强制性】地转换为【字符串】类型。

这时候就要对输入的数据进行强制类型转换了:choice = int(input('请输入您的选择:'))

控制语句

条件控制语句

if判断

在这里,你可能注意到了一个细节:在条件判断代码中的冒号:后、下一行内容的前面,会空几个格,但这是为什么呢?

首先,在计算机的沟通语言中,空格的学名叫缩进,比如我们写文章都要空两个格,这就叫首行缩进。

icon

对于Python而言,冒号和缩进是一种语法。它会帮助Python区分代码之间的层次,理解条件执行的逻辑及先后顺序。【注:缩进是四个空格】这里建议不要用tab,就四个空格的事情嘛,年轻人那么懒干嘛,养成习惯之后很多地方受限制。

if···else···

很多时候,我们不能把鸡蛋放在一个篮子里,要做好两手准备:如果不满足条件时,我们要怎么办。

Python则很贴心地,让我们借用if…else…语句,让码农们有了另一种选择——【如果…不满足,就…】

在if…else条件语句中,if和else各自抱团,形成两个不同的代码块。表示的是条件和其他条件的互斥关系——如果不满足if条件,就执行else其他条件。

if···elif···else

在判断3个或3个以上的条件时,我们就需要借助Python中的多向判断命令:if…elif…else…。

当判断的条件超过3个时,中间的多个条件都可以使用elif。

elif后可不接else

if嵌套

像这种如果底下还有如果(即条件里还套条件)的情况,我们如何用Python把上面的规则写出来,并得出评价呢?

答案就是——嵌套条件。

for···in···循环

Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

for循环的语法格式如下:

for iterating_var in sequence:statements(s)12

forletterin'Python':# 第一个实例print('当前字母 :', letter) fruits = ['banana','apple','mango']forfruitinfruits:# 第二个实例print('当前水果 :', fruit)print("Good bye!")12345678

可以看出,模板中的iterating_var 是不用提前赋值的。

range()函数

使用range(a,b) 函数,你可以生成了一个【取头不取尾】的整数序列。

例如:

fori inrange(13,17):print(i)12

结果:13、14、15、16

range()函数还有一种用法,我们来直接体验一下:

fori inrange(0,10,3):print(i)12

这是一种切片方式,第三个参数被称作“步长”,即间隔多少取一个数。

那么这个代码执行的结果就是:0、3、6、9

循环使用 else 语句

在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。

fornum in range(10,20):# 迭代 10 到 20 之间的数字fori in range(2,num):# 根据因子迭代ifnum%i ==0:# 确定第一个因子j=num/i# 计算第二个因子print('%d 等于 %d * %d'% (num,i,j))break# 跳出当前循环else:# 循环的 else 部分print(num,'是一个质数')12345678

while循环

while循环和for循环差不多,不过这里的计数变量要初始化:

栗:

a=0#先定义变量a,并赋值whilea<5:#设定一个放行条件:a要小于5,才能办事a=a+1# 满足条件时,就办事:将a+1print(a)# 继续办事:将a+1的结果打印出来1234

很明显,while循环有2个要点:1.放行条件;2.办事流程。

和for循环一样,冒号和内部代码的缩进都是必不可少的。

其他

break

我们先来看看break语句。break的意思是“打破”,是用来结束循环的,一般写作if…break。它的写法长这样:

#break语句搭配for循环for...in...:    ...if...:break#break语句搭配while循环while...(条件):    ...if...:break1234567891011

在这里,if…break的意思是如果满足了某一个条件,就提前结束循环。记住,这个只能在循环内部使用。

continue

continue的意思是“继续”。这个子句也是在循环内部使用的。当某个条件被满足的时候,触发continue语句,将跳过之后的代码,直接回到循环的开始。

#continue语句搭配for循环for...in...:    ...if...:continue...#continue语句搭配while循环while...(条件):    ...if...:continue...12345678910111213

pass

pass语句就非常简单了,它的英文意思是“跳过”。

对比两种循环

for循环和while循环最大的区别在于【循环的工作量是否确定】,for循环就像空房间依次办理业务,直到把【所有工作做完】才下班。但while循环就像哨卡放行,【满足条件就一直工作】,直到不满足条件就关闭哨卡

练手小项目

接下来,我想先和你谈谈一个项目一般是怎么完成的。更具体的说,程序员是如何思考和解决问题的呢?

我认为其中一个很重要的能力是【问题拆解】。问题拆解,指的是在做一件事或面对一个问题的时候,将其拆解成多个步骤或多个层次,逐步执行和解决问题,直至达到最终效果。

写个什么小项目呢?

这样吧,猜数字游戏都玩过吧,就写一个猜数字游戏:

功能需求:

实现一个猜数字小游戏,随机生成一个0~100以内的数据,由玩家来猜,每次猜完之后计算机告诉玩家是猜大了还是猜小了,共5次机会,5次猜不出来宣布游戏失败。

很简单吧。

写好的也可以发在评论区哦

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程。想要这些资料的可以进裙930900780领取。

本文章素材来源于网络,如有侵权请联系删除。

上一篇下一篇

猜你喜欢

热点阅读