阅读目录
一编程与编程语言
二编程语言分类
三主流编程语言介绍
四python介绍
五安装python解释器
六第一个python程序
七变量
八用户与程序交互
九基本数据类型
十格式化输出
十一基本运算符
十二流程控制之if...else
十三流程控制之while循环
十四流程控制之for循环
十五开发工具IDE
十六扩展阅读
十七作业
#一编程与编程语言
python是一门编程语言,那什么是编程?为什么要编程?什么又是编程语言?
为什么要编程:
#人类因为本性的懒惰、或为了发展经济,或是为了解放劳动力、降低成本等等,需要控制(奴役)计算机让其帮忙干活。而计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别的表达方式传递给计算机,从而达到让计算机能够像人脑/电脑一样自动执行的效果。
什么是编程?
#编就是编写,就像我们通过嘴跟别人说话,编写就是通过键盘等交互方式跟计算机沟通,程就是程序,就像我们跟别人说过的一段话(用来沟通感情、请求帮助等),程序就是一套有规范格式,储存在计算机里用于跟计算机硬件沟通让其帮我们做某件事情的指令合辑(文件)。
#编程就是将我们的思维逻辑、思维方式,转化程计算机能理解的一段话,就是编写让计算机执行的指令。程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。
#强调:程序在未运行前跟普通文件无异,只有程序在运行时,文件内所写的字符才有特定的语法意义
什么是编程语言?
#就像跟中国人沟通我们需要汉语,跟英国人沟通我们需要英语,看日本电影的时候需要懂日语,编程语言就像汉语、英语、日语一样,它是人与计算机沟通交流的一种媒介,是让计算机理解我们~帮我们做事的,一套规范的、有着一定格式的沟通交流方式的合辑。
#能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。在编程的世界里,计算机更像是人的奴隶,人类编程的目的就命令奴隶去工作。
所以我有话对大家说
Python是语言,而学习语言的套路都是一样的,以英语学习为例,你需要学单词,然后学语法,最后写作文。
英语的单词---------->Python中的关键字
英语的语法---------->Python的语法
英语的作文---------->用Python语言写的程序
此时你心里应该有数了,学Python其实很简单,全都是在记忆一些固定的套路而已,那为何有的人会觉得Python难呢?来看一个普遍的问题,问题中包含答案。。。。。。
经常有学生问:老师,我上课都能听得懂,为啥我就是不会写程序。
我:你这不废话么!
你学完了英语的单词、语法、还有写作文的方式,你能立刻写出一篇优美的作文吗?当然不能,那么问题出在哪里呢?
你想想,你现在用汉语跟我沟通,脑子里会不会分神去琢磨某个汉字的意思,汉语的语法应该怎样?你当然不会,你脑子里想到什么,就会很自然地将它表达出来,因为你已经足够熟练,汉语的文字、单词、语法等已经深深地植入了你的意识里。学英语,学Python都是一样的道理,你以为你会了,你可能确实会了,但你远没有达到烂熟于心的地步,因此你在写程序的时候需要考虑的是关键字的用法、语法结构,而我则只需要考虑我脑子里的逻辑如何安排,逻辑走通了程序自然就表达出来了,我完全不会考虑关键字或语法什么的,它就像是我的器官一样,我不会在想吃饭的时候考虑应该用锭眼吃还是用嘴吃,这就是你跟我的差别。
那有何好的解决方法呢?答:没有。不下狠心翻来覆去练习,知识是无法根植于你的潜意识的,你也永远无法自己写程序,就跟当年郭靖学降龙十八掌一样,洪七公要他打200下,他能打1000下,屌丝到不能再屌丝的你,没有这点意志力,就别妄想咸鱼翻身了。。。。。。
附一句:我不知道成功有没有捷径,但我确定学Python没有,没有几万行代码的洗礼,你不可能成为一名优秀的程序员,这就是我想对你说的。
ViewCode
#二编程语言分类
编程的语言的发展经历了
#机器语言:站在计算机(奴隶)的角度,说计算机能听懂的语言(计算机只能识别高电平和低电平),那就是直接用二进制编程(1,0),直接操作硬件;
#汇编语言:站在计算机(奴隶)的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作硬件;
#高级语言:站在人(奴隶主)的角度,说人话,即用人类的字符去编写程序,屏蔽硬件的操作(间接操作硬件)。
高级语言更贴近人类语言,因而造成了:它必须被翻译成计算机能读懂二进制后,才能被执行,按照翻译方式分为
#1.编译型(需要编译器,相当于用谷歌翻译):如C,执行速度快,调试麻烦
#2.解释型(需要解释器,相当于同声传译):如python,执行速度慢,调试方便
总结:
机器语言
#优点是最底层,执行速度最快
#缺点是最复杂,开发效率最低
汇编语言
#优点是比较底层,执行速度最快
#缺点是复杂,开发效率最低
高级语言
#编译型语言执行速度快,不依赖语言环境运行,跨平台差
#解释型跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行
PS:
学习难度从高到低
执行效率从高到低
开发效率从低到高
现在市场竞争越来越激烈,一个月就出Demo,和半年才开发出Demo,差距越来越大,可能更快的打开用户心智,获得市场。
速度不是关键(瓶颈理论),开发效率高才是王道
#机器语言
由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算机的机器语言,用机器语言编程的程序称为目标程序。只有目标程序才能被计算机直接识别和执行。但是机器语言编写的程序无明显特征,难以记忆,不便阅读和书写,且依赖于具体机种,局限性很大,机器语言属于低级语言。
用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些0和1的指令代码,直观性差,还容易出错。除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。
机器语言是微处理器理解和使用的,用于控制它的操作二进制代码。
尽管机器语言好像是很复杂的,然而它是有规律的。
存在着多至100000种机器语言的指令。这意味着不能把这些种类全部列出来。
以下是一些示例:
指令部份的示例
0000代表加载(LOAD)
0001代表存储(STORE)
...
暂存器部份的示例
0000代表暂存器A
0001代表暂存器B
...
存储器部份的示例
000000000000代表地址为0的存储器
000000000001代表地址为1的存储器
000000010000代表地址为16的存储器
100000000000代表地址为2^11的存储器
集成示例
0000,0000,000000010000代表LOADA,16
0000,0001,000000000001代表LOADB,1
0001,0001,000000010000代表STOREB,16
0001,0001,000000000001代表STOREB,1[1]
#汇编语言
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作。例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能够实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
汇编的helloworld,打印一句helloworld,需要写十多行,也是醉了。
;hello.asm
section.data;数据段声明
msgdb"Hello,world!",0xA;要输出的字符串
lenequ$-msg;字串长度
section.text;代码段声明
global_start;指定入口函数
_start:;在屏幕上显示一个字符串
movedx,len;参数三:字符串长度
movecx,msg;参数二:要显示的字符串
movebx,1;参数一:文件描述符(stdout)
moveax,4;系统调用号(sys_write)
int0x80;调用内核功能
;退出程序
movebx,0;参数一:退出代码
moveax,1;系统调用号(sys_exit)
int0x80;调用内核功能
#高级语言
高级语言是大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,像最简单的编程语言PASCAL语言也属于高级语言。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:
编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行(编译后生成的可执行文件,是cpu可以理解的2进制的机器码组成的),使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(*.obj,也就是OBJ文件)才能执行,只有目标文件而没有源代码,修改很不方便。
编译后程序运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器(想运行,必须先装上解释器,就像跟老外说话,必须有翻译在场),但这种方式比较灵活,可以动态地调整、修改应用程序。如Python、Java、PHP、Ruby等语言。
机器语言、汇编语言、高级语言详解
#三主流编程语言介绍
世界上的编程语言有600多种,但真正大家主流在使用的最多二三十种,不同的语言有自己的特点和擅长领域,随着计算机的不断发展,新语言在不断诞生,也同时有很多老旧的语言慢慢无人用了。有个权威的语言排名网站,可以看到主流的编程语言是哪些
*2018年5月数据(https://www.tiobe.com/tiobe-index/)
长期语言排名
#C语言:
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
#C++:
C++是C语言的继承的扩展,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。
C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
#JAVA:
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
#PHP:
PHP(外文名:PHP:HypertextPreprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域
Ruby:
Ruby是开源的,在Web上免费提供,但需要一个许可证。[4]
Ruby是一种通用的、解释的编程语言。
Ruby是一种真正的面向对象编程语言。
Ruby是一种类似于Python和Perl的服务器端脚本语言。
Ruby可以用来编写通用网关接口(CGI)脚本。
Ruby可以被嵌入到超文本标记语言(HTML)。
Ruby语法简单,这使得新的开发人员能够快速轻松地学习Ruby
#GO:
Go是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go是从2007年末由RobertGriesemer,RobPike,KenThompson主持开发,后来还加入了IanLanceTaylor,RussCox等人,并最终于2009年11月开源,在2012年早些时候发布了Go1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。
由其擅长并发编程
#Python:
Python是一门优秀的综合语言,Python的宗旨是简明、优雅、强大,在人工智能、云计算、金融分析、大数据开发、WEB开发、自动化运维、测试等方向应用广泛,已是全球第4大最流行的语言。
几个主流的编程语言介绍
#四python介绍
介绍
python的创始人为吉多·范罗苏姆(GuidovanRossum)。1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器。Python这个名字,来自Guido所挚爱的电视剧MontyPython’sFlyingCircus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。
最新的TIOBE排行榜,Python赶超PHP占据第4,Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。
Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。
目前Python主要应用领域
#1.WEB开发——最火的Pythonweb框架Django,支持异步高并发的Tornado框架,短小精悍的flask,bottle,Django官方的标语把Django定义为theframeworkforperfectionistwithdeadlines(大意是一个为完全主义者开发的高效率web框架)
#2.网络编程——支持高并发的Twisted网络框架,py3引入的asyncio使异步编程变的非常简单
#3.爬虫——爬虫领域,Python几乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib等,想爬啥就爬啥
#4.云计算——目前最火最知名的云计算框架就是OpenStack,Python现在的火,很大一部分就是因为云计算
#5.人工智能——谁会成为AI和大数据时代的第一开发语言?这本已是一个不需要争论的问题。如果说三年前,Matlab、Scala、R、Java和Python还各有机会,局面尚且不清楚,那么三年之后,趋势已经非常明确了,特别是前两天Facebook开源了PyTorch之后,Python作为AI时代头牌语言的位置基本确立,未来的悬念仅仅是谁能坐稳第二把交椅。
#6.自动化运维——问问中国的每个运维人员,运维人员必须会的语言是什么?10个人相信会给你一个相同的答案,它的名字叫Python
#7.金融分析——我个人之前在金融行业,10年的时候,我们公司写的好多分析程序、高频交易软件就是用的Python,到目前,Python是金融分析、量化交易领域里用的最多的语言
#8.科学运算——你知道么,97年开始,NASA就在大量使用Python在进行各种复杂的科学运算,随着NumPy,SciPy,Matplotlib,Enthoughtlibrarys等众多程序库的开发,使的Python越来越适合于做科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛
#9.游戏开发——在网络游戏开发中Python也有很多应用。相比LuaorC++,Python比Lua有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,与Lua相比,Python更适合作为一种Host语言,即程序的入口点是在Python那一端会比较好,然后用C/C++在非常必要的时候写一些扩展。Python非常适合编写1万行以上的项目,而且能够很好地把网游项目的规模控制在10万行代码以内。另外据我所知,知名的游戏<文明>就是用Python写的
ViewCode
Python在一些公司的应用
#谷歌:GoogleAppEngine、code.google.com、Googleearth、谷歌爬虫、Google广告等项目都在大量使用Python开发
#CIA:美国中情局网站就是用Python开发的
#NASA:美国航天局(NASA)大量使用Python进行数据分析和运算
#YouTube:世界上最大的视频网站YouTube就是用Python开发的
#Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
#Instagram:美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用python开发
#Facebook:大量的基础库均通过Python实现的
#Redhat:世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的
#豆瓣:公司几乎所有的业务均是通过Python开发的
#知乎:国内最大的问答社区,通过Python开发(国外Quora)
#春雨医生:国内知名的在线医疗网站是用Python开发的
#除上面之外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务。
ViewCode
Python(解释器)的发展史
#1989年,Guido开始写Python语言的编译器。
#1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
#GranddaddyofPythonwebframeworks,Zope1wasreleasedin1999
#Python1.0-January1994增加了lambda,map,filterandreduce.
#Python2.0-October16,2000,加入了内存回收机制,构成了现在Python语言框架的基础
#Python2.4-November30,2004,同年目前最流行的WEB框架Django诞生
#Python2.5-September19,2006
#Python2.6-October1,2008
#Python2.7-July3,2010
#InNovember2014,itwasannouncedthatPython2.7wouldbesupporteduntil2020,andreaffirmedthattherewouldbeno2.8releaseasuserswereexpectedtomovetoPython3.4+assoonaspossible
#Python3.0-December3,2008(这里要解释清楚为什么08年就出3.0,2010年反而又推出了2.7?是因为3.0不向下兼容2.0,导致大家都拒绝升级3.0,无奈官方只能推出2.7过渡版本)
#Python3.1-June27,2009
#Python3.2-February20,2011
#Python3.3-September29,2012
#Python3.4-March16,2014
#Python3.5-September13,2015
#Python3.6-2016-12-23发布python3.6.0版
ViewCode
Pyhton的发展前景怎么样?
#知乎上有一篇文章,问Python未来10年的发展前景,Alex强烈要求我告诉你们去看看他的回答
#未来十年Python的前景会怎样?https://www.zhihu.com/question/22112542/answer/166053516
Python有哪些种类?
我们现在知道了Python是一门解释型语言,代码想运行,必须通过解释器执行,Python的解释器本身也可以看作是个程序(翻译官司是哪国人不重要),这个程序是什么语言开发的呢?答案是好几种语言?what?因为Python有好几种解释器,分别基于不同语言开发,每个解释器特点不同,但都能正常运行我们的Python代码,下面分别来看下:
#CPython:CPython是使用最广且被的Python解释器。本教程以CPython为准。
当我们从Python官方网站下载并安装好Python2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
#IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython用>>>作为提示符,而IPython用In[序号]:作为提示符。
#PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
#Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
#IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
ViewCode
Python2orPython3?
Insummary:Python2.xislegacy,Python3.xisthepresentandfutureofthelanguage
Python3.0wasreleasedin2008.Thefinal2.xversion2.7releasecameoutinmid-2010,withastatementof
extendedsupportforthisend-of-liferelease.The2.xbranchwillseenonewmajorreleasesafterthat.3.xis
underactivedevelopmentandhasalreadyseenoverfiveyearsofstablereleases,includingversion3.3in2012,+
3.4in2014,and3.5in2015.Thismeansthatallrecentstandardlibraryimprovements,forexample,areonly
availablebydefaultinPython3.x.
GuidovanRossum(theoriginalcreatorofthePythonlanguage)decidedtocleanupPython2.xproperly,withlessregardforbackwardscompatibilitythanisthecasefornewreleasesinthe2.xrange.ThemostdrasticimprovementisthebetterUnicodesupport(withalltextstringsbeingUnicodebydefault)aswellassanerbytes/Unicodeseparation.
Besides,severalaspectsofthecorelanguage(suchasprintandexecbeingstatements,integersusingfloordivision)havebeenadjustedtobeeasierfornewcomerstolearnandtobemoreconsistentwiththerestofthelanguage,andoldcrufthasbeenremoved(forexample,allclassesarenownew-style,"range()"returnsamemoryefficientiterable,notalistasin2.x).
目前虽然业内很多企业还在大量使用Python2.6or2.7,因为旧项目几十万甚至上百万行的代码想快速升级到3.0不是件容易的事,但是大家在开发新项目时几乎都会使用3.x。
另外Python3确实想比2.x做了很多的改进,直观点来讲,就像从XP升级到Win7的感觉一样,棒棒的。
Py2和Py3的具体细节区别我们在以后课程中会慢慢深入。
ViewCode
#五安装python解释器
Python目前已支持所有主流操作系统,在Linux,Unix,Mac系统上自带Python环境,在Windows系统上需要安装一下,超简单
打开官网https://www.python.org/downloads/windows/下载中心
#测试安装是否成功
windows-->运行-->输入cmd,然后回车,弹出cmd程序,输入python,如果能进入交互环境,代表安装成功。
#多版本共存演示
注意:在安装目录下找到python.exe,拷贝一份,命名为python2.exe或python3.exe,一定要保留原版,因为pip工具会调用它。
#六第一个python程序
#进入解释器的交互式模式:调试方便,无法永久保存代码
#脚本文件的方式(使用nodpad++演示):永久保存代码
强调:python解释器执行程序是解释执行,即打开文件读内容,因此文件的后缀名没有硬性限制,但通常定义为.py结尾
1#C++
2#include<iostream>
3intmain(void)
4{
5std::cout<<"Helloworld";
6}
7
8#C
9#include<stdio.h>
10intmain(void)
11{
12printf("\nhelloworld!");
13return0;
14}
15
16#JAVA
17publicclassHelloWorld{
18//程序的入口
19publicstaticvoidmain(Stringargs[]){
20//向控制台输出信息
21System.out.println("HelloWorld!");
22}
23}
24
25#PHP
26<?php
27echo"helloworld!";
28?>
29
30#Ruby
31日本人开发的,砸日本车的时候,顺手就把你拖出去打死了,祭天
32puts"Helloworld."
33
34#GO
35packagemain
36import"fmt"
37funcmain(){
38
39fmt.Printf("HelloWorld!\nGodBlessYou!");
40
41}
#七变量
什么是变量?
#变量即变化的量,核心是“变”与“量”二字,变即变化,量即衡量状态。
为什么要有变量?
#程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态以及状态的变化。
#比如:
英雄的等级为1,打怪升级(变)为10
僵尸的存活状态True,被植物打死了,于是变为False
人的名字为egon,也可以修改为Egon
如何定义变量?(图解)
1#变量名(相当于门牌号,指向值所在的空间),等号,变量值
2name='Egon'
3sex='male'
4age=18
5level=10
变量的定义规范
#1.变量名只能是字母、数字或下划线的任意组合
#2.变量名的第一个字符不能是数字
#3.关键字不能声明为变量名['and','as','assert','break','class','continue','def','del','elif','else','except','exec','finally','for','from','global','if','import','in','is','lambda','not','or','pass','print','raise','return','try','while','with','yield']
定义方式:
#驼峰体
AgeOfOldboy=56
NumberOfStudents=80
#下划线(推荐使用)
age_of_oldboy=56
number_of_students=80
定义变量名不好的方式
#1.变量名为中文、拼音
#2.变量名过长
#3.变量名词不达意
定义变量会有:id,type,value
#1等号比较的是value,
#2is比较的是id
#强调:
#1.id相同,意味着type和value必定相同
#2.value相同type肯定相同,但id可能不同,如下
>>>x='InfoEgon:18'
>>>y='InfoEgon:18'
>>>id(x)
4376607152
>>>id(y)
4376607408
>>>
>>>x==y
True
>>>xisy
False
#1、在交互式模式下
Python实现int的时候有个小整数池。为了避免因创建相同的值而重复申请内存空间所带来的效率问题,Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被GC回收
每创建一个-5到256之间的整数,都是直接从这个池里直接拿走一个值,例如
>>>y=4
>>>id(y)
4297641184
>>>
>>>x=3
>>>x+=1
>>>id(x)
4297641184
#在pycharm中
但在pycharm中运行python程序,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究
小整数池
变量的修改与内存管理(引用计数与垃圾回收机制)
#图解...
常量
常量即指不变的量,如pai3.141592653...,或在程序运行过程中不会改变的量
举例,假如老男孩老师的年龄会变,那这就是个变量,但在一些情况下,他的年龄不会变了,那就是常量。在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量
AGE_OF_OLDBOY=56
#ps:在c语言中有专门的常量定义语法,constintcount=60;一旦定义为常量,更改即会报错
#八用户与程序交互
什么是交互程序?
#人跟计算机交流所使用的一段话(程序、文件),当我们去银行ATM机取钱的时候,我们需要输入账户、密码,这个就是用户与程序的交互。
为什么需要交互程序?
#群众的力量是强大的,人之所以成为人,首先是会合作,然后是使用工具,最后合作使用工具,通过交互程序,人能通过计算机的自动化程序、通过计算机网络通过跟更多的人合作完成一个人完全无法实现的工作。
怎么用交互程序?
#在python3中
input:用户输入任何值,都存成字符串类型
#在python2中
input:用户输入什么类型,就存成什么类型
raw_input:等于python3的input
a=input('Pleaseinputastring:>>>')
print(a)
注释
1、什么是注释?
#通过用自己熟悉的语言(汉语大白话),在程序中对某些代码(Python语法语言)进行标注说明,从而让自己更好的理解这段代码,进而大大增强程序的可读性。
2、为什么要使用注释?
#2.1当我们投入一家新公司从事编程工作,如果别人不注释,你很有可能不知道这段代码是什么意思;
#2.2方便自己查看和理解过去写的代码;
#2.3互联网人才流动大,一个项目多是由几个甚至几十个开发人员一起做,你要调用别人写的代码,别人也要用你的,如果代码不加注释,你自己都看不懂,更别说别人了,公司为了项目能更好维护,需要适当写注释,以方便工作的交接。
3、怎么使用注释?
#代码注释分单行和多行注释,单行注释用#,
#这是一行注释
print("Hello,World!")
4、还可以用三对双引号""""""
'''
Python多行注释用三对单引号
Python多行注释用三对单引号
Python多行注释用三对单引号
'''
5、代码注释的原则:
#1.不用全部加注释,只需要在自己觉得重要或不好理解的部分加注释即可
#2.注释可以用中文或英文,但不要用拼音
文件头
#!/usr/bin/envpython
#-*-coding:utf-8-*-
#九基本数据类型
9.0什么是数据?为何要有多种类型的数据?
#数据本质就是把事物通过量化的方式表现出来,事物是多种多样的,所以需要通过他们包含的相同特征进行分类,从而方便人们的辨识和统计。
#数据即变量的值,如age=18,18则是我们保存的数据。
#变量的是用来反映/保持状态以及状态变化的,毫无疑问针对不同的状态就应该用不同类型的数据去标识
什么是数据?为何要有多种类型的数据?
9.1数字类型
1、作用:
年龄,等级,身份证号,qq号,个数
2、定义:
age=18print(type(age))
<class'int'>
int整型(全称integer)
作用:
工资,身高,体重,
定义:
salary=3.1#salary=float(3.1)
height=18.1
print(type(age))
<class'float'>
float浮点型
#int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
#long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
注意:在Python3里不再有long类型了,全都是int
>>>a=2**64
>>>type(a)#type()是查看数据类型的方法
<type'long'>
>>>b=2**60
>>>type(b)
<type'int'>
#complex复数型
>>>x=1-2j
>>>x.imag
-2.0
>>>x.real
1.0
其他数据类型(了解部分)
9.2字符串
#在python中,加了引号的字符就是字符串类型,python并没有字符类型。
定义:name='Ryan'#name=str('Ryan')
用于标识:描述性的内容,如姓名,性别,国籍,种族
#在python中,加了引号的字符就是字符串类型,python并没有字符类型。
定义:name='egon'#name=str('egon')
用于标识:描述性的内容,如姓名,性别,国籍,种族
#那单引号、双引号、多引号有什么区别呢?让我大声告诉你,单双引号木有任何区别,只有下面这种情况你需要考虑单双的配合
msg="MynameisEgon,I'm18yearsold!"
#多引号什么作用呢?作用就是多行字符串必须用多引号
msg='''
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
'''
print(msg)
单引号,双引号,三引号的区别
#数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what?是的,但只能进行"相加"和"相乘"运算。
>>>name='egon'
>>>age='18'
>>>name+age#相加其实就是简单拼接
'egon18'
>>>name*5
'egonegonegonegonegon'
字符串拼接(只能在字符串之间进行,且只能相加或相乘)
9.3列表
#在[]内用逗号分隔,可以存放n个任意类型的值
定义:students=['egon','alex','wupeiqi',]#students=list(['egon','alex','wupeiqi',])
用于标识:存储多个值的情况,比如一个人有多个爱好
列表嵌套、取值
#存放多个学生的信息:姓名,年龄,爱好
>>>students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]]
>>>students_info[0][2][0]#取出第一个学生的第一个爱好
'play'
列表嵌套、取值
9.4字典
#为何还要用字典?
存放一个人的信息:姓名,性别,年龄,很明显是多个值,既然是存多个值,我们完全可以基于刚刚学习的列表去存放,如下
>>>info=['egon','male',18]
定义列表的目的不单单是为了存,还要考虑取值,如果我想取出这个人的年龄,可以用
>>>info[2]
18
但这是基于我们已经知道在第3个位置存放的是年龄的前提下,我们才知道索引2对应的是年龄
即:
#name,sex,age
info=['egon','male',18]
而这完全只是一种假设,并没有真正意义上规定第三个位置存放的是年龄,于是我们需要寻求一种,即可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,比如key=value,这就用到了字典
#在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型
定义:info={'name':'egon','age':18,'sex':18}#info=dict({'name':'egon','age':18,'sex':18})
用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值
1info={
2'name':'egon',
3'hobbies':['play','sleep'],
4'company_info':{
5'name':'Oldboy',
6'type':'education',
7'emp_num':40,
8}
9}
10print(info['company_info']['name'])#取公司名
11
12
13students=[
14{'name':'alex','age':38,'hobbies':['play','sleep']},
15{'name':'egon','age':18,'hobbies':['read','sleep']},
16{'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']},
17]
18print(students[1]['hobbies'][1])#取第二个学生的第二个爱好
字典相关的嵌套、取值
布尔
#布尔值,一个True一个False
#计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,人脑的主要作用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识
>>>a=3
>>>b=5
>>>
>>>a>b#不成立就是False,即假
False
>>>
>>>a<b#成立就是True,即真
True
接下来就可以根据条件结果来干不同的事情了:
ifa>b
print(aisbiggerthanb)
else
print(aissmallerthanb)
上面是伪代码,但意味着,计算机已经可以像人脑一样根据判断结果不同,来执行不同的动作。
布尔类型的重点知识!!!:
#所有数据类型都自带布尔值
1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
2、其余均为真
重点:
#1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
#2.不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)
#十格式化输出
程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式
比如要求用户输入用户名和年龄,然后打印如下格式:
Mynameisxxx,myageisxxx.
很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,无法放到指定的xxx位置,而且数字也必须经过str(数字)的转换才能与字符串进行拼接。
这就用到了占位符,如:%s、%d
#%s字符串占位符:可以接收字符串,也可接收数字
print('Mynameis%s,myageis%s'%('egon',18))
#%d数字占位符:只能接收数字
print('Mynameis%s,myageis%d'%('egon',18))
print('Mynameis%s,myageis%d'%('egon','18'))#报错
#接收用户输入,打印成指定格式
name=input('yourname:')
age=input('yourage:')#用户输入18,会存成字符串18,无法传给%d
print('Mynameis%s,myageis%s'%(name,age))
#注意:
#print('Mynameis%s,myageis%d'%(name,age))#age为字符串类型,无法传给%d,所以会报错
练习:用户输入姓名、年龄、工作、爱好,然后打印成以下格式
------------infoofEgon-----------
Name:Egon
Age:22
Sex:male
Job:Teacher
-------------end-----------------
小练习
#十一基本运算符
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算
算数运算
以下假设变量:a=10,b=20
比较运算
以下假设变量:a=10,b=20
赋值运算
以下假设变量:a=10,b=20
逻辑运算
#三者的优先级从高到低分别是:not,or,and
>>>3>4and4>3or1==3and'x'=='x'or3>3
False
#最好使用括号来区别优先级,其实意义与上面的一样
>>>(3>4and4>3)or((1==3and'x'=='x')or3>3)
False
身份运算
#is比较的是id
#而==比较的是值
#十二流程控制之if...else
既然我们编程的目的是为了控制计算机能够像人脑一样工作,那么人脑能做什么,就需要程序中有相应的机制去模拟。人脑无非是数学运算和逻辑运算,对于数学运算在上一节我们已经说过了。对于逻辑运算,即人根据外部条件的变化而做出不同的反映,比如
1如果:女人的年龄>30岁,那么:叫阿姨
1age_of_girl=31
2ifage_of_girl>30:
3print('阿姨好')
2如果:女人的年龄>30岁,那么:叫阿姨,否则:叫小姐
1age_of_girl=18
2ifage_of_girl>30:
3print('阿姨好')
4else:
5print('小姐好')
3如果:女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨
1age_of_girl=18
2height=171
3weight=99
4is_pretty=True
5ifage_of_girl>=18andage_of_girl<22andheight>170andweight<100andis_pretty==True:
6print('表白...')else:
7print('阿姨好')
1#在表白的基础上继续:
2#如果表白成功,那么:在一起
3#否则:打印。。。
4
5age_of_girl=18
6height=171
7weight=99
8is_pretty=True
9
10success=False
11
12ifage_of_girl>=18andage_of_girl<22andheight>170andweight<100andis_pretty==True:
13ifsuccess:
14print('表白成功,在一起')
15else:
16print('什么爱情不爱情的,爱nmlgb的爱情,爱nmlg啊...')
17else:
18print('阿姨好')
if套if
4如果:成绩>=90,那么:优秀
如果成绩>=80且<90,那么:良好
如果成绩>=70且<80,那么:普通
其他情况:很差
1score=input('>>:')
2score=int(score)
3
4ifscore>=90:
5print('优秀')
6elifscore>=80:
7print('良好')
8elifscore>=70:
9print('普通')
10else:
11print('很差')
ViewCode
if条件1:
缩进的代码块
elif条件2:
缩进的代码块
elif条件3:
缩进的代码块
......
else:
缩进的代码块
1#!/usr/bin/envpython
2
3name=input('请输入用户名字:')
4password=input('请输入密码:')
5
6ifname=='egon'andpassword=='123':
7print('egonloginsuccess')
8else:
9print('用户名或密码错误')
练习一:用户登陆验证
1#!/usr/bin/envpython
2#根据用户输入内容打印其权限
3
4'''
5egon-->超级管理员
6tom-->普通管理员
7jack,rain-->业务主管
8其他-->普通用户
9'''
10name=input('请输入用户名字:')
11
12ifname=='egon':
13print('超级管理员')
14elifname=='tom':
15print('普通管理员')
16elifname=='jack'orname=='rain':
17print('业务主管')
18else:
19print('普通用户')
练习二:根据用户输入内容输出其权限
#如果:今天是Monday,那么:上班
#如果:今天是Tuesday,那么:上班
#如果:今天是Wednesday,那么:上班
#如果:今天是Thursday,那么:上班
#如果:今天是Friday,那么:上班
#如果:今天是Saturday,那么:出去浪
#如果:今天是Sunday,那么:出去浪
#方式一:
today=input('>>:')
iftoday=='Monday':
print('上班')
eliftoday=='Tuesday':
print('上班')
eliftoday=='Wednesday':
print('上班')
eliftoday=='Thursday':
print('上班')
eliftoday=='Friday':
print('上班')
eliftoday=='Saturday':
print('出去浪')
eliftoday=='Sunday':
print('出去浪')
else:
print('''必须输入其中一种:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
''')
#方式二:
today=input('>>:')
iftoday=='Saturday'ortoday=='Sunday':
print('出去浪')
eliftoday=='Monday'ortoday=='Tuesday'ortoday=='Wednesday'\
ortoday=='Thursday'ortoday=='Friday':
print('上班')
else:
print('''必须输入其中一种:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
''')
#方式三:
today=input('>>:')
iftodayin['Saturday','Sunday']:
print('出去浪')
eliftodayin['Monday','Tuesday','Wednesday','Thursday','Friday']:
print('上班')
else:
print('''必须输入其中一种:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
''')
练习三
#十三流程控制之while循环
1为何要用循环
#上节课我们已经学会用if..else来猜年龄的游戏啦,但是只能猜一次就中的机率太小了,如果我想给玩家3次机会呢?就是程序启动后,玩家最多可以试3次,这个怎么弄呢?你总不会想着把代码复制3次吧。。。。
age_of_oldboy=48
guess=int(input(">>:"))
ifguess>age_of_oldboy:
print("猜的太大了,往小里试试...")
elifguess<age_of_oldboy:
print("猜的太小了,往大里试试...")
else:
print("恭喜你,猜对了...")
#第2次
guess=int(input(">>:"))
ifguess>age_of_oldboy:
print("猜的太大了,往小里试试...")
elifguess<age_of_oldboy:
print("猜的太小了,往大里试试...")
else:
print("恭喜你,猜对了...")
#第3次
guess=int(input(">>:"))
ifguess>age_of_oldboy:
print("猜的太大了,往小里试试...")
elifguess<age_of_oldboy:
print("猜的太小了,往大里试试...")
else:
print("恭喜你,猜对了...")
#即使是小白的你,也觉得的太low了是不是,以后要修改功能还得修改3次,因此记住,写重复的代码是程序员最不耻的行为。
那么如何做到不用写重复代码又能让程序重复一段代码多次呢?循环语句就派上用场啦
2条件循环:while,语法如下
while条件:
#循环体
#如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件。。。
#如果条件为假,那么循环体不执行,循环终止
#打印0-10
count=0
whilecount<=10:
print('loop',count)
count+=1
#打印0-10之间的偶数
count=0
whilecount<=10:
ifcount%2==0:
print('loop',count)
count+=1
#打印0-10之间的奇数
count=0
whilecount<=10:
ifcount%2==1:
print('loop',count)
count+=1
3死循环
importtime
num=0
whileTrue:
print('count',num)
time.sleep(1)
num+=1
4循环嵌套与tag
tag=True
whiletag:
......
whiletag:
........
whiletag:
tag=False
ViewCode
#练习,要求如下:
1循环验证用户输入的用户名与密码
2认证通过后,运行用户重复执行命令
3当用户输入命令为quit时,则退出整个程序
#实现一:
name='egon'
password='123'
whileTrue:
inp_name=input('用户名:')
inp_pwd=input('密码:')
ifinp_name==nameandinp_pwd==password:
whileTrue:
cmd=input('>>:')
ifnotcmd:continue
ifcmd=='quit':
break
print('run<%s>'%cmd)
else:
print('用户名或密码错误')
continue
break
#实现二:使用tag
name='egon'
password='123'
tag=True
whiletag:
inp_name=input('用户名:')
inp_pwd=input('密码:')
ifinp_name==nameandinp_pwd==password:
whiletag:
cmd=input('>>:')
ifnotcmd:continue
ifcmd=='quit':
tag=False
continue
print('run<%s>'%cmd)
else:
print('用户名或密码错误')
ViewCode
4break与continue
#break用于退出本层循环
whileTrue:
print"123"
break
print"456"
#continue用于退出本次循环,继续下一次循环
whileTrue:
print"123"
continue
print"456"
ViewCode
5while+else
#与其它语言else一般只与if搭配不同,在Python中还有个while...else语句,while后面的else作用是指,当while循环正常执行完,中间没有被break中止的话,就会执行else后面的语句
count=0
whilecount<=5:
count+=1
print("Loop",count)
else:
print("循环正常执行完啦")
print("-----outofwhileloop------")
输出
Loop1
Loop2
Loop3
Loop4
Loop5
Loop6
循环正常执行完啦
-----outofwhileloop------
#如果执行过程中被break啦,就不会执行else的语句啦
count=0
whilecount<=5:
count+=1
ifcount==3:break
print("Loop",count)
else:
print("循环正常执行完啦")
print("-----outofwhileloop------")
输出
Loop1
Loop2
-----outofwhileloop------
ViewCode
6while循环练习题
#1.使用while循环输出1234568910
#2.求1-100的所有数的和
#3.输出1-100内的所有奇数
#4.输出1-100内的所有偶数
#5.求1-2+3-4+5...99的所有数的和
#6.用户登陆(三次机会重试)
#7:猜年龄游戏
要求:
允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出
#8:猜年龄游戏升级版
要求:
允许用户最多尝试3次
每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y,就继续让其猜3次,以此往复,如果回答N或n,就退出程序
如何猜对了,就直接退出
#题一
count=1
whilecount<=10:
ifcount==7:
count+=1
continue
print(count)
count+=1
count=1
whilecount<=10:
ifcount!=7:
print(count)
count+=1
#题目二
res=0
count=1
whilecount<=100:
res+=count
count+=1
print(res)
#题目三
count=1
whilecount<=100:
ifcount%2!=0:
print(count)
count+=1
#题目四
count=1
whilecount<=100:
ifcount%2==0:
print(count)
count+=1
#题目五
res=0
count=1
whilecount<=5:
ifcount%2==0:
res-=count
else:
res+=count
count+=1
print(res)
#题目六
count=0
whilecount<3:
name=input('请输入用户名:')
password=input('请输入密码:')
ifname=='egon'andpassword=='123':
print('loginsuccess')
break
else:
print('用户名或者密码错误')
count+=1
#题目七
age_of_oldboy=73
count=0
whilecount<3:
guess=int(input('>>:'))
ifguess==age_of_oldboy:
print('yougotit')
break
count+=1
#题目八
age_of_oldboy=73
count=0
whileTrue:
ifcount==3:
choice=input('继续(Y/N?)>>:')
ifchoice=='Y'orchoice=='y':
count=0
else:
break
guess=int(input('>>:'))
ifguess==age_of_oldboy:
print('yougotit')
break
count+=1
ViewCode
#十四流程控制之for循环
1迭代式循环:for,语法如下
foriinrange(10):
缩进的代码块
2break与continue(同上)
3循环嵌套
foriinrange(1,10):
forjinrange(1,i+1):
print('%s*%s=%s'%(i,j,i*j),end='')
print()
打印九九乘法表
#分析
'''
#max_level=5
*#current_level=1,空格数=4,*号数=1
***#current_level=2,空格数=3,*号数=3
*****#current_level=3,空格数=2,*号数=5
*******#current_level=4,空格数=1,*号数=7
*********#current_level=5,空格数=0,*号数=9
#数学表达式
空格数=max_level-current_level
*号数=2*current_level-1
'''
#实现
max_level=5
forcurrent_levelinrange(1,max_level+1):
foriinrange(max_level-current_level):
print('',end='')#在一行中连续打印多个空格
forjinrange(2*current_level-1):
print('*',end='')#在一行中连续打印多个空格
print()
打印金字塔
for+else
#十五开发工具IDE
1为何要用IDE
到现在为止,我们也是写过代码的人啦,但你有没有发现,每次写代码要新建文件、写完保存时还要选择存放地点,执行时还要切换到命令行调用python解释器,好麻烦呀,能否一气呵成,让我简单的写代码?此时开发工具IDE上场啦,一个好的IDE能帮你大大提升开发效率。
很多语言都有比较流行的开发工具,比如JAVA的Eclipse,C#,C++的VisualStudio,Python的是啥呢?Pycharm,最好的Python开发IDE
2安装
下载地址:https://www.jetbrains.com/pycharm/download选择Professional专业版
Comunnity社区版是免费的,但支持的功能不多,比如以后我们会学的Django就不支持,所以还是用专业版,但专业版是收费的,一年一千多,不便宜。唉,万能的淘宝。。。不宜再多说啦。
注册完成后启动,会让你先创建一个项目,其实就是一个文件夹,我们以后的代码都存在这里面
3创建目录
你以后写的项目可能有成百上千个代码文件,全放在一起可不好,所以一般把同样功能的代码放在一个目录,我们现在以天为单位,为每天的学习创建一个目录day1,day2,day3...这样
4创建代码文件
5执行代码
#十六扩展阅读
核心风格:https://www.cnblogs.com/Dominic-Ji/p/9923356.html
#十七作业
1练习题
简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型
执行Python脚本的两种方式是什么
Pyhton单行注释和多行注释分别用什么?
布尔值分别有什么?
声明变量注意事项有那些?
如何查看变量在内存中的地址?
写代码
实现用户输入用户名和密码,当用户名为seven且密码为123时,显示登陆成功,否则登陆失败!
实现用户输入用户名和密码,当用户名为seven且密码为123时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
实现用户输入用户名和密码,当用户名为seven或alex且密码为123时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
写代码
a.使用while循环实现输出2-3+4-5+6...+100的和
b.使用while循环实现输出1,2,3,4,5,7,8,9,11,12使用while循环实现输出1-100内的所有奇数
e.使用while循环实现输出1-100内的所有偶数
现有如下两个变量,请简述n1和n2是什么关系?
n1=123456
n2=n1
2作业:编写登陆接口
基础需求:
让用户输入用户名密码
认证成功后显示欢迎信息
输错三次后退出程序
dic={
'egon1':{'password':'123','count':0},
'egon2':{'password':'123','count':0},
'egon3':{'password':'123','count':0},
}
whileTrue:
name=input('username>>:')
ifnotnameindic:
print('用户不存在')
continue
ifdic[name]['count']>2:
print('尝试次数过多,锁定')
continue
password=input('password>>:')
ifpassword==dic[name]['password']:
print('登录成功')
break
else:
print('用户名或密码错误')
dic[name]['count']+=1
升级需求:
可以支持多个用户登录(提示,通过列表存多个账户信息)
用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
#db.txt内容:egon1|egon2|
dic={
'egon1':{'password':'123','count':0},
'egon2':{'password':'123','count':0},
'egon3':{'password':'123','count':0},
}
count=0
whileTrue:
name=input('u>>:')
ifnamenotindic:
print('用户不存在')
continue
withopen('db.txt','r')asf:
lock_users=f.read().split('|')
ifnameinlock_users:
print('用户%s已经被锁定'%name)
break
ifdic[name]['count']>2:
print('尝试次数过多,锁定')
withopen('db.txt','a')asf:
f.write('%s|'%name)
break
password=input('p>>:')
ifpassword==dic[name]:
print('登录成功')
break
else:
print('用户名或密码错误')
dic[name]['count']+=1
ViewCode
如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h54673.shtml