第一章Python的概述与安装
[if !supportLists]1.1 [endif] 编程与编程语言
python是一门编程语言,作为学习python的开始,需要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程?
编程的目的:
计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别的表达方式传递给计算机,从而达到让计算机能够像人脑/电脑一样自动执行的效果。
什么是编程语言?
上面提及的能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。在编程的世界里,计算机更像是人的奴隶,人类编程的目的就命令奴隶去工作。
什么是编程?
编程即程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。
强调:程序在未运行前跟普通文件无异,只有程序在运行时,文件内所写的字符才有特定的语法意义
Python是语言,而学习语言的套路都是一样的,以英语学习为例,你需要学单词,然后学语法,最后写作文。
英语的单词---------->Python中的关键字
英语的语法---------->Python的语法
英语的作文---------->用Python语言写的程序
[if !supportLists]1.2 [endif]Python介绍与编程语言分类
Python是一门高级的、面向对象的、解释性、脚本语言。
Python起源
Python的作者,Guido von Rossum(吉多·范罗苏姆),荷兰人。1982年,Guido从阿姆斯特丹大学获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。用他的话说,尽管拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的活儿。在那个时候,Guido接触并使用过诸如Pascal [ˈpæskəl]、C、Fortran[ˈfɔ:træn] 等语言。这些语言的基本设计原则是让机器能更快运行。在80年代,虽然IBM和苹果已经掀起了个人电脑浪潮,但这些个人电脑的配置很低。比如早期的Macintosh(麦金塔电脑),只有8MHz的CPU主频和128KB的RAM,一个大的数组就能占满内存。所有的编译器的核心是做优化,以便让程序能够运行。为了增进效率,语言也迫使程序员像计算机一样思考,以便能写出更符合机器口味的程序。在那个时代,程序员恨不得用手榨取计算机每一寸的能力。有人甚至认为C语言的指针是在浪费内存。至于动态类型,内存自动管理,面向对象…… 别想了,那会让你的电脑陷入瘫痪。
这种编程方式让Guido感到苦恼。Guido知道如何用C语言写出一个功能,但整个编写过程需要耗费大量的时间,即使他已经准确的知道了如何实现。他的另一个选择是shell。Bourne Shell(是一个交换式的命令解释器和命令编程语言)作为UNIX系统的解释器已经长期存在。UNIX的管理员们常常用shell去写一些简单的脚本,以进行一些系统维护的工作,比如定期备份、文件系统管理等等。shell可以像胶水一样,将UNIX下的许多功能连接在一起。许多C语言下上百行的程序,在shell下只用几行就可以完成。然而,shell的本质是调用命令。它并不是一个真正的语言。比如说,shell没有数值型的数据类型,加法运算都很复杂。总之,shell不能全面的调动计算机的功能。
HOW TO用于定义一个函数。一个Python程序员应该很容易理解这段程序。ABC语言使用冒号和缩进来表示程序块。行尾没有分号。for和if结构中也没有括号() 。赋值采用的是PUT,而不是更常见的等号。这些改动让ABC程序读起来像一段文字。 尽管已经具备了良好的可读性和易用性,ABC语言最终没有流行起来。在当时,ABC语言编译器需要比较高配置的电脑才能运行。而这些电脑的使用者通常精通计算机,他们更多考虑程序的效率,而非它的学习难度。除了硬件上的困难外,ABC语言的设计也存在一些致命的问题: 可拓展性差。ABC语言不是模块化语言。如果想在ABC语言中增加功能,比如对图形化的支持,就必须改动很多地方。 不能直接进行IO。ABC语言不能直接操作文件系统。尽管你可以通过诸如文本流的方式导入数据,但ABC无法直接读写文件。输入输出的困难对于计算机语言来说是致命的。你能想像一个打不开车门的跑车么? 过度革新。ABC用自然语言的方式来表达程序的意义,比如上面程序中的HOW TO 。然而对于程序员来说,他们更习惯 用function或者define来定义一个函数。同样,程序员更习惯用等号来分配变量。尽管ABC语言很特别,但学习难度 也很大。 传播困难。ABC编译器很大,必须被保存在磁带上。当时Guido在访问的时候,就必须有一个大磁带来给别人安装ABC编译器。 这样,ABC语言就很难快速传播。 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python's Flying Circus(飞行马戏团)。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。Guido作为一个语言设计爱好者,已经有过设计语言的尝试。这一次,也不过是一次纯粹的hacking(搬运)行为。
一门语言的诞生
1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了 :类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。 Python语法很多来自C,但又受到ABC语言的强烈影响。来自ABC语言的一些规定直到今天还富有争议,比如强制缩进。 但这些语法规定让Python容易读。另一方面,Python聪明的选择服从一些惯例,特别是C语言的惯例,比如回归等号赋值。Guido认为,如果“常识”上确立的东西,没有必要过度纠结。 Python从一开始就特别在意可拓展性。Python可以在多个层次上拓展。从高层上,你可以直接引入. py文件。在底层,你可以引用C语言的库。Python程序员可以快速的使用Python写. py文件作为拓展模块。但当性能是考虑的重要因素时,Python程序员可以深入底层,写C程序,编译为.so文件引入到Python中使用。Python就好像是使用钢构建房一样,先规定好大的框架。而程序员可以在此框架下相当自由的拓展或更改。 最初的Python完全由Guido本人开发。Python得到Guido同事的欢迎。他们迅速的反馈使用意见,并参与到Python的改进。Guido和一些同事构成Python的核心团队。他们将自己大部分的业余时间用于hack(熟练地编辑) Python。随后,Python拓 展到研究所之外。Python将许多机器层面上的细节隐藏,交给编译器处理,并凸显出逻辑层面的编程思考。Python程序员可以花更多的时间用于思考程序的逻辑,而不是具体的实现细节。这一特征吸引了广大的程序员。Python开始流行。
人生苦短,我用python
时势造英雄,我们不得不暂停我们的Python时间,转而看一看瞬息万变的计算机行业。1990年代初,个人计算机开始进入普通家庭。
启示录
Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。Python在TIOBE排行榜中排行第四,它是Google的第三大开发语言,Dropbox的基础语言,豆瓣的服务器语言。Python的发展史可以作为一个代表,带给我许多启示。 在Python的开发过程中,社区起到了重要的作用。Guido自认为自己不是全能型的程序员,所以他只负责制订框架。如果问题太复杂,他会选择绕过去,也就是cut the corner(走捷径)。这些问题最终由社区中的其他人解决。社区中的人才是异常丰富的,就连创建网站,筹集基金这样与开发稍远的事情,也有人乐意于处理。如今的项目开发越来越复杂,越来越庞大,合作以及开放的心态成为项目最终成功的关键。Python从其他语言中学到了很多,无论是已经进入历史的ABC,还是依然在使用的C和Perl,以及许多没有列出的其他 语言。可以说,Python的成功代表了它所有借鉴的语言的成功。同样,Ruby借鉴了Python,它的成功也代表了Python某些方面的成功。每个语言都是混合体,都有它优秀的地方,但也有各种各样的缺陷。同时,一个语言“好与不好”的评 判,往往受制于平台、硬件、时代等等外部原因。程序员经历过许多语言之争。其实,以开放的心态来接受各个语言,说不定哪一天,程序员也可以如Guido那样,混合出自己的语言。
关键点常识
Python的意思是蟒蛇,源于作者喜欢的一部电视剧
Python的作者是Guido van Rossum(吉多·范罗苏姆)
Python是龟叔在1989年圣诞节期间,为了打发无聊的圣诞节而用C编写的一个编程语言
Python正式诞生于1991年
Python的解释器如今有多个语言实现,我们常用的是CPython(官方版本的C语言实现),其他还有Jython(可以运行在Java平台)
面向对象对应于面向过程,是开发人员在开发过程当中的思路,是程序员的世界观
解释性对应于编译性语言。
解释性语言:在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。
编译性语言:编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。
脚本语言是一种解释性的语言,例如,javascript等,它不象c\c++等可以编译成二进制代码,以可执行文件的形式存在.脚本语言不需要编译,可以直接用,由解释器来负责解释。脚本语言一般都是以文本形式存在,类似于一种命令.
方式分为。
1. 编译型(需要编译器,相当于用谷歌翻译):如C,执行速度快,调试麻烦
2. 解释型(需要解释器,相当于同声传译):如python,执行速度慢,调试方便
总结:
机器语言:
优点是最底层,执行速度最快
缺点是最复杂,开发效率最低
汇编语言:
优点是比较底层,执行速度最快
缺点是复杂,开发效率最低
高级语言:
编译型语言执行速度快,不依赖语言环境运行,跨平台差
解释型跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行
语言排行数据链接:(https://www.tiobe.com/tiobe-index/ )
1.3 目前Python主要应用领域:
1. WEB开发——最火的Python web框架Django, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Django定义为the framework for perfectionist with deadlines(大意是一个为完全主义者开发的高效率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, Enthought librarys等众多程序库的开发,使的Python越来越适合于做科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛
9. 游戏开发——在网络游戏开发中Python也有很多应用。相比Lua or C++,Python 比 Lua 有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,与 Lua 相比,Python 更适合作为一种 Host 语言,即程序的入口点是在 Python 那一端会比较好,然后用 C/C++ 在非常必要的时候写一些扩展。Python 非常适合编写 1 万行以上的项目,而且能够很好地把网游项目的规模控制在 10 万行代码以内。另外据我所知,知名的游戏<文明> 就是用Python写的
1.4 Python优缺点
优点
简单————Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在 读英语一样,Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
易学————就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。
免费、开源————Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为什么Python如此优秀的原因之一——它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。
高层语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台!
解释性————这一点需要一些解释。一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。
面向对象————Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。
可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
丰富的库————Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted(是用Python实现的基于事件驱动的网络引擎框架)和Python图像库等等。规范的代码————Python采用强制缩进的方式使得代码具有极佳的可读性。
缺点
运行速度,有速度要求的话,用C++改写关键部分吧。
中文资料匮乏(好的python中文资料屈指可数)。
1.3 Python3的安装
1.3.1 python3安装
直接到官网https://www.python.org/下载,安装就可以了。
2.安装比较简单,点exe文件一直下一步就可以了(注意:安装的时候有个选择是否添加环境变量,这个选是,之后就不用添加环境变量了)如果没有,请添加环境变量。 计算机属性 ---->高级系统设置---->环境变量--->系统变量里的path---->编辑添加安装python的路径(例如E:\python;E:\python\script)
修改python3安装目录下的python.exe文件重命名为python3.exe。(这样命令窗口运行python3输入python3,运行 python3)
1.4.1 安装目录介绍
目录组织方式
关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构。
假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了:
Foo/
|-- bin/
| |-- foo
|
|-- foo/
| |-- tests/
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- __init__.py
| |-- main.py
|
|-- docs/
| |-- conf.py
| |-- abc.rst
|
|-- setup.py
|-- requirements.txt
|-- README
简要解释一下:
bin/: 存放项目的一些可执行文件,当然你可以起名script/之类的也行。
foo/: 存放项目的所有源代码。(1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层 目录。(2) 其子目录tests/存放单元测试代码; (3) 程序的入口最好命名为main.py。
docs/: 存放一些文档。
setup.py: 安装、部署、打包的脚本。
requirements.txt: 存放软件依赖的外部Python包列表。
README: 项目说明文件。
Tools目录:Python 提供的一些工具 wiki/ 如果有wiki,可以创建此目录
scripts/ 项目用到的各种脚本 tests/ 测试代码
lib/ 库文件,放自定义模块和包
etc 是Linux下的配置文件的老家, 很多管理和使用的修改都在这里
Share 是Python共享目录
Include是Python包含、共享目录
Tcl 桌面编程包
python目录 lib 和libs有什么区别
两者还是有区别的,放在lib中的是被reference(引用)的,放在libs中的是被include的。放在libs中的文件会自动被Eclipse(下载)所include(包含)。所以不要把API(应用程序接)放到libs里去。比如ndk生成的so,是在libs中的,这时候你就需要把它拷贝到lib中,而不是libs中,否则你ref
1.5 python环境变量配置
1.5.1 配置环境变量:https://jingyan.baidu.com/article/ceb9fb10db2fc68cac2ba04e.html
测试安装是否成功
windows --> 运行 --> 输入cmd ,然后回车,弹出cmd程序,输入python,如果能进入交互环境 ,代表安装成功。
1.7 Python脚本运行
1.7.1 安装完成,打开命令窗口:输入python3
打印Python的第一个程序hello world (在 Windows命令提示符(cmd)中输入以下命令进行 pip的更新:python -m pip install -U pip)
1.6 Python解释器
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。
由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。
当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
Python的解释器很多,但使用最广泛的还是CPython。
1.8 标识符命名规则和关键字:
什么是标识符,看下图:
3.2. 标识符的组成
<1>标示符
什么是标示符,看下图:
挖掘机技术哪家强,中国山东找蓝翔
开发人员在程序中自定义的一些符号和名称
<2>标示符的规则
标示符由字母、下划线和数字组成,且数字不能开头
思考:下面的标示符哪些是正确的,哪些不正确为什么
fromNo12
from#12
my_Boolean
my-Boolean
Obj2
2ndObj
myInt
test1
Mike2jack
My_tExt
_test
test!32
int
jack_rose
jack&rose
GUI
G.U.I
python中的标识符是区分大小写的
标识符由字母、下划线和数字组成,且数字不能开头
注意:标识符是区分大小写的
3.3.1 见名知意
起一个有意义的名字,尽量做到看一眼就知道是什么意思(提高代码可 读性) 比如: 名字 就定义为 name , 定义学生 用 student
3.3.2 驼峰命名法
小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog
大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:FirstName、LastName
不过在程序员中还有一种命名法比较流行,就是用下划线“_”来连接所有的单词,比如send_buf,last_name
Python推荐就是用下划线“_”来连接所有的单词
3.4. 关键字
什么是关键字
Python一些具有特殊功能的标识符,这就是所谓的关键字.
关键字,是Python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标识符。
可以通过以下命令进行查看当前系统中Ppython的关键字
import keyword
keyword.kwlist
1.9 注释:
1.9.1 注释的分类:
1.2.1.单行注释和多行注释
以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用
#那单引号、双引号、多引号有什么区别呢? 单双引号和双引号木有任何区别,只有下面这种情况你需要考虑单双的配合
msg = "My name is wusir , I'do you love me ' 18 years old!"print(msg)
#多引号什么作用呢?作用就是多行字符串必须用多引号
msg = '''
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
'''
print(msg)
变量:
什么是变量
变量即变化的量,核心是“变”与“量”二字,变即变化,量即衡量状态。
为什么要有变量?
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态以及状态的变化。
比如: 英雄的等级为1,打怪升级(变)为10
僵尸的存活状态True,被植物打死了,于是变为False
人的名字为test,也可以修改为Test
变量就是用来存东西的
在程序中,有时我们需要对2个数据进行求和,那么该怎样做呢?
大家类比一下现实生活中,比如去超市买东西,往往咱们需要一个菜篮子,用来进行存储物品,等到所有的物品都购买完成后,在收银台进行结账即可
如果在程序中,需要把2个数据,或者多个数据进行求和的话,那么就需要把这些数据先存储起来,然后把它们累加起来即可
在Python中,存储一个数据,需要一个叫做变量的东西,如下示例:
num1 = 100 #num1就是一个变量num2 = 87 #num2也是一个变量result = num1 + num2 #把num1和num2这两个变量的数据进行累加,然后放到 result变量中print(result)
说明:
所谓变量,可以理解为菜篮子,如果需要存储多个数据,最简单的方式是有多个变量,当然了也可以使用一个
程序就是用来处理数据的,而变量就是用来存储数据的
程序中:
为了更充分的利用内存空间以及更有效率的管理内存,变量是有不同的类型的,如下所示:
怎样知道一个变量的类型呢?
在python中,只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要咱们开发者主动的去说明它的类型,系统会自动辨别
可以使用type(变量的名字),来查看变量的类型
与用户交互:
咱们在银行ATM机器前取钱时,肯定需要输入密码,对不?
那么怎样才能让程序知道咱们刚刚输入的是什么呢?
大家应该知道了,如果要完成ATM机取钱这件事情,需要先从键盘中输入一个数据,然后用一个变量来保存,是不是很好理解啊
3输出函数
3.1.1. 生活中的“输出”
5.1.2. 软件中的“输出”
5.1.3. Python中的输出
# 打印提示print('hello world')print('我在北京等你')
5.2 格式化输出
5.2.1 格式化操作的目的
程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式
比如要求用户输入用户名和年龄,然后打印如下格式:
My name is xxx,my age is xxx.
很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,无法放到指定的xxx位置,而且数字也必须经过str(数字)的转换才能与字符串进行拼接。
# name = input("name>>>:")# age = input("age>>:")# print("my name is %s my age is %s " %(name,age))
# print("my name is %s" %'test')# print("my age is %s" %'22') # %s 可以接收数字类型也可以接收字符串类型
print("my age is %s" % 222)
#%d 只能接收数字类型print("my age is %d" %'455') #%d 只能接收数字类型
这就用到了占位符,如:%s、%d
%s字符串占位符:可以接收字符串,也可接收数字
print("my name is %s,my age is %s"%("test",11))
%d数字占位符:只能接收数字print('My name is %s,my age is %d' %('test',18))
#注意:
#print('My name is %s,my age is %d' %(name,age)) #age为字符串类型,无法传给%d,所以会报错
想一想:
在输出年龄的时候,用了多次"我今年xx岁",能否简化一下程序呢???
答:
字符串格式化
5.2.2 什么是格式化
在程序中,看到了%这样的操作符,这就是Python中格式化输出。
age = 28name = "python"print("我的姓名是%s,年龄是%d"%(name,age))
课堂练习:
#接收用户输入,打印成指定格式
name=input('your name: ')age=input('your age: ')
print('your name is %s,my age is %s' %(name,age))
5.3 换行输出
在输出的时候,如果有\n那么,此时\n后的内容会在另外一行显示
输出多个变量内容
第二章python数字、基本运算符
Python数字类型介绍
整型:int型,例子:6为整型。
作用:年纪,等级,身份证号,qq号等整型数字相关
定义: age=10 #本质age=int(10)
浮点型:float型,例子:2.1为浮点型。
浮点型float 作用:薪资,身高,体重,体质参数等浮点数相关
salary=36.666 #本质salary=float(6.66)
"""整形:int状态:等级、身份号,年龄age = 10print(type(age))"""
"""浮点型:float状态:薪资、身高、体重salary=36.666 #本质salary=float(6.33)salary=36.33 #本质salary=float(6.33)print(salary,)"""
基本运算符
Python支持以下几种运算符
算术运算符
描述实例
加两个对象相加 a + b 输出结果 7
减得到负数或是一个数减去另一个数 a - b 输出结果 3
乘两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 10
除x除以y b / a 输出结果 2
取整除取商,5//2得2;返回商的整数部分 9//2 输出结果 4 。
取余返回除法的余数 a % b 输出结果 1
幂返回x的y次幂 a**b 为5的2次方, 输出结果 25
参考代码:
a = 5b = 2print(a+b) #加法print(a-b) #加法print(a*b) #乘法print(a/b) #除法print(a//b) #取整除print(a%b) #取余print(a**b) #取幂
比较运算
以下假设变量:a=10,b=20
如图:
赋值运算符
成员运算符
in
not in
逻辑运算
# and 从左往右都成立才成立# or 或 从左往右只有一个成立则成立
and
#去办理贷款买房手续,需要你且你媳妇一同来办理you = input("你本人去吗(去或者不去)?")your_wife = input("媳妇去吗(去或者不去)?")if you == "去" and your_wife == "去": print("恭喜,两个人来了,把事情办成了!")else: print("必须有两个人来办理贷款业务!")
or
#去办理个人贷款买房手续,只需要你或者你媳妇代理you = input("你本人去吗(去或者不去)?")your_wife = input("媳妇去吗(去或者不去)?")if you == "去" or your_wife == "去": print("恭喜,至少一个人办理就行了!")else: print("必须有一个人来办理贷款业务!")
运行结果:
not
12~17岁 青春期18~24岁 青年期25~44岁 壮年期
#青年时期17~24年龄age = 30#不是青年时期if not (age >= 17 and age <= 24): print("不是青年时期!<17或者大于24")
运行效果:
取的范围就变成了,< 17并且>24的范围
复合赋值运算符
运算符描述实例
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a
身份运算符
is 是比较两个引用是否指向了同一个对象(东西)(引用比较)。
== 是比较两个对象(值)是否相等。
扩展案例:
注意,因为python对小整数在内存中直接创建了一份,不会回收,所有创建的小整数变量直接从对象池中引用他即可。但是注意Python仅仅对比较小的整数对象进行缓存(范围为范围[-5, 256])缓存起来,而并非是所有整数对象。也就说只有在这个[-5,256]范围内创建的变量值使用is比较时候才会成立。