Day1 - Python基础

本节内容

一、 Python简介 
二、安装
三、第一个程序(hello world)
四、解释器
五、编程语言的分类
六、注释
七、变量
八、中文的问题
九、运算
十、输入/输出
十一、流程控制/if/for/while 
十二、数字+字符串+格式化
 
 
 
今日目标:
  实现用户登陆、三级菜单
 
 

一、 Python简介

1.1 python的由来

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

  Python社区的人赋予他“仁慈大君” 的称号,这一称号直接来自英国肥皂剧《Monty Python飞行马戏团》。Guido当初之因此选中Python做为语言的名字,是由于他太喜欢这部肥皂剧了。html

      

  

1.2 python的现状

        
      
 

1.3 python 的特色

  引用一段《python基础教程》开场白:java

  编写C程序就像一群人拿着剃刀在刚打过蜡的舞场内跳快舞python

                                               ------Walidi Ravenslinux

  C++:难学更难用,设计如此c++

                                                    ------匿名shell

  在不少方面,Java就是C++ 编程

                                              ------Michael Feldmanswift

  如今请看一种史无前例的表演......vim

                                     ------Monty Python的表演《飞行的马戏团》

 
任何编程语言都有缺点,Python也不例外:
第一个缺点就是运行速度慢,和C程序相比很是慢,由于Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程很是耗时,因此很慢。而C程序是运行前直接编译成CPU能直接执行的机器码,因此很是快。
第二个缺点是,线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁。是计算机程序设计语言解释器用于同步线程的工具,使得任什么时候刻仅有一个线程在执行,Python的线程是操做系统的原生线程。在Linux上为pthread,在Windows上为Win thread,彻底由操做系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即便在多核CPU平台上,因为GIL的存在,因此禁止多线程的并行执行。关于这个问题的折衷解决方法,咱们在之后线程和进程章节里再进行详细探讨。
第三个缺点就是代码不能加密。
 

1.4 Python主要应用领域

  • WEB/客户端 开发: 豆瓣、Youtube 、Quora 、BitTorrent、dropbox 、Gmail、Google Maps
  • 云计算:OpenStack
  • 爬虫:搜索引擎、网站比价、买火车票
  • 游戏: EVE online 、Civilization IV
  • 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系统运维: 运维人员必备语言
  • 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,并且重要性逐年提升。缘由:做为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤为擅长策略回测
  • 图形GUI: PyQT, WxPython,TkInter

 

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

 1.6 如何学好python

 

二、Python开发必备环境

   

2.1 如何获取python

https://www.python.org/downloads/ 

2.2 如何安装

windows:

 

 linux:

查看默认Python版本
python -V
  
一、安装gcc,用于编译Python源码
    yum install gcc
二、下载源码包,https://www.python.org/ftp/python/
三、解压并进入源码文件
四、编译安装
    ./configure
    make all
    make install
五、查看版本
    /usr/local/bin/python2.7 -V
六、修改默认Python版本
    mv /usr/bin/python /usr/bin/python2.6
    ln -s /usr/local/bin/python2.7 /usr/bin/python
七、防止yum执行异常,修改yum使用的Python版本
    vi /usr/bin/yum
    将头部 #!/usr/bin/python 修改成 #!/usr/bin/python2.6

 

三、第一个python程序 Hello World!

在什么地方写一个python程序?

3.1 使用python交互程序

3.2 使用文件

windows:

推荐Notepad++ ,不要用Word和Windows自带的记事本。Word保存的不是纯文本文件,而记事本会自做聪明地在文件开始的地方加上几个特殊字符(UTF-8 BOM),结果会致使程序运行出现莫名其妙的错误!

 

linux:

# vim hello.py
# python hello.py
Hello World!

上一步中执行 python hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。

若是想要相似于执行shell脚本同样执行python脚本,例: ./hello.py ,那么就须要在 hello.py 文件的头部指定解释器,以下:

#!/usr/bin/env python
#The first code
print "hello,world"

ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py

 

解释器:

Python在执行时,解释器会将.py文件中的源代码编译成Python的byte code(字节码),而后再执行这些编译好的byte code。

 

对比下其它语言的hello world

  C++
  C
  JAVA
  PHP
  RUBY
  Go

 

3.3 使用IDE---pycharm(windows)

补充知识:编译型语言和解释型语言

编译型语言

需经过编译器(compiler)将源代码编译成机器码,以后才能执行的语言。通常需通过编译(compile)、连接(linker)这两个步骤。编译是把源代码编译成机器码,连接是把各个模块的机器码和依赖库串连起来生成可执行文件。

优势:编译器通常会有预编译的过程对代码进行优化。 由于编译只作一次,运行时不须要编译,因此编译型语言的程序执行效率高 。能够脱离语言环境独立运行。

缺点:编译以后若是须要修改就须要整个模块从新编译。编译的时候根据对应的运行环境生成机器码,不一样的操做系统之间移植就会有问题,须要根据运行的操做系统环境编译不一样的可执行文件。

表明语言:C、C++、 Pascal、Object-C以及最近很火的苹果新语言swift

解释型语言

解释性语言的程序不须要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才逐行翻译。

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

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

表明语言:JavaScript、Python、Erlang、PHP、Perl、Ruby

混合型语言

既然编译型和解释型各有缺点就会有人想到把两种类型整合起来,取其精华去其糟粕。就出现了半编译型语言。好比C#,C#在编译的时候不是直接编译成机器码而是中间码,.NET平台提供了中间语言运行库运行中间码,中间语言运行库相似于Java虚拟机。我我的认为抛开一切的偏见C#是这个星球上最好的编程语言。惋惜微软的政策限制了C#的推广。

Java先生成字节码再在Java虚拟机中解释执行。

严格来讲混合型语言也属于解释型语言。

 

四、注释

  单行注视:#  被注释内容

  多行注释:""" 被注释内容 """

 

# 井号能够注释单行代码
"""
3个双引号或者单引号
能够注释多行内容
"""

  

五、变量和数据类型  

变量能够用来存储数据和被程序调用,它由名字和值两部分组成,能够把它想象成一个容器,容器的名字和值会被保存在内存中。

#_*_coding:utf-8_*_
 
name = "Alex Li"    
age = 18
sales = 4432.67 / 1.20   

  

 

变量定义的规则:

  • 变量名只能是 字母、数字或下划线的任意组合
  • 变量名的第一个字符不能是数字
  • 如下关键字不能声明为变量名
    ['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']
变量的赋值
name = "Alex Li"
 
name2 = name
print(name,name2)
 
name = "Jack"
 
print("What is the value of name2 now?")

  

六、输入/输出

输出:

在print()括号中加上字符串,就能够向屏幕上输出指定的文字。

print('hello, python')  

print()函数也能够接受多个字符串,用逗号“,”隔开,就能够连成一串输出:

name = “france”
print(“my name is :”,name)  

print()会依次打印每一个字符串,遇到逗号“,”会输出一个空格。

 

输入:

Python提供了一个input(),可让用户输入字符串

 

七、中文的问题

#!/usr/bin/env python
  
print "你好,世界"

 
错误缘由:python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ASCII码),但ASCII不支持中文。

 

字符编码:

 字符编码英语:Character encoding)、字集码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、天然数序列8位组或者电脉冲),以便文本计算机中存储和经过通讯网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特二进制来表示这个整数。一般会额外使用一个扩充的比特,以便于以1个字节的方式存储。

 

 

ASCII

 ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其余西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,因此,ASCII码最多只能表示 255 个符号。ASCII规范标准在1967发表,最后一次更新则是在1986年。至今为止共定义了128个字符。

 

GB2312/GBK/GB18030 

GB 2312 是中国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,又称GB0,由中国国家标准总局在1981年发布实施。GB 2312标准共收录6763个汉字。

GBK即汉字内码扩展规范。共收入21886个汉字和图形符号。

GB 18030与GB 2312-1980彻底兼容,与GBK基本兼容,支持GB 13000及Unicode的所有统一汉字,共收录汉字70244个。

 

各国语言编码

http://blog.csdn.net/miqi770/article/details/43935273

 

Unicode

Unicode(中文万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑能够用更为简单的方式来呈现和处理文字。

Unicode伴随着通用字符集的标准而发展,同时也以书本的形式[1]对外发表。Unicode至今仍在不断增修,每一个新版本都加入更多新的字符。目前最新的版本为2016年6月21日公布的9.0.0[2],已经收入超过十万个字符(第十万个字符在2005年获采纳)。Unicode涵盖的数据除了视觉上的字形、编码方法、标准的字符编码外,还包含了字符特性,如大小写字母。

 

UTF-8

UTF-88-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。它能够用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须作少部分修改,便可继续使用。所以,它逐渐成为电子邮件网页及其余存储或发送文字的应用中,优先采用的编码。

UTF-8使用一至六个字节为每一个字符编码(尽管如此,2003年11月UTF-8被RFC 3629从新规范,只能使用原来Unicode定义的区域,U+0000到U+10FFFF,也就是说最多四个字节)

 

改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
  
print "你好,世界" 

 

 

八、流程控制之if ... else

 

场景1、用户登录验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 提示输入用户名和密码
  
# 验证用户名和密码
#     若是错误,则输出用户名或密码错误
#     若是成功,则输出 欢迎,XXX!
 
 
#!/usr/bin/env python
# -*- coding: encoding -*-
  
import  getpass
  
  
name  =  raw_input ( '请输入用户名:' )
pwd  =  getpass.getpass( '请输入密码:' )
  
if  name  = =  "alex"  and  pwd  = =  "cmd" :
     print ( "欢迎,alex!" )
else :
     print ( "用户名和密码错误" )

场景2、猜年龄游戏

在程序里设定好你的年龄,而后启动程序让用户猜想,用户输入后,根据他的输入提示用户输入的是否正确,若是错误,提示是猜大了仍是小了

  

外层变量,能够被内层代码使用
内层变量,不该被外层代码使用

 

十二、表达式for loop

最简单的循环10次

1
2
3
4
5
6
#_*_coding:utf-8_*_
__author__  =  'Alex Li'
 
 
for  in  range ( 10 ):
     print ( "loop:" , i )

输出:

1
2
3
4
5
6
7
8
9
10
loop:  0
loop:  1
loop:  2
loop:  3
loop:  4
loop:  5
loop:  6
loop:  7
loop:  8
loop:  9

需求一:仍是上面的程序,可是遇到小于5的循环次数就不走了,直接跳入下一次循环

1
2
3
4
for  in  range ( 10 ):
     if  i< 5 :
         continue  #不往下走了,直接进入下一次loop
     print ( "loop:" , i )

需求二:仍是上面的程序,可是遇到大于5的循环次数就不走了,直接退出

1
2
3
4
for  in  range ( 10 ):
     if  i> 5 :
         break  #不往下走了,直接跳出整个loop
     print ( "loop:" , i )

 

1三、while loop   

 有一种循环叫死循环,一经触发,就运行个天荒地老、海枯石烂。

海枯石烂代码

1
2
3
4
5
count  =  0
while  True :
     print ( "你是风儿我是沙,缠缠绵绵到天涯..." ,count)
     count  + = 1
    

 

其实除了时间,没有什么是永恒的,死loop仍是少写为好 

上面的代码循环100次就退出吧

 

 

 

回到上面for 循环的例子,如何实现让用户不断的猜年龄,但只给最多3次机会,再猜不对就退出程序。

  

  

 

做业一:博客

 

做业二:编写登录接口

  • 输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后锁定

 

做业三:多级菜单
  • 三级菜单
  • 可依次选择进入各子菜单
  • 所需新知识点:列表、字典
相关文章
相关标签/搜索