python学习笔记day1(简介、变量、循环、数据类型)
一.人生苦短,我用python(Life is shot, you need Python)

Python的作者,Guido von Rossum,荷兰人。1982年,Guido从阿姆斯特丹大学获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。用他的话说,尽管拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的活儿。
学习编程语言就是为了解放双手,让机器具有人的思维从而去代替人工作,目前流行的编程语言有很多,例如c、c++、c#、python、php、ruby等。编程语言又可以分为解释型和编译型,所谓编译型语言类似于c、c++等,通俗的来说就是代码写完,通完一个解释器将其编译成计算机认识的二进制代码,然后在运行代码,得到你想要的结果(可想而知,这种代码运行前首先要编译,显而易见就比较笨重了),而像python这种,又称为高级编程语言,是无需进行完整编译的,在你写的过程中,解释器会把你的代码一行行的解释成计算机能识别的二进制码,类似于一个实时翻译的过程。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采用强制缩进的方式使得代码具有极佳的可读性
当然它也存在有缺点:
运行速度,有速度要求的话,用C++改写关键部分吧。
国内市场较小(国内以python来做主要开发的,目前只有一些web2.0公司)。但时间推移,目前很多国内软件公司,尤其是游戏公司,也开始规模使用他。
中文资料匮乏(好的python中文资料屈指可数)。托社区的福,有几本优秀的教材已经被翻译了,但入门级教材多,高级内容还是只能看英语版。
构架选择太多(没有像C#这样的官方.net构架,也没有像ruby由于历史较短,构架开发的相对集中。Ruby on Rails 构架开发中小型web程序天下无敌)。不过这也从另一个侧面说明,python比较优秀,吸引的人才多,项目也多
二.python编码类型
目前的编码类型有很多种,有ancii、unicode、utf-8、gbk。
ancii:用1个字节=8位来表示计算书所能表示的东西
unicode:用4个字节=32位来做相应的对应关系
utf-8:用万国码进行压缩,至少用1个字节来表示,目前来说比较常用,中文3个字节=16位
gbk:对亚洲国家的文字做对应关系,中文2个字节=16位
三.python解释器
上文说过python代码的运行离不开解释器,各种语言有各种解释器,python也不例外,目前已有:cpython、jpython、rubypython、pypython等等。
而我们较常用的就是cpython解释器,其实用哪种解释器都一样,只是一种对应法则,用他们的规则把python翻译成计算机识别的二进制码。
python两种解释器:
----pythion-2.7
----python-3.6
安装python解释器:(1):官网下载地址:https://www.python.org/downloads/

下载完毕,持续执行下一步安装在本地即可,完毕完毕还需要在你环境变量Path里边添加上你的python安装路径。然后cmd打开命令行执行python进入终端说明安装成功。

四.学习第一个helloworld
学习任何一门编程语言都是从hello world学起,哈哈,本篇也不例外哦,打开终端显示器--》python进入终端--》然后print('hello world')--》回车。你看到了什么?是不是很神奇?

当然你也可以把单引号换成双引号试试,这里就不在贴图啦,可以私下多练习几次,这个就是它的固定语法。当然前期也可以借助其他工具进行编程,比如EditPlus等。目前比较常用的python开发工具是PyCharm,可以去python官网下载,下载完毕别忘了找度娘激活哦。以下是我在pycharm上进行的练习。

注释:python中一般用#放到程序的开头表示注释语句:

五.运算符
python支持一下几种运算符:
算术运算符:

赋值运算符:

复合赋值运算符:

六.变量的介绍
假设有这样一个场景:在程序中我们要对两个数求和,应该怎么做呢?这里我们类比一个场景:假如你去超市买菜,是不是要把买到的东西都放到菜篮子里边,等所有都买完了再去收银台结账。这里的菜篮子就好比是变量。回到刚才那个场景,要求两个数的和,就需要我们找一个变量把这两个数先存储起来,然后在做相应的加减运算,简而言之,变量就是一个昵称,用来指向数据在计算机中开辟的空间。我们写的程序是用来计算数据的,而变量是用来存储数据的,接下来我们写下代码举例说明:

可以看到这里的num1、num2就是我们所说的变量,用来指向5和6,当我们调用这两个变量的时候其实就是在操作5和6这两个数。接下来我们再看这样一段程序:

现在我们执行程序可以看到,并没有打印出正确的结果,而是报错,为什么呢?注意这个地方:2num2 是这个语法出错了。举这个例子是想给大家说明,变量的命名是有一定规则的,并不是想怎么命名就怎么命名的,是要遵循的一定规则。下面简要概述如下:
1.变量由字母、数字、下划线组成
2.数字不能开头
3.变量不能用python中的关键字(这个不用刻意去记,用的多了也就熟悉了)
4.变量的命名一般要见名知意,不能随意命名。
5.多个变量之间尽量用下划线隔开,类似data_start这种。
七.输入输出
什么是输入输出语句呢?我们以上练习的print其实就是输出语句,我们敲什么就输出什么,而输入语句就是人机交互的过程,用户输入什么,电脑经过计算就输出什么,这里引入一个input的关键词,它的作用就是当成程序走到这里就等待用户输入。
格式就是:name=input("请输入您的名字:"),比如:

如图可以看到这里就是等待用户输入的过程。python3中的输入是input(),而在python2中的输入时raw_input().
八.条件语句
想一想现实生活中,去坐火车,如果安检通过,才能乘车。这里就是一个条件判断,当你满足某些条件的时候,才能做某些事情。当然开发中也有类似的场景,如果。。。就。。。。,固定的语法格式如下:

接下来我们写段程序说明下:


很明显这里的18满足第一个条件,所以就执行它下面的程序。当然这里的18如果不满足条件,就会执行else下面的条件。这里就不在贴图啦!那么有没有这样一种情况呢?继续拿去网吧这个例子说明,假设已经大于18岁,可以去网吧,此时还应该看看网吧是否有空位对吧,如果没有空位当然也是玩不了的,这里就涉及到if的嵌套语句,具体语法如下:

上图就是if的嵌套语句,当然也可以再加几层循环(不过没啥必要),elif和if的作用一样也是执行判断,这里举例子说明:


九.循环语句
什么是循环语句?假定有这样一个场景:让你打印100遍“hello world”,你会怎么做?难道真的写100遍:print("hello world")。程序如果被你这样写就显得太笨重了。开发中就引入了循环语句这一说法,语法格式如下:

意思就是除非while后面的条件不满足,否则就一直执行程序,直到条件不满足就退出。回到上题那个场景,打印100遍hello world程序可以这样来写:


上述代码中,没打印一遍hello world,i的值就会加一,同时也会判断是<101,只要满足条件就一直打印,直到不满足条件,然后程序退出。
练一练:用while循环打印1.2.3.4.5.......100。(自己先写下程序再来看哦)


注意:这里的end=' '就是固定写法,为了不让他换行打印。i=i+1就是每进一次循环,i的值累加1.
扩展练习:用while循环打印1.2.3.4.5.......100,并做求和运算。


注意:这里引入了一个sum变量,目的就是将每次的运算结果进行累加求和运算。
while循环语句的几个关键字:break 和 continue
break:结束当前循环
continue:结束当次循环
这样说你可能不太理解,还是直接上程序说明吧,这里以打印1···10之间的数为例子说明:


可以看到当number == 5时,执行break语句,此时while循环退出,只打印出了1.2.3.4.,那么我们将break换成continue,结果会怎样呢?


这样就显而易见了。将break换成continue之后,当number==5时,结束当次循环,程序从开始执行,因此只打印了1,2,3,4,6,7,8,9,10.
课下作业练习:
(1).用while循环打印1··100之间的偶数并做求和运算。
(2).用while循环打印1··100之间的奇数并做求和运算。
(3).求1-2+3-4+····+99的和并打印。
十.数据类型
常用的数据类型
整数:age=18
字符串:name="隔壁老王"
字符串取值:name[0]、name[1]
列表:user_list = ["小王","小张","隔壁老王","五阿哥",""]
列表取值:user_list[0]、userlist[1]、userlist[2]
列表的循环:for XXX in user_list:
print(XXX)
字典:user_info = {"name":"老王","age":18,"score":78}
字典取值:n1 = user_info["name"]、n2 = user_info["age"]
数据类型的嵌套:user_txt = ["郭靖","黄蓉",18,["老李","金刚葫芦娃",88]]
user_txt[3][1] = "金刚葫芦娃"
user_test = ["wh",{"name":"博主","age":18},"欧阳疯"]
user_test[1]["age"] = 18
案例1:循环用户列表,打印用户名和密码:


案例2:循环用户列表,将每个用户的count修改为50:


案例三:校验用户登录,登录三次退出。

2018-05-11

浙公网安备 33010602011771号