Day1 目录:
Python介绍 |
* 了解Python的特点、发展史 * 介绍Python广泛的应用领域和前景 |
第一个Python程序 |
* 掌握Python代码的2种执行方式 |
变量 |
* 掌握变量的作用 * 掌握标识符的命名规范 |
程序交互 |
* 掌握如何让程序读取用户输入 |
基本数据类型 |
* 掌握字符串、数字、布尔这三个基本数据类型 (小练习) |
格式化输出 |
* 掌握字符串格式的方法 |
python介绍
说到Python语言,就不得不说一下它的创始人Guido van Rossum(1956 -- ?), 他在开发PYTHON语言之前曾使用过几年的ABC语言,ABC是一门主要用于教学目的语言(教计算机系的学生如何设计一门开发语言),Guido 在开发PYTHON时借鉴了很多ABC语言的特性,所以后来人们包括Guido自己也认为,PYTHON语言的前身就是ABC语言。关于创作PYTHON语言的初衷,Guido在1996年写到:
Over six years ago, in December 1989, I was looking for a "hobby" programming project that would keep me occupied during the week around Christmas. My office ... would be closed, but I had a home computer, and not much else on my hands. I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/C hackers. I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python's Flying Circus).
(翻译) 在六年前的1989.12月份,我为了在圣诞假期打发无聊时间找点事干(估计是写代码找不到对象),决定为我最近一直在构思的一门新的脚本语言写个解释器,这门语言的前身ABC(就Guido本人看来,ABC這種語言非常优美和强大,是专门为专业的程序设计师使用的。但是ABC語言并没有成功,究其原因,吉多认为是非開放造成的。吉多決心在Python中避免這一错误,并取得了非常好的效果,完美结合了C和其他一些語言)语言更多是被UNIX/C黑客使用,我选择PYTHONP这个名字做为这个开发项目的名字,起这个名字的一个原因是因为我是Month Python’s Flying Circus(英国的一个电视喜剧)的超级粉丝。
那Python究竟是一门什么样的语言呢?
编程语言主要从以下几个角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言
为大家基本介绍一下这几种语言:
编译型语言:其实它和汇编语言是一样的:也是有一个负责翻译的程序来对我们的源代码进行转换,生成相对应的可执行代码。这个过程说得专业一点,就称为编译(Compile),而负责编译的程序自然就称为编译器(Compiler),它会一次把所有的代码转换成机器语言,然后写成可执行文件。
解释型语言:从字面上看,“编译”和“解释”的确都有“翻译”的意思,它们的区别则在于翻译的时机安排不大一样.打个比方:假如你打算阅读一本外文书,而你不知道这门外语,那么你可以找一名翻译,给他足够的时间让他从头到尾把整本书翻译好,然后把书的母语版交给你阅读;或者,你也立刻让这名翻译辅助你阅读,让他一句一句给你翻译,如果你想往回看某个章节,他也得重新给你翻译。 就是不断地解释、执行、解释、执行……所以,解释型程序是离不开解释程序的,由于解释型程序是将编译的过程放到执行过程中,这就决定了解释型程序注定要比编译型慢上一大截,像几百倍的速度差距也是不足为奇的。
动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。
需要理解的一些概念
1、C语言编译完就是机器码,机器码可以直接在处理器上执行。
2、CPU可以直接读取机器码。
3、Python是用C写的。
4、Python解释器会把代码内容读到内存里,通过Python解释器翻译成字节码。
5、CPU不能直接读取字节码,需要把字节码转换成机器码。
anyway,so
Python对于C来说,就多了一个字节码转换成机器码的过程,所以相对会慢。但是人为是无法感知的。
目前Python主要应用领域:
- 云计算: 云计算最火的语言, 典型应用OpenStack
- WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
- 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
- 系统运维: 运维人员必备语言
- 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
- 图形GUI: PyQT, WxPython,TkInter
Python在一些公司的应用:
- 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、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完成各种各样的任务。
优点:
- Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。
- 开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
- 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
- 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
- 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
- 可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
缺点:
- 速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.1s,用Python是0.01s,这样C语言直接比Python快了10s,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。
- 代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。
- 线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。
python的安装:https://www.python.org/downloads/
python解释器的安装:https://www.runoob.com/w3cnote/pycharm-windows-install.html
听不懂的地方一定要继续的学下去(送给我也给大家):
要想盖楼必先构架,改变经不起任何等待
话不多说让我们正式开始Python的学习吧!!!
变量篇
变量是什么?
变量,是用于在内存中存放程序数据的容器
怎么理解呢? 计算机的最核心功能就是“计算”,cpu是负责计算的,计算需要数据源,数据源要存在内存里,比如我要把Dayang的姓名、身高、年龄信息存下来,后面程序会调用,怎么存呢,直接设置一个变量名=值,这样就可以定义了
现在咱们就来定义一下变量
1 name = "Dayang" 2 age = 18 3 height = 180 4 #这样我们就定义了 name变量就是我的名字 Dayang 然后就是定义了年龄18 身高180 ,可别质疑我噢,出家人不打诳语。
哪有人就问了,以后需要用到的时候怎么调用呢?
-后面程序想调用的时候 直接调用 变量名 就可以
1 name = "Dayang" 2 age = 18 3 height = 180 4 5 print(name)#调用变量 以后咱们会有很多练习的。知识还是要运用到实践上的 6 print(age)
变量的使用规则
程序是从上到下依次逐行执行的,所以变量名必须先定义,后调用,否则会报错
如图:
报错原因就是因为之前没有定义name2这个变量名,所以没有找到报错
变量的定义规则
1.程序全局都会用到的变量,尽量定义在文件开头
2.变量名只能是 字母、数字或下划线的任意组合,其他形式均不合法
3.变量名的第一个字符不能是数字
4.以下关键字不要声明为变量名[ "and" "as" "assert" "break" "class" "continue" "def" "import" "elif" "else" "except" "exec" "finally" "for" "from" "global" "if"
"import" "in" "is" "lambda" "not" "or" "pass" "print" "raise" "return" "try" "while" "with" "yield"],这些是Python语法中已经占用了的关键字
常用变量名定义规范
1 #驼峰体 2 3 4 ageofboy = 20 5 numberofstudents = 40 6 7 8 #下划线 9 10 11 age_of_boy = 20 12 number_of_students = 40 13 14 15 #你觉得那种看着更清晰,那种就是官方推荐的,我想你肯定会先第二种 16 17 '''变量不好的方式 18 1.用拼音、中文做变量名 19 2.变量名过长 20 3.不能让人通过名字就能看出来大概是什么意思 21 4.首字母大写(大写是用来定义类名的,后面会学)'''
变量的修改
1 name = "Dayang" 2 age = 18 3 height = 180 4 5 print(height) 6 height = 185#直接赋值就可以改了180185 7 print(height)
常量
常量就是指不变的量例如:pai 3.141592653...... 或在程序中不会改变的量
举例,假如我的年龄会随着时间变化,这个年龄就是变量,但一些情况下年龄不会改变就是常量,python中
有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量
AGE_OF_BOY = 56
在C语言中有专门的常量定义语法
const int count = 20 #一旦定义为常量,更改就会报错
基础程序交互篇
读取用户输入
1 name = input("what is your name ?") 2 print("hello" + name) 3 #执行脚本就会发现,程序会等待你输入名字后再往下继续走 4 5 6 #可以让用户输入多个信息,如下 7 name = input("what is your name ?") 8 age = input ("how old are you") 9 hometown = input("where is your hometoen?") 10 ptint("holle",name,"you are",age,"years old,you came from ",hometown) 11 #执行后输出结果如下 12 what is your name?Dayang 13 how old are you? 18 14 where is your hometown? China 15 holle Dayang your are 18 years old,you came from China
读取用户输入
1 #随着学习的深入,用不了多久,你就可以写复杂的上千甚至上万的代码了,有的代码多,短时间不看就忘记了什么意思,所以为了避免尴尬的发生,需要加强自己代码的可读性。 2 3 #例如 4 5 6 #单行注释的时候 7 8 #name = Dayang 9 在代码前加#此段代码,将不再运行 10 11 ''' 12 n = 1 13 m=2 14 b=3 15 ''' 16 """ """ 三对双引号可以多行注释 17 18 """ 19 注释原则 20 1.不用全部加注释,只需要在自己觉得重要或不好理解的部分加注释即可 21 2.注释可以用中文或英文,但绝对不要拼音噢 22 3.注释不光给自己看,还要给别人看,所以请认真写 23 """
基本数据类型
什么是数据类型?
我们人类可以很容易的分清数字和字符的区别,但是计算机并不能,计算机虽然很强大,但从某种程度来说有很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则计算机是分不清楚1和“汉”的,因此,在每个编程语言里都有1个数据类型的东西,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给他,你想让他处理文字,就传字符串类型给他,Python中常用的数据类型有很多,今天我们暂时只讲三种,数字、字符串、布尔类型(后面会详细的讲)
数字
a = 2**60 type(a)#tyoe()是查看数据类型的方法工具 <type 'int'> #在Python(2.x)中还分int(整型)、long(长整型)在python3版本中数子没有分类long类型了,全是int
除了int和long外,其实还有float浮点型、复数型,今天就暂时先了解,后面详细讲
字符串
1 #在python中所有加引号的字符都被认为是字符串 2 3 name = "Dayang"#双引号 4 age = "18"#字符串 5 age = 18 #数字 int类型 6 7 8 a = ''' i love you ,you love me'''#三个引号也可以的噢 9 10 11 #其实单引号、双引号、三引号是没有任何区别的,有时经常配合使用 12 13 14 15 字符串的拼接 16 17 name = "Dayang" 18 age = "18" 19 name + age 20 'Dayang18' 21 name *10 # 相乘其实就是复制了十个自己结合起来,但是注意不能相减,相除因为臣妾办不到,可以试一下,暂时没有这个功能 22 'DayangDayangDayangDayangDayangDayangDayangDayangDayangDayang'
23 a = "A \n A"#\n是换行的命令
24 print(a)
25 A
26 A
再有就是拼接的时候要注意双方都是字符串才可以,不确定时可以用type()判断类型
布尔值(bool)
布尔类型其实很简单就两个值一个Ture(真),一个False(假)主要用作记逻辑判断
1 a = 3 2 b = 5 3 a>b#执行不成立就是False,就是假 4 False 5 a<b#执行成立就为True 6 True 7 8 #计算机为什么要描述这种事情呢 9 10 if a>b: 11 print(a is bigger than b) 12 else: 13 print(a is smaller than b) 14 #计算机可以根据判断的结果不同,来执行不同的动作指令
列表类型
如果要把全班人的名在内存存下来,用上面的字符串类型是可以做到的但取的时候会很不方便。
1 names = "a,b,c,d,e"#假设全班人 2 name[2]#提取2号 3 'c'#第二个位置不是b吗?为什么会是c 4
元素名 | a | b | c | d | e |
下标(索引) | 0 | 1 | 2 | 3 | 4 |
5 6 #解答为什么是c? 因为列表是通过下标来标记元素位置的,下标也可以成为索引,下标从0开始,没添加一个元素,就自动+1 7 8 9 10 #插入 11 names 12 ["a","b","c","d","e"] 13 names.insert(3,"马云")# 3 插入你想插入的下标位置 14 names 15 ["a","b","c","马云","d","e"] 16 17 #追加(添加到列表尾部) 18 names 19 ["a","b","c","马云","d","e"] 20 names.append("马化腾")#将马化腾添加到列表尾部 21 names 22 ["a","b","c","马云","d","e","马化腾"] 23 24 25 26 27 28 #列表的修改 29 names[0] = "Dayang" 30 names 31 ["Dayang","b","c","马云","d","e","马化腾"] 32 33 34 35 36 37 #删除元素 38 names 39 ["Dayang","b","c","马云","d","e",“马化腾”] 40 names.remove("Dayang")#这个就不是通过下标了,是根据元素的名字,是我不配同班,让我走吧 41 names 42 ["b","c","马云","d","e",“马化腾”] 43 #如果列表中有多个"Dayang"将会从左开始找到的第一个"Dayang"进行删除,只删除找到的一个 44 45 46 47 48 49 50 51 #判断某元素是否在列表里 52 names 53 ["b","c","马云","d","e",“马化腾”] 54 "b" in names#是否在names列表中 55 True
又到了美滋滋小练习时刻,通过今天的学习做一做小练习
1.一句代码打印10行"明天的我还在等待今天的我,今天的我不能让自己等自己",注意是10行。
2.写一个列表,把你和你身边的前后6个同桌的名字存进去,把 Dayang 插入到你的后面,
3.把第2题列表里的你自己删除掉,在追加到列表尾部。
既然选择了,请不要让自己放弃了自己的倔强
后续的作业会通过视频的形式进行详细讲解
后续讲解会添加Linux云运维、数据库技术
同学们坚持了第一天也是非常不容易的,通过了一天的学习以后的路是去还是留,请珍重请加油
qq:1282579117