*:first-child {
margin-top: 0 !important;
}

body>*:last-child {
margin-bottom: 0 !important;
}

/* BLOCKS
=============================================================================*/

p, blockquote, ul, ol, dl, table, pre {
margin: 15px 0;
}

/* HEADERS
=============================================================================*/

h1, h2, h3, h4, h5, h6 {
margin: 20px 0 10px;
padding: 0;
font-weight: bold;
-webkit-font-smoothing: antialiased;
}

h1 tt, h1 code, h2 tt, h2 code, h3 tt, h3 code, h4 tt, h4 code, h5 tt, h5 code, h6 tt, h6 code {
font-size: inherit;
}

h1 {
font-size: 28px;
color: #000;
}

h2 {
font-size: 24px;
border-bottom: 1px solid #ccc;
color: #000;
}

h3 {
font-size: 18px;
}

h4 {
font-size: 16px;
}

h5 {
font-size: 14px;
}

h6 {
color: #777;
font-size: 14px;
}

body>h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h4:first-child, body>h5:first-child, body>h6:first-child {
margin-top: 0;
padding-top: 0;
}

a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
margin-top: 0;
padding-top: 0;
}

h1+p, h2+p, h3+p, h4+p, h5+p, h6+p {
margin-top: 10px;
}

/* LINKS
=============================================================================*/

a {
color: #4183C4;
text-decoration: none;
}

a:hover {
text-decoration: underline;
}

/* LISTS
=============================================================================*/

ul, ol {
padding-left: 30px;
}

ul li > :first-child,
ol li > :first-child,
ul li ul:first-of-type,
ol li ol:first-of-type,
ul li ol:first-of-type,
ol li ul:first-of-type {
margin-top: 0px;
}

ul ul, ul ol, ol ol, ol ul {
margin-bottom: 0;
}

dl {
padding: 0;
}

dl dt {
font-size: 14px;
font-weight: bold;
font-style: italic;
padding: 0;
margin: 15px 0 5px;
}

dl dt:first-child {
padding: 0;
}

dl dt>:first-child {
margin-top: 0px;
}

dl dt>:last-child {
margin-bottom: 0px;
}

dl dd {
margin: 0 0 15px;
padding: 0 15px;
}

dl dd>:first-child {
margin-top: 0px;
}

dl dd>:last-child {
margin-bottom: 0px;
}

/* CODE
=============================================================================*/

pre, code, tt {
font-size: 12px;
font-family: Consolas, "Liberation Mono", Courier, monospace;
}

code, tt {
margin: 0 0px;
padding: 0px 0px;
white-space: nowrap;
border: 1px solid #eaeaea;
background-color: #f8f8f8;
border-radius: 3px;
}

pre>code {
margin: 0;
padding: 0;
white-space: pre;
border: none;
background: transparent;
}

pre {
background-color: #f8f8f8;
border: 1px solid #ccc;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px;
}

pre code, pre tt {
background-color: transparent;
border: none;
}

kbd {
-moz-border-bottom-colors: none;
-moz-border-left-colors: none;
-moz-border-right-colors: none;
-moz-border-top-colors: none;
background-color: #DDDDDD;
background-image: linear-gradient(#F1F1F1, #DDDDDD);
background-repeat: repeat-x;
border-color: #DDDDDD #CCCCCC #CCCCCC #DDDDDD;
border-image: none;
border-radius: 2px 2px 2px 2px;
border-style: solid;
border-width: 1px;
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
line-height: 10px;
padding: 1px 4px;
}

/* QUOTES
=============================================================================*/

blockquote {
border-left: 4px solid #DDD;
padding: 0 15px;
color: #777;
}

blockquote>:first-child {
margin-top: 0px;
}

blockquote>:last-child {
margin-bottom: 0px;
}

/* HORIZONTAL RULES
=============================================================================*/

hr {
clear: both;
margin: 15px 0;
height: 0px;
overflow: hidden;
border: none;
background: transparent;
border-bottom: 4px solid #ddd;
padding: 0;
}

/* TABLES
=============================================================================*/

table th {
font-weight: bold;
}

table th, table td {
border: 1px solid #ccc;
padding: 6px 13px;
}

table tr {
border-top: 1px solid #ccc;
background-color: #fff;
}

table tr:nth-child(2n) {
background-color: #f8f8f8;
}

/* IMAGES
=============================================================================*/

img {
max-width: 100%
}
-->

pytho自动化开发 day01

Date:2015.12.26

作者注:

  python学习旅程正式开启,这一天将是一个新的开始。希望我们在python开发的道路上多多积累、多分享!

一、python简介

python应用
Disgus Voitze Yelip Mozilla Quora Redit
豆瓣、知乎、sohu、腾讯、网易、金山、雅虎、Facebook、 Instagram(图片分享)
python2与python3比较
经过多年的发展,python3已经得到更多的第三方优秀函数库兼容,对比python2来说,python3表现出来的精简高效特性让开发者们跃跃欲试。
另外,python2.7.11作为python2版本的最后一个版本,不再有新版本推出,这样官方更多的引导开发者快速的向python3版本上进行转移。
在本次学习的过程中,我们会穿插在python2和python3两个版本之间进行学习,后续的测试代码在开头会明确标记python的使用版本。相关注释都会对python2和python3的差异进行描述。

二、python安装

1.windows端安装
安装包下载地址:
python2.7版本:
https://www.python.org/ftp/python/2.7.11/python-2.7.11.amd64.msi
python3.5版本:
https://www.python.org/ftp/python/3.5.1/python-3.5.1-amd64.exe #安装版
https://www.python.org/ftp/python/3.5.1/python-3.5.1-embed-win32.zip #免安装版
安装步骤:
使用可执行程序进行安装,按照流程进行安装即可,注意在安装的时候选择“安装路径”和一些必要的插件,比如pip、easy_install等
使用免安装的文件(可嵌入的)进行环境配置:

2.linux端安装
centos6等常用系统自带的python版本为2.6,有特殊需求的朋友可能需要升级到python2.7或者python3版本。下面链接以python2.7.8为例进行编译安装。
http://swht1278.blog.51cto.com/7138082/1728427
提供一下python版本的下载地址:
python2.7.11版本:
https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz
python3.5版本:
https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
3.Ubuntu端安装
最新版本的Ubuntu系统(15.04等)已经自带了python2.7.9和python3.4.5两个版本的python环境,我们只需要在shell终端输入python2或python3进行调用即可。老版本的系统升级python环境需要以下操作:
# 增加python源
sudo add-apt-repository ppa:fkrull/deadsnakes
# update 软件列表
sudo apt-get update
# 安装python3
sudo apt-get install python3.5

三、基础概念

变量:Python 是动态类型语言, 也就是说不需要预先声明变量的类型。变量是对象的引用,变量只是将指针指向了对象所在的内存地址。变量的类型和值在赋值那一刻被初始化。
变量起名:
1.显式-->通俗易懂
2.nums_of_alex_gf = 19
3.NumsOfAlexGf = 20 驼峰写法
4.中横线不能作为变量的命名字符
5.数字不能作为开头,但可以在中间或者结尾
6.特殊字符不能作为变量名的组成部分
7.不能使用空格
8.关键字不能声明为变量

四、运算符

算术运算符
+ - * / // % **
/:传统除法,将执行地板除法,
//:浮点除法,即去尾法除法,保留位数与除数和被除数的小数位数有关 (取整除,返回商的部分)
**:平方运算
比较运算符
< <= > >= == != <>
不等于:!= <>
返回值是:True 和 False
赋值运算符
>>> counter =
>>> miles = 1000.0
>>> name = 'Bob'
>>> counter = counter +
>>> kilometers = 1.609 * miles
>>> print '%f miles is the same as %f km' % (miles, kilometers)
1000.000000 miles is the same as 1609.000000 km
支持简写:n=n* -> n*= 但不支持自增自减,因为“-” 和”+”是单目字符,--n -> -(-n)n
位运算符
& 按位与 (a&b)
| 按位或 (a|b)
^ 按位异或 (a^b)
~ 按位取反 (~a)
<< 左移动 a<< 整体向左移动,结果是原来数值的2倍
>> 右移动 a>> 整体向右移动,结果是原来数值的1/
逻辑运算符
and 布尔“与” 同真为True
or 布尔“或” 同假为False
not 布尔“非” 非True即False
成员运算符
in 如果在指定序列中找到指定的值,返回True
not in 如果在指定序列中没找到指定的值,返回False
身份运算符
is 判断两个标识符是不是引用自同一个对象
type(names) is list 判断某个变量值的类型(list、int、dic)
is not 判断两个标识符是不是引用自不同对象

五、字符编码

python2 中在输入中文字符的时候会报字符编码的错误,在python3中已经引入了Unicode(万国码、统一码、单一码),它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定所有的字符和符号最少由16位二进制来表示(2个字节),即2 ** 16 = 65536
UTF-8,是对Unicode编码的压缩和优化,它不再使用最少2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存,欧洲的字符用2个字节保存,东亚的字符用3个字节保存 示例
python2
#!/usr/local/env python2
# -*- coding: utf-8 -*- # 声明使用的字符类型,否则会报错
'''
@swht
'''
print "你好!" python3
#!/usr/local/env python3
'''
@swht
'''
print ("你好!") 总结:在python3中完全不用考虑字符编码的问题,python解释器会自行处理字符类型的问题

六、python流程控制

流程控制分为两大类:条件判断和循环
其中循环又分为两类:for循环和while循环
条件判断和循环可以单独存在,也可以嵌套使用,以处理更为复杂的逻辑问题。

下面会从if条件判断for循环while循环进行代码示例:

if_ex.py

#!/usr/bin/env python3
'''
@swht
'''
LuckyNum = 9
# 让用户输入一个数值与指定的值进行比较,当然这里没有处理用户输入为空的情况
# strip() 可以截取用户输入字符串首尾的空格
UserInputNum = int(input("请从1-100之间选择一个数字输入:").strip())
if UserInputNum > LuckyNum:
print("你输入的数字比我的LuckNum要大哦!")
elif UserInputNum < LuckyNum:
print("你输入的数字比我的LuckNum要小哦!")
else:
print("恭喜你猜中了我的LuckNum,原来你就是我的幸运天使!")

while_ex.py

#!/usr/bin/env python3
'''
@swht
'''
LuckyNum = 9
# 设置一个标志位,用于程序判断退出循环
flag = True
while flage:
UserInputNum = int(input("请从1-100之间选择一个数字输入:").strip())
if UserInputNum > LuckyNum:
print("你输入的数字比我的LuckyNum要大哦!")
elif UserInputNum < LuckyNum:
print("你输入的数字比我的LuckyNum要小哦!")
else:
print("恭喜你猜中了我的LuckyNum,原来你就是我的幸运天使!")
flag = False

for_ex.py

#!/usr/bin/env python3
'''
@swht
'''
LuckyNum = 9
for count in range(3):
UserInputNum = int(input("请从1-100之间选择一个数字输入:").strip())
if UserInputNum > LuckyNum:
print("你输入的数字比我的LuckyNum要大哦!")
elif UserInputNum < LuckyNum:
print("你输入的数字比我的LuckyNum要小哦!")
else:
print("恭喜你猜中了我的LuckyNum,原来你就是我的幸运天使!")
break
else:
print("你输入的次数已达到3次,程序即将退出!")

对比break和countnue

break是结束整个循环体,continue是结束单次循环

示例
#!/usr/local/env python3
'''
@swht
'''
x = 0
while x < 10:
if x ==3:
break
x += 1
print("x=%s" % x)
输出结果: x=1
x=2
x=3
直接退出了整个while循环

七、格式化输出

使用'''string'''可以很方便的将多行内容进行注释,另外这个符号还有一个功能,那就是文档描述的功能。一般而言,在程序的前面后有一个文档说明,包括作者信息,版本信息,功能等

#!/usr/bin/env python
'''
@swht
''' name = input("name:")
age = input("age:")
job = input("job:") print("Information of:" + name + "\nname:" + name + "\nage:" + age + "\njob:" + job)
print("Information of %s\nname:%s\nage:%s\njob:%s" %(name,name,age,job))
print('''
Infomation of %s
name:%s
age:%s
job:%s
''' % (name,name,age,job))

八、数据类型:

列表转换成元组:tuple(name_list)

元组转换成列表:list(元组_name)

    1.数字
int 整型
long 长整型
float 浮点型
2.布尔
1 真
0 假
3.字符串
stinglist = “Hello World”
字符串操作:
(参考:http://www.cnblogs.com/zhxiang/p/3385242.html
http://www.jb51.net/article/47956.htm)
移除空白:stinglist.strip()
移除特殊字符:stinglist.lstrip().rstrip(',')
分割:>>> stringlist[2]
'l'
长度:>>> len(stringlist)
11
索引:>>> stringlist.index('W') #字母‘W’所在的索引值
6
切片:>>> stringlist[0:3] #顾前不顾尾
'Hel'
字符串在输出时的对齐:
>>> stringlist[0:3]
'Hel'
>>> stringlist[0:3].ljust(5) #ljust(width,[fillchar]) fillchar为填充字符,默认为空格
'Hel '
字符串拼接:
>>> stringlist += s
>>> stringlist
'Hello Worldab,cde,fgh,ijk'
大小写转换:
>>>stringlist.lower() #小写
'hello world'
>>> stringlist.upper() #大写
'HELLO WORLD'
>>> stringlist.swapcase() #大小写互换
'hELLO wORLD'
>>> stringlist.capitalize() #首字母大写
'Hello world'
>>> string.capwords(stringlist) #以空格分割,每个单词首字母大写
'Hello World'
字符串翻转:
>>> s
'sdsds sdsdsff'
>>> s = s[::-1]
>>> s
'ffsdsds sdsds'
字符串查找:
>>> stringlist.find('World')
6
判断是否为整型:
>>> stringlist.isdigit()
False
判断字符串是否为空格:
>>> stringlist.isspace()
False
转换成列表:
>>> stringlist.split() #默认以空格为分割
['Hello', 'World'] 4.列表(dir(name_list)获取列表操作帮助)
参考:http://www.jb51.net/article/46768.htm
name_list = ['alex', 'sddkd', 'shdjsjd', 'shen', 'swht', 'test']
移除空白:name_list.strip()
获取元素:name_list[index_num]
索引:name_list.index("swht") 获取指定元素的索引值
追加:name_list.append("test") 在列表后面追加一个元素
插入:name_list.insert(3,"ssdd") 在索引值3后面插入新的元素
删除:name_list.pop() 删除最后一个元素
name_list.remove("test") 删除指定的元素
排序:name_list.sort() 对元素按照ASCII码进行排序
python3 里面不能同时sort int 和 str类型
反转顺序:name_list.reverse() 对列表中的元素进行反转操作
切片:name_list[0:3] 切取索引值从0-2的值(切片顾头不顾尾)
扩展:name_list.extend(name_list2) 在一个列表后面追加另一个列表的元素,或者追加一个变量中的单个字符
5.元组
>>> namelist = ("swht","test")
>>> type(namelist)
<class 'tuple'>
索引:>>> namelist.index('swht') #查找某个字符串的索引值
0
统计:>>> namelist.count('swht') #统计某个字符串出现的次数
1
6.字典(无序)
参考:http://www.jb51.net/article/47990.htm 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
键必须不可变,所以可以用数,字符串或元组充当,所以用列表就不行 dict = {"swht":"test123","shen":"test124","test":"test125"}
访问字典里的值:
>>> dict["swht"]
'test123'
增加字典里的值:
>>> dict["alex"] = "test126"
>>> dict
{'test': 'test125', 'shen': 'test124', 'swht': 'test123', 'alex': 'test126'} 删除字典当中的元素:
>>> del dict["test"]
>>> dict
{'shen': 'test124', 'swht': 'test123', 'alex': 'test126'}
>>>
清空字典里的所有条目:
>>> dict.clear()
>>> dict
{}
删除字典:del dict

九、文件操作  参考链接:http://www.cnblogs.com/songqingbo/p/5102618.html

简单操作:
filename = open("文件路径","模式") #打开文件
filename.write('内容') #往文件中写入内容
filename.read() #一次性加载文件中的内容到内存
filename.readlines() #一次性加载所有的内容到内存,并根据行分割成字符串
filename.close() #关闭文件句柄
打开文件的模式:
  r:以只读的模式打开文件
  w:打开一个文件只用于写入,如果文件已存在,将会覆盖
  a:打开一个文件在后面追加内容。文件不存在,将会新建一个文件并追加内容
  w+:打开一个文件进行读写操作,如果文件存在,则将内容覆盖;如果文件不存在,将创建新文件进行写操作

十、作业

作业一:编写登录接口

    http://www.cnblogs.com/songqingbo/p/5091808.html
作业二:多级菜单    
  
    http://www.cnblogs.com/songqingbo/p/5091830.html

python开发学习-day01 (python安装与版本、字符串、字典、运算符、文件)的更多相关文章

  1. visual studio 2015 搭建python开发环境,python入门到精通[三]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...

  2. Android开发学习总结(一)——搭建最新版本的Android开发环境

    Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...

  3. Centos7.4环境下搭建Python开发环境(虚拟机安装+python安装+pycharm安装)

    目录 一.安装 Centos7.4虚拟机 二.安装 python3.6.7 三.安装 pycharm 一般情况下,大家都是在 Windows平台下进行 Python开发,软件安装和环境搭建都非常&qu ...

  4. Python 开发工具和框架安装

    引言: 其实之前对于 Python,只是知道有这门语言而已.大部分还是使用 .net 开发的,之前也学了 MVC+EF 开发,但是由于工作上完全用不到,也就没有在博客记录学习的东西了. 最近又接触到了 ...

  5. python开发学习-day05(正则深入、冒泡排序算法、自定义模块、常用标准模块)

    s12-20160130-day05 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  6. 如何在windows下的Python开发工具IDLE里安装其他模块?

    以安装Httplib2模块为例 1 下载模块 到 “https://code.google.com/p/httplib2/” 下载一款适合你的压缩包“httplib2-0.4.0.zip” 2 解压下 ...

  7. 如何在windows下的Python开发工具IDLE里安装其他模块

    以安装Httplib2模块为例 1 下载模块 到 “https://code.google.com/p/httplib2/” 下载一款适合你的压缩包“httplib2-0.4.0.zip” 2 解压下 ...

  8. Python语言学习之Python入门到进阶

    人们常说Python语言简单,编写简单程序时好像也确实如此.但实际上Python绝不简单,它也是一种很复杂的语言,其功能特征非常丰富,能支持多种编程风格,在几乎所有方面都能深度定制.要想用好Pytho ...

  9. Python开发基础之Python常用的数据类型

    一.Python介绍 Python是一种动态解释型的编程语言.Python它简单易学.功能强大.支持面向对象.函数式编程,可以在Windows.Linux等多种操作系统上使用,同时Python可以在J ...

随机推荐

  1. 深入理解javascript:揭秘命名函数表达式

    这是一篇转自汤姆大叔的文章:http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html 前言 网上还没用发现有人对命名函数表达式进去重复深 ...

  2. 10个最佳的网站和App开发工具

    这个世界充满了创新,开发的激情和决心是实现更高目标的关键因素.在网站开发中,毫无疑问,工具和可用的在线网页和 app 设计资源,发挥了重要的作用. 下面我们将带来一些网站和 app 的最佳工具.   ...

  3. Meteor 之 数据的发布于订阅(Publish and subscribe )

    发布和订阅 发布(Publication)和订阅(Subscription)是 Meteor 的最基本最重要的概念之一,但是如果你是刚刚开始接触 Meteor 的话,也是有些难度的. 这已经导致不少误 ...

  4. http://blog.csdn.net/luxiaoyu_sdc/article/details/7333024

    http://blog.csdn.net/luxiaoyu_sdc/article/details/7333024 http://blog.csdn.net/kkdelta/article/detai ...

  5. 高通/苹果/联发科:手机CPU那些事

    如今人们买手机,都比较关心采用了什么CPU,因为CPU直接决定了这台手机的性能,CPU之于手机就好比人的大脑,它是整台手机的控制中枢系统,也是逻辑部分的控制中心.又相当于车的发动机,发动机越强劲,车子 ...

  6. iOS CoreMotion框架(传感器)

    我们知道iOS的应用真的太多了,很多应用让我们惊叹不已!!!很多意想不到的应用! 比如: 1.电子罗盘指南针之类的应用-让我们知道方向. 2.运动类型软件-让我们知道我们跑步多少公里. 3.社交软件中 ...

  7. Linux命令行通配符

    如果我们想对一类文件批量操作,例如批量查看硬盘文件属性,那么正常命令是如下所示: [root@localhost Desktop]# ls /dev/sda1 [root@localhost Desk ...

  8. jQuery-瀑布流-绝对定位布局(二)(延迟AJAX加载图片)

    jQuery-瀑布流-绝对定位布局(二)(延迟AJAX加载图片)   瀑布流-绝对定位布局,与浮动布局的区别在于 1.布局不一样: 绝对定位:一个UL里面放置所有的绝对定位的LI: 浮动布局:多个(一 ...

  9. ace-min.css

    textarea,input[type="text"],input[type="password"],input[type="datetime&quo ...

  10. org.opencv.android.JavaCameraView 摄像机方向的问题

    ——> org.opencv.android.JavaCameraView 摄像机方向的问题 ref: http://www.tuicool.com/articles/q6vUvqB 注意:一般 ...