Python是一种计算机程序设计语言。你可能已经据说过不少种流行的编程语言,好比很是难学的C语言,很是流行的Java语言html
平常任务,好比自动备份;能够用来作网站;云计算最火的语言;运维人员必备语言等等等python
python目前有两个版本,一个是python2.x 一个是python3.xexpress
关于python两个版本区别此处描写的更加详细编程
http://www.cnblogs.com/codingmylife/archive/2010/06/06/1752807.htmlpython3.x
1 print('hello world!')
变量定义的规则:app
变量的赋值运维
name = 'ly'dom
用print()
在括号中加上字符串,就能够向屏幕上输出指定的文字。好比输出'hello, world'
编程语言
Python提供了一个input()
,可让用户输入字符串,并存放到一个变量里。好比输入用户的名字:ide
>>> name=input('please input your name:') please input your name:ly >>> name 'ly'
input()的输入的类型默认都是字符串
>>> num=input(':') :1 >>> type(num) <class 'str'>
格式化输出字符串可使用%格式化输出,例如
name = input('name:') age = int(input('age:')) score = float(input('score:')) info = (''' -------------info %s ------------- name:%s age:%d score:%.2f ----------------------------------- ''') % (name,name,age,score)
%s 字符串 %d 10进制整数 %f 浮点型(取两位%.2f)
有的时候字符串里面的%是一个普通字符,就须要转义使用%%来表示%
格式化输出还可使用.format方式
1 info1 = (''' 2 -------------info1 {name}------------ 3 name:{name} 4 age:{age:d} 5 score:{score:.2f} 6 ------------------------------------- 7 ''').format(name=name,age=age,score=score) 8 print('format的一种输出方式',info1) 9 info2 = (''' 10 -------------info2 {0}------------- 11 name:{0} 12 age:{1:d} 13 score:{2:.2f} 14 ----------------------------------- 15 ''').format(name,age,score) 16 print('format的另外一种输出方式',info2)
{}默认字符串{:d}整数型{:f}浮点型(取2位{:.2f})
可使用内部函数type()来查看数据的类型
7.1 字符串(str)
用单引号‘’或双引号“”括起来的任意文本,字符串中包含转义字符\,制表符\t,换行符\n
转义字符\的使用方法,好比咱们要输出一个\
>>> print('\\') \
打印D:\test的文件路径也须要使用转义
>>> print('D:\\test') D:\test
若是字符串中有许多字符都须要转义的话,就须要加不少的\,为了简化python提供一种很是简便的方式r' ',例如若是咱们要打印D:\test\test.txt时,能够这么写
>>> print(r'D:\test\test.txt') D:\test\test.txt
若是字符串中有不少换行,写在一行使用使用\n很差阅读,为了简化python提供'''...'''的格式表示多行内容
>>> print('''line1) ... line2 ... line3''') line1) line2 line3
7.2布尔型(bool)
布尔型表示判断只有True和Flase两种值,布尔值可使用and、or、not计算
7.3整数型(int)
任意大小的整数,包含负整数
7.4浮点型(float)
小数
7.5列表(list)
一种有序的集合,使用[ ]定义能够随时添加和删除其中的元素,好比建立0-9的整数集合
>>> num=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> num [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
能够经过索引来访问list中的每一个元素,索引默认从0开始,好比定义一个班级的列表
1 >>> classmates=['张三','李四','王五','赵六'] 2 >>> classmates 3 ['张三', '李四', '王五', '赵六'] 4 >>> classmates[0] 5 '张三' 6 #添加一个王二麻子 7 >>> classmates.append('王二麻子') 8 >>> classmates 9 ['张三', '李四', '王五', '赵六', '王二麻子'] 10 #删除王五,使用remove,默认删除第一个 11 >>> classmates.remove('王五') 12 >>> classmates 13 ['张三', '李四', '赵六', '王二麻子'] 14 #查看每一个元素对应的索引号可使用enumerate 15 >>> for obj,value in enumerate(classmates): 16 ... print(obj,'--',value) 17 ... 18 0 -- 张三 19 1 -- 李四 20 2 -- 赵六 21 3 -- 王二麻子 22 #删除张三,使用pop方法,默认删除最后一个元素 23 >>> classmates.pop(0) 24 '张三' 25 >>> classmates 26 ['李四', '赵六', '王二麻子']
要把某个元素替换成别的元素,能够直接赋值给对应的索引位置
>>> classmates ['李四', '赵六', '王二麻子'] >>> classmates[2] = '周二' >>> classmates ['李四', '赵六', '周二']
list中全部元素也能够是不一样的数据类型例如:
>>> list = ['apple',1,True] >>> list ['apple', 1, True]
list元素也能够是另外一个list
>>> list1 = ['red','blue',list] >>> list1 ['red', 'blue', ['apple', 1, True]]
python中列表的操做函数跟方法
len(list) 列表元素的个数
max(list) 返回列表元素的最大值
min(list) 返回列表元素的最小值
list() 修改其余的数据类型为list类型(不是全部数据类型均可转换)
列表操做方法
list.append(obj) 在列表末尾添加新元素
list.count(obj) 统计某个元素在列表中出现的次数
list.extend() 追加,在列表末尾添加一个列表
list.index(obj) 从列表中找出某个元素对应的索引号
list.insert(index,obj) 将某个元素插入列表指定的索引位置
list.pop(index) 删除列表中某个索引对应的元素,不写默认删除最后一位
list.remove(obj) 删除列表中某个元素,不写默认删除第一位
list.reverse() 反向列表中元素
>>> a [0, 1, 2, 4, 5, 6, 7, 8] >>> a.reverse() >>> a [8, 7, 6, 5, 4, 2, 1, 0]
list.sort() 对列表中元素进行排序
>>> a [8, 7, 6, 5, 4, 2, 1, 0] >>> a.sort() >>> a [0, 1, 2, 4, 5, 6, 7, 8]
7.6元组(tuple)
另外一种有序的列表叫元组,元组跟列表很是类似,可是元组一旦初始化就不能修改,使用()定义,元组一样能够操做
若是元组中只有一个元素须要在元素后面添加,(逗号)
>>> b=('a') >>> b 'a' >>> type(b) <class 'str'> >>> b=('a',) >>> type(b) <class 'tuple'>
7.7字典(dict)
python内置了字典dict的支持,使用 键---值(key---value)的方式存储,具备极快的查找速度
定义方法使用{}定义
>>> d = {'张三':90,'李四':58,'王五':65} >>> d {'张三': 90, '李四': 58, '王五': 65} >>> d['李四'] 58 >>>
根据key值直接拿到value,把数据放入dict的方法,除了初始化时指定以外,还能够经过key放入
>>> d['周二']=100 >>> d {'张三': 90, '李四': 58, '王五': 65, '周二': 100}
若是屡次对一个key放入value,后面的值会把前面的冲掉,若是key不存在,dict就会报错
>>> d['金三胖'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: '金三胖'
要避免key不存在的错误,有两种方法,一种是in方法
>>> '金三胖' in d False >>> '周二' in d True
一种是经过dict提供的get方法,若是key不存在,能够返回None或自定义value
>>> d.get('金三胖') >>> d.get('金三胖',0) 0
要删除使用dict.pop(key)方法,对应的value也会从dict中删除,注意dict内部存放的顺序跟key放入的顺序是没有关系的
>>> d {'张三': 90, '李四': 58, '王五': 65, '周二': 100} >>> d.pop('王五') 65 >>> d {'张三': 90, '李四': 58, '周二': 100}
和list相比dict有如下几个特色
a.查找和插入的速度极快,不会随着key的增长而变慢
b.须要占用大量的内存,内存浪费多
而list正好相反,因此dict是一种用空间换取时间的方法,须要牢记的是dict中key必须是不可变对象,list就不能做为key,而字符串、整数、元组均可以做为key
7.8 set
set和dict类型,也是一组key的集合,可是不存储value,因为key不能重复,因此,在set中没有重复的key
要建立一个set须要提供一个list做为输入集合
>>> s = set([1,2,'a','b',2]) >>> s {'b', 1, 2, 'a'}
注意,传入的参数是一个list,而显示的{ }只是告诉你这个set内部有这几种元素,显示的顺序也不表示set是有序的,而且重复元素会自动过滤
能够经过add(key)添加元素到set,能够重复添加,不会有效果,经过remove(key)删除元素
>>> s.add(3) >>> s.add(3) >>> s {1, 2, 'a', 3, 'b'} >>> s.remove('b') >>> s {1, 2, 'a', 3}
set能够看出是数学意义上无序和无重复的元素的集合,所以两个set能够作数学意义上的交集、并集等操做
>>> s1 {1, 2, 3} >>> s2 {2, 3, 4} >>> s1 & s2 {2, 3} >>> s1 | s2 {1, 2, 3, 4}
set和dict的惟一区别仅在于没有存储对应的value,可是set和dict同样,一样不可放入可变对象
7.9 空值(None)
空值是python中一个特殊的值,用None表示,None不能理解为0,由于0是有意义的,而None是一个特殊的空值。
8.1 算数运算
+ 加法 - 减法 * 乘法 / 除(使用/除时,结果为float类型) //地板除(结果为整数int) % 取余数 ** 次幂(2**2 表示2的2次幂结果4)
8.2 比较运算,输出结果为bool
== 等于 != 不等于(python3.0以后不能够写做<>) > 大于 < 小于 >= 大于等于 <=小于等于
8.3赋值运算
= 简单的赋值运算符
+=加法赋值运算符 c+=a至关于c=c+a
-=减法赋值运算符 c-=a至关于c=c-a
*=乘法赋值运算符 c*=a至关于c=c*a
/=除法赋值运算符 c/=a至关于c=c/a
%=取余赋值运算符 c%=a至关于c=c%a
除此以外还有**= //=
8.4逻辑运算符
and 布尔与 二者都是True才是True,不然为False
or 布尔或 二者都是False才是False,不然为True
not 布尔非 非True就是False,非False就是True
8.5成员运算
in 若是在指定的序列找到值,则返回True,不然为False
not in 若是在指定的序列中没有找到值,返回True,不然为False
8.6身份运算
is is是判断两个标识符是否是引用一个对象
is not is not 是判断两个标识符是否是引用不一样对象
8.7强制类型转换符
不一样数据类型之间能够进行转换
>>> a = '1' >>> type(a) <class 'str'> >>> int(a) 1 >>> b = int(a) >>> type(b) <class 'int'>
8.8 python中不一样对象进行比较须要使用operator模块
须要引入 operator 模块,适合任何对象,包含的方法有:
import operator
operator.lt(a, b) a小于b? operator.le(a, b) a小于等于b? operator.eq(a, b) a等于b? operator.ne(a, b) a不等于b? operator.ge(a, b) a大于等于b? operator.gt(a, b) a大于b
运算符 | 描述 |
---|---|
lambda |
Lambda表达式 |
or |
布尔“或” |
and |
布尔“与” |
not x |
布尔“非” |
in,not in |
成员测试 |
is,is not |
同一性测试 |
<,<=,>,>=,!=,== |
比较 |
| |
按位或 |
^ |
按位异或 |
& |
按位与 |
<<,>> |
移位 |
+,- |
加法与减法 |
*,/,% |
乘法、除法与取余 |
+x,-x |
正负号 |
~x |
按位翻转 |
** |
指数 |
x.attribute |
属性参考 |
x[index] |
下标 |
x[index:index] |
寻址段 |
f(arguments...) |
函数调用 |
(experession,...) |
绑定或元组显示 |
[expression,...] |
列表显示 |
{key:datum,...} |
字典显示 |
'expression,...' |
字符串转换 |
python的语法比较简单,采用缩进方式;已#开头表示注释,批量注释使用'''。。。''',其余每一行都是一个语句,当语句已冒号:结尾时,缩进的语句视为代码块。按照约定俗成,缩进应始终坚持使用4个空格(不要tab键和空格混用,python是区分大小写的)。
9.1判断语句
简单的if判断语句为
if 条件:#条件为True
执行结果
else: #不然
执行结果
if中还可使用elif作更细致的判断,elif 是else if的缩写,if语句是从上往下判断,若是某个判断上是True,就会执行相应的结果,执行完毕后会忽略掉接下来的elif和else
9.2循环语句for
for...in....语句能够循环遍历list或tuple,又称做迭代,例:
names = ['Michael', 'Bob', 'Tracy'] for name in names: print(name) #执行这段代码,会依次打印names的每个元素: Michael Bob Tracy
若是要计算从1到100的数之和,咱们可使用for循环实现
sum=0 #range()函数能够生成一个整数序列,range(1,101)表明从1开始取到100,至关于 #[1,2,3,4,5.....100]的一个列表 for i in range(1,101): sum = sum + i print(sum)
9.3循环语句while
while循环是,只要条件知足,就不断循环,条件不知足时退出。例:
打印1到10的整数
>>> i=0 >>> while i <10: ... i = i + 1 ... print(i) ... 1 2 3 4 5 6 7 8 9 10
在循环中,可使用break和continue,须要配合if语句来使用,break是退出循环,continue是跳过当前循环
一个经典的猜数字的游戏
1 #!/usr/bin/env python3 2 #-*- coding: utf-8 -*- 3 #经典猜数字游戏 4 import random 5 #取一个随机数(0-9) 6 num = random.randint(0,9) 7 #用户输入一个数字 8 #给3次机会判断输入的数字跟获取的随机数是否相等,并给出提示,超过次数提示机会已用尽 9 for i in range(3): 10 #用户输入一个数字 11 num_of_user = int(input('请输入一个0-9的数字:')) 12 #首先判断输入的数值是否0-9之间 13 while True: 14 if num_of_user in range(10): 15 break 16 else: 17 print('输入的数值超过0-9区间范围!,请从新输入') 18 num_of_user = int(input(':')) 19 if num_of_user == num: 20 print('恭喜你猜对了!') 21 break 22 elif num_of_user > num: 23 print('你猜想的数字过大!') 24 else: 25 print('你猜想的数字小了!') 26 27 else: 28 print('你的机会已用尽,对不起,你输了!')
一个交互式的猜数字游戏
#!/usr/bin/env python3 #-*- coding: utf-8 -*- #经典猜数字游戏 import random #取一个随机数(0-9) num = random.randint(0,9) #建立一个计数器 count = 0 while count<3: #用户输入一个数字 num_of_user = int(input('请输入一个0-9的数字:')) #计数器循环+1 count += 1 #首先判断输入的数值是否0-9之间 while True: if num_of_user in range(10): break else: print('输入的数值超过0-9区间范围!,请从新输入') num_of_user = int(input(':')) if num_of_user == num: print('恭喜你猜对了!') break elif num_of_user > num: print('你猜想的数字过大!') else: print('你猜想的数字小了!!') if count == 3: print('三次机会已用尽,请问你还想继续玩吗Y/N?') play_flag = input(':') if play_flag == 'Y': count = 0 elif play_flag == 'N': print('游戏结束。') else: print('输入的命令有误,游戏结束。')