Coy的Python之路--Day1

节内容

  1. Python介绍
  2. Python的版本和其余语言的区别
  3. Python 2 or 3?
  4. Hello World
  5. 编码
  6. 输入输出
  7. 变量
  8. 经常使用数据类型
  9. 表达式条件判断
  10. 表达式循环语句 

1、 Python介绍                                                                                                                                                                                   

  python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,做为ABC语言的一种继承。html

  Python是一款纯粹的自由软件,源代码和解释器CPython都遵循了GPL(GNU General Public License)协议。java

  Python语法清晰简洁,最有特点的是用空白符做为语句的缩进。python

  Python具备强大而丰富的类库,也常常被别人说是胶水语言,能够跟其它语言(c/c++)写的模块结合在一块儿。常见的状况是使用Python快速生成程序的原型,而后有一部分须要有特别高的要求,须要其它语言改写。例如3D游戏中的图形渲染须要用到C/C++编写,而后封装成.py扩展类库由Python调用。须要注意的使用扩展类型须要考虑跨平台性。c++

 

由上图可见,Python总体呈上升趋势,反映出Python应用愈来愈普遍而且也逐渐获得业内的承认!!!浏览器

  Python能够应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎全部大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。网络

目前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完成各类各样的任务。 

编译和解释型语言                                                                                                                                                                                                        

  编译型是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机能够直接以机器语言来运行此程序,速度很快;函数

  解释型则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,因此运行速度是不如编译后的程序运行的快的. 这是由于计算机不能直接认识并执行咱们写的语句,它只能认识机器语言(是二进制的形式)工具

  意思是说,解释型语言式一条一条的解释,编译型语言是一次性编译

编译型vs解释型

编译型
优势:编译器通常会有预编译的过程对代码进行优化。由于编译只作一次,运行时不须要编译,因此编译型语言的程序执行效率高。能够脱离语言环境独立运行。
缺点:编译以后若是须要修改就须要整个模块从新编译。编译的时候根据对应的运行环境生成机器码,不一样的操做系统之间移植就会有问题,须要根据运行的操做系统环境编译不一样的可执行文件。

解释型
优势:有良好的平台兼容性,在任何环境中均可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就能够,能够快速部署,不用停机维护。

缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。

2、 Python的版本和其余语言的区别                                                                                                                                    

  • Cpython
        Python的官方版本,使用C语言实现,使用最为普遍,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),而后运行在Python虚拟机上。
  • Jyhton
        Python的Java实现,Jython会将Python代码动态编译成Java字节码,而后在JVM上运行。
  • IronPython
        Python的C#实现,IronPython将Python代码编译成C#字节码,而后在CLR上运行。(与Jython相似)
  • PyPy(特殊)
        Python实现的Python,将Python的字节码字节码再编译成机器码。
  • RubyPython、Brython ...

 区别

  CPython

  当咱们从Python官方网站下载并安装好Python 2.7后,咱们就直接得到了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,因此叫CPython。在命令行下运行python就是启动CPython解释器。

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的字节码。

速度对比

3、 Python 2 or 3?                                                                                                                                          

  Python的3​​.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了避免带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。

许多针对早期Python版本设计的程式都没法在Python 3.0上正常执行。

  为了照顾现有程式,Python 2.6做为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,容许使用部分Python 3.0的语法与函数。新的Python程式建议使用Python 3.0版本的语法。

除非执行环境没法安装Python 3.0或者程式自己使用了不支援Python 3.0的第三方库。目前不支援Python 3.0的第三方库有Twisted, py2exe, PIL等。

大多数第三方库都正在努力地相容Python 3.0版本。即便没法当即使用Python 3.0,也建议编写相容Python 3.0版本的程式,而后使用Python 2.6, Python 2.7来执行。

4、 Hello word                                                                                                                                                  

新创建一个.py的文件而后编辑内容

print "hello,world" 

就是在页面上显示hello world

python内部执行过程以下:

5、 编码                                                                                                                                                                                                                                                                                                                              

python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其余西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,因此,ASCII码最多只能表示 256 个符号。

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每一个字符设定了统一而且惟一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

UTF-8,是对Unicode编码的压缩和优化,他再也不使用最少使用2个字节,而是将全部的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

因此,python解释器在加载 .py 文件中的代码时,py2默认用ASCLL,py3默认用UTF-8

6、 输入输出                                                                                                                                                                                                                                                                                                           

name = input("你的名字:")
print(name)

输入密码时,若是想要不可见,须要利用getpass 模块中的 getpass方法,即:

import getpass
val = input('请输入用户名:')
#val_pwd=input('请输入密码:')
pwd = getpass.getpass("请输入密码:")#暗密,不能在IDE中运行
print(val,pwd)

7、 变量                                                                                                                                     

变量定义的规则:

  • 变量名只能是 字母、数字或下划线的任意组合
  • 变量名的第一个字符不能是数字
  • 如下关键字不能声明为变量名
    ['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']

8、 经常使用数据类型                                                                                                                                                                                                                                                                                                                 

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也不会致使严重后果了。
float(浮点型)
  浮点数用来处理实数,即带有小数的数字。相似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。

complex(复数)
  复数由实数部分和虚数部分组成,通常形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257
 
布尔值
真或假
1 或 0
字符串
能够经过命令来查看
列表list
字典dict
 
a = 'sss'
print(type(a))

九、 表达式条件判断                                                                                                                                

例子:
1.页面显示:请输入用户名
2.页面显示:请输入密码
3.若是用户名等于“alex”而且密码等于“boy”则成功
username = input("请输入用户名")
password = input("请输入密码")

if username == "alex" and password == "boy":
    print('登陆成功')
else:
    print('登陆失败')

多条件判断

user=input('请输入用户名:')
if user == 'alex':
    print('超级大boy')
elif user == 'oldboy':
    print('超级大老板')
elif user == 'eric':
    print('超级大boss')
else:
    print('普通用户')
print('结束')

条件嵌套

msg = """
欢迎致电10086
1,查询话费
2,查水表
3,人工服务
"""

print(msg)

choice = input("请选择您所须要的服务")
if choice == "1":
    print("1.查询话费;2.查询他人手机;3.查询座机")
    search_type = input("请输入要查询的类型:")
    if search_type == "1":
        print('查询本机')
    elif search_type == "2":
        print("查询他人手机")
    elif search_type == "3":
        print("查询座机")
    else:
        print("输入错误")
elif choice == "2":
    print("查水表")
elif choice == "3":
    print("人工服务")
else:
    print("错误")

其中and为逻辑运算

算数运算:

比较运算:

赋值运算:

成员运算:

身份运算:

位运算:

运算符优先级:

 10、 表达式及循环语句                                                                                                                                                                                                                                                             

 

有限循环 ,次数限制
无限循环=死循环
continue 结束本次循环,继续下一次循环
break 跳出整个当前的循环

 while 循环                                                                                                                                               

while True:
    print('红鲤鱼与绿鲤鱼与驴')

  

 这样的话就会变成死循环

所以能够在while 中加入条件

如:

print3次红鲤鱼与绿鲤鱼与驴后打印完成

timer = 0
while timer < 3:
    print('红鲤鱼与绿鲤鱼与驴')
    timer = timer + 1

print('完成')

 例子:

打印1-10

count =1
while count < 11:
    print(count)
    count = count + 1

break

在print结束后跳出循环体

while True:
    print('红鲤鱼与绿鲤鱼与驴')
    break

  

continue

在循环中条件为真,循环成立

这段代码中,continue是跳出当前本次循环,因此条件成立变为死循环

while True:
    print('sss')
    continue
    print('ooooo')

例子:

输出1-10,break

count = 1
while True:
    print(count)
    count =count + 1
    if count == 11:
        break  

输出1-10,其中不输出7

count = 1
while count < 11:
    if count == 7:
        count = count + 1
        continue
    print(count)
    count = count + 1  

思路:

  1,要1-10因此必须<11,而后判断count是否等于7

  2,等于7的时候跳出当次循环,注意,在count等于7的时候,必须count = count + 1,缘由是因,若是直接continue的话,那么会夯住,只要到7就跳出

  例如:

  3,而后rount+1,最后打印

for循环                                                                                                                                        

for i in range(1,101):
    if i % 2 ==1:
    print ("loop:",i)


for i in range(100):
    if i < 50 or i > 70:
    print(i)  

用for循环模拟用户登陆器1

 

_user = 'alex'
_passwd ='abc123'


for i in range(3):
    username = input("Username:")
    password = input("password:")
    if username == _user and password == _passwd:
        print("Welcome %s login..."%_user)
        break #跳出,中断
    else:
        print("Invalid username or password !")
else:
    print("要不要脸")
思路:
            1,默认一个用户名和密码。用户输入后进行比对
            2,设置三次循环登陆,每次登陆成功显示那个用户后退出,每次登陆失败打印Invalid username or password !
            3,登陆三次,失败后打印“臭不要脸”

 

用for循环模拟用户登陆器2

_user ="alex"
_passwd = "abc123"

passed_authentication = False #假,不成立

for i in range(3):
    username = input("Username:")
    password = input("Password:")
    if username == _user and password == _passwd :
        print("Welcome %s login...." % _user)
        passed_authentication = True #,真,成立
        break #跳出,中断
    else:
        print("Invalid username or password !")
if not passed_authentication:#只有在True的状况下,条件成立
    print("要不要脸,臭流氓啊") 
思路:
           1,默认一个用户名和密码,默认passed_authentication = False,用户输入后进行比对。
           2,设置三次循环登陆,每次登陆成功显示那个用户后,把 passed_authentication = True,显示那个用户后退出,每次登陆失败打印Invalid username or password !
           3,登陆失败三次后,判断 passed_authentication,是true条件成立,打印“臭不要脸”

 

 

列表字典详见day2。。。。。。                   

相关文章
相关标签/搜索