此博客的脑图链接:http://naotu.baidu.com/file/67ebf90eb5073fd8b9fbed8251b22956?token=f4c5d28e2c6e085e
下面第一部分为在脑图下更加详细的介绍:
一、脑图细化分析:
python的发展史
- 1989年,Guido(龟叔),为ABC语言写插件,Monty Python喜剧团;
- 1990年,发布python第一个版本;
- 2001年,2.x; (python2.7 —-> python2.8<不会存在>);
- 2013年,python3.0
编程语言:
C,Java,C++, C#, shell, ruby, php, JavaScript, Matlab等等
有以下两种比较流行的分类:
1>
- 面向对象语言
##面向对象语言(Object-Oriented Language)是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。语言中提供了类、继承等成分,有识认性、多态性、类别性和继承性四个主要特点。
- 面向过程语言
##面向过程的语言也称为结构化程序设计语言,是高级语言的一种。在面向过程程序设计中,问题被看作一系列需要完成的任务,函数则用于完成这些任务,解决问题的焦点集中于函数。其概念最早由E.W.Dijikstra在1965年提出,是软件发展的一个重要里程碑。它的主要观点是采用自顶向下、逐步求精的程序设计方法,使用三种基本控制结构构造程序,即任何程序都可由顺序、选择、循环三种基本控制结构构造。
- 面向函数编程
##一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数、定义函数和函数型.这种语言具有较强的组织数据结构的能力,可以把某一数据结构(如数组)作为单一值处理;可以把函数作为参数,其结果也可为函数,这种定义的函数称为高阶函数.程序就是函数,程序作用在结构型数据上,产生结构型结果,从根本上改变了冯·诺伊曼式语言的“逐词”工作方式.
2>
- 编译型语言
##比如说在Windows用C写了一个QQ软件,并不能在Linux上执行,也不能在IOS上运行;
- 解释型语言
##可以跨平台,你用python写一个APP,只需要写一份,在所有的平台上可以运行;
python的优缺点
优点:
-简单:代码量相比较c会少很多,有很多的库
-优雅:必须按照格式进行缩进
-明确:仅有唯一最优解
缺点:
- 速度慢
爬虫:
http://www.baidu.com/xxx.html
wget xxx.html
分析
python C
1h+10ms 1h+1ms
##10ms和1ms相对于1h来说就显的微乎其微理,故而,Python本身的缺点也显的没有那么重要了
ipython的安装
第一个python脚本
解释器问题
# 可移植性的对比,如果你的代码移植到的机器,python并未安装在/usr/bin/python这里,就使用第二种;
#!/usr/bin/python
#!/usr/bin/env python
中文问题
#coding:utf-8
#coding=utf-8
#encoding:utf-8
#encoding=utf-8
#encoding:-*- utf-8 -*- ##此种方法仅仅只是看起来比较好看
编码格式:
ASCII:美国人发明了计算机,1个字节(8位)去存储一个英文字符,2^8=256;
Unicode:2个字节(16位)去存储一个字符,2^16=65536;
GB2312:
utf-8:在编程过程中,英文多,中文少。如果是英文字符,就用一个字节去存储;如果是中文用3个字节去存储;
python的IDE工具
- sublime
- eclipse
- pycharm
快捷键和技巧
- ctrl+alt+s:设置
- alt+insert:新建(文件,目录,包)
- Delete:删除(文件,目录,包)
- ctrl + /: 快速注释(或取消)一行或多行
- ctrl+d: 快速复制一行
- shift+delete:快速删除一行
二、问题思考:
- 你理解的python是什么?为什么会使用python?
交互式必须掌握的一门脚本语言,Python的语法简单,速度相比较而言还是可以接受的。 - 解释python第一行怎么写?写的内容是做什么的?怎么写可移植性强?为什么?
#!/usr/bin/python ##文件的解释器
#!/usr/bin/env python ##此种方法的解释器,会自动的找python文件,前一种方法使用的是yum安装的,其路径是标准唯一的,而如果使用源码安装,路径会有所差异 - 解释编码格式ASCII,Unicode和utf-8的不同点?
ASCII:1个字节(8位)存储一个英文字符,2^8=256;
Unicode:2个字节(16位)去存储一个字符,2^16=65536;
utf-8:在编程过程中,英文多,中文少。如果是英文字符,就用一个字节去存储;如果是中文用3个字节去存储; - raw_input和input的区别?
raw_input:字符串型
input:数值型 - 三个双引号号(或者三个单引号的)可以用来做什么?
a、批量注释
b、标准输出时,可以使用此方法 python格式化输出(包含变量)的方法有哪些?并举例列出?
1) A=1 ##单个变量赋值 print "A:",A ##输出打印 2) A=1 ##多个变量赋值 B=2 ##使用%d进行占位,从而输出打印,此方法的一个弊端就是:每一个变量值的类型都必须要做到心中有数且不能输错 3) A=1 B=2 print "A:{} B:{}".format(A,B) ##弥补理2)的不足,但必须严格按照顺序输入 4) print "A:{A} B:{B}".format(A=1,B=2) ##弥补了3)的不足,顺序不重要,但是,大括号中的参数要对应起来
三、编程练习:
1. 用户登陆v1:
1). 假设系统中的用户名"root",密码为"westos";
2). 如果用户输入用户名和密码均正确显示"login ok"
如果用户名错误,显示"user is not exist"
如果密码错误,显示"password is no ok"
3). 只有三次登陆机会,超过三次,显示"count is bigger than 3"
[问题分析]
关键在于"三次登陆机会"表示的是,第四次登录的成功与否已经不重要,必然退出程序
[Python]
#!/usr/bin/env python
#coding:utf-8
"""
file:login.py
date:8/24/179:56 PM
author:hx
desc:login
"""
username="root"
password="westos"
for i in range(1,5):
Name = raw_input("Please input username:")
Passwd = raw_input("Please input password:")
if i==4:
print "count is bigger than 3"
exit(0)
else:
if Name!=username or Passwd!= password:
if Name!=username:
print "user is not exist"
if Passwd!= password:
print "password is no ok"
else:
print "login ok"
exit(0)
2. 编写乘法表
[问题分析]
关键在于双重循环的使用,以及九九乘法表每一行的输出,其实是大数在前,小数在后,注意细节问题
[Python]
#!/usr/bin/env python
#coding:utf-8
"""
file:chengfabiao.py
date:8/24/179:43 PM
author:hx
desc:chengfabiao
"""
for i in range(1,10):
for j in range(1,10):
print i,"*",j,"=",i*j,\t
if i==j:
break
print "\n"