1.Python2.X和3.X的区别:
编码: 3.X默认使用utf-8编码,支持中文字符。2.X要支持中文需要设定编码格式 # -*- coding: utf-8 -*- 语法: 1)去除了<>,改用!=. 2)去除‘’,改用repr(). repr(对象)- >字符串 返回对象的规范字符串表示。对于大多数对象类型,eval(repr(对象))= =对象。 3)整型除法返回浮点数.原整型结果请使用// 例如5//4 4)print语句的改变,原print "" 更换为print ("") 例如:原 print "Hello World"现 print ("Hello World") 5)raw_input去除 6) 2.X: print x, # 使用逗号结尾禁止换行 3.X: print(x, end=" ") # 使用空格代替换行 7) 2.X: print (x, y) # 输出repr((x, y)) 3.X: print((x, y)) # 不同于print(x, y)! 8) 你也可以定制项目之间的分隔符,例如: print("There are <", 2**32, "> possibilities!", sep="")
2.流程控制和数据类型。
1 条件判断 2 循环 3 列表和元组 4 字典 5 集合 6 文件处理
1.1.条件判断
条件判断格式:
if <条件判断1>:
<执行操作1>
elif <条件判断2>:
<执行操作2>
else:
<执行操作3>
例如:简单判断用户密码是否正确
User=“chen” Passwd="123" Login_u=input("please input your User:") Login_p=input("please input your Pass:") if Login_u == User and Login_p == Passwd: print ("Welcome %s login to system!") %User #elif....(判断是否为来宾用户等...) else: print ("invalid user,GoodBay!!")
在2.X版本中可以隐藏用户输入的密码,在3.X版本中测试有点问题。
import getpass ##必须导入getpass模块 user="chenjinpeng" passwd="123" a=raw_input("user:") b=getpass.getpass("passwd:") print user,passwd,a,b if a == user and b ==passwd: print "welcome" else: print "baibai"
1.2循环
for循环 for (表达式1;表达式2...) 循环体 while循环 while (条件) 循环体
需求:让我们刚才的判断登陆加入次数限制,用户输入3次错误后退出
break跳出本层村换
continue 跳出本层本次循环,进去下一次循环
for循环
for i in range(3):
User="chen"
Passwd="123"
Login_u=input("please input your User:")
Login_p=input("please input your Pass:")
if Login_u == User and Login_p == Passwd:
print ('Welcome %s login to system!' %Login_u)
break
else:
print ("密码错误,输入3次退出")
else:
print ("你已经输入错误超过三次")
while 循环
User = "chen" Passwd = "123" count = 0 while count < 3: Login_u=input("please input your User:") Login_p=input("please input your Pass:") if Login_u == User and Login_p == Passwd: print ("Welcome %s login to system!" % Login_u) break else: print ("密码错误,超过三次将退出") count +=1 else: print ("密码输入错误超过3次,退出!")
计时器 time模块
import time for i in range(10): print (i) time.sleep(5)
1.3 列表和元组
列表是指一组有序列的集合,可以将各式各样的数据存放在列表中,方便对其进行增删改查以及遍历等各种操作,也可以将列表赋值给变量
列表和元组的区别:
列表格式:['zhao','tian','sun','li'] 元组格式:('zhao','tian','sun','li') 列表:append() | remove() | pop() | extend() | count() | index() | insert() | reverse() | sort() 元组:count() | index()
type(Name)可以查看Name的类型 <type 'list'> 元组表示为 <type 'tuple'>
len(Name)可以查看列表以及元组元素的个数
例
>>> len(Name)
4
列表中参数解释:
append() #列表尾部增加元素。
remove() #删除列表中的元素,如有重复元素则为删除第一个找到的元素
pop() #默认删除末尾的元素,()中如果添加了元素的索引值,则删除索引到的元素
extend() #将两个列表组合。
例 >>> Name ['zhao', 'sun', 'li', 'chen'] >>> Name2=['a','b'] >>> Name.extend(Name2) >>> Name ['zhao', 'sun', 'li', 'chen', 'a', 'b']
count() #计数,统计列表中相同的元素出现的次数。
例 >>> Name ['zhao', 'sun', 'li', 'zhao', 'chen', 'a', 'b'] >>> Name.count('zhao') 2
index() #查看索引值(查看元素在列表中的位置,从0开始)
>>> Name ['zhao', 'sun', 'li', 'zhao', 'chen', 'a', 'b'] >>> Name.index('li') 2
insert() #插入元素到列表中,可以指定位置
>>> Name ['zhao', 'sun', 'li', 'zhao', 'chen', 'a', 'b'] >>> Name.insert(2,'zhou') >>> Name ['zhao', 'sun', 'zhou', 'li', 'zhao', 'chen', 'a', 'b']
reverse() #列表反转
>>> Name ['zhao', 'sun', 'zhou', 'li', 'zhao', 'chen', 'a', 'b'] >>> Name.reverse() >>> Name ['b', 'a', 'chen', 'zhao', 'li', 'zhou', 'sun', 'zhao']
sort()排序 # 默认优先排序符号,其次为数字,大小写,在其次按照字母优先级进行排序
>>> Name ['a', 'b', 'chen', 'li', 'sun', 'zhao', 'zhao', 'zhou', '1', '2', 'A', 'C'] >>> Name.sort() >>> Name ['1', '2', 'A', 'C', 'a', 'b', 'chen', 'li', 'sun', 'zhao', 'zhao', 'zhou']
>>> Name.append('&')
>>> Name.append('%')
>>> Name.sort()
>>> Name
['!', '%', '&', '1', '2', 'A', 'C', 'a', 'b', 'chen', 'li', 'sun', 'zhao', 'zhao', 'zhou']
元组与列表类似,但是元组一单初始化就不能修改,这也是元组的特点
陷阱:当你定义一个tuple的时候,tuple的元素就必须被确定下来。
>>> a = (1,2) >>> a (1, 2) 如果要定义一个空的元组,可以写成() 例如: >>> a = () >>> a () 但是,要一定一个只有一个元素的元组,如果你这样定义 >>> a = (1) >>> a 1 >>> type(a) <type 'int'> 是的,它是一个整数类型,,而不是元组,你必须这么去做 >>> a = (1,) >>> a (1,) >>> type(a) <type 'tuple'> 这是因为括号()既可以表示元组,又可以表示数学公式中的小括号,这就产生了歧义,因此python定义,这种情况,按小括号计算。必须使用,消除歧义
切片 #切片可以从列表中读取出指定的多个元素。
例:
>>> name=['zhao','tian','sun','li','1','2','3'] name[2:] #取出索引值2以后的元素,包含2 >>> name[2:] ['sun', 'li', '1', '2', '3'] >>> name[:2] #取出索引值2以前的元素 不包含2 ['zhao', 'tian'] >>> name[1:4] #取出索引值从1开始到4的元素 不包含4 ['tian', 'sun', 'li'] >>> name[:-3] # 取出-3以前的元素 不包含-3 ['zhao', 'tian', 'sun', 'li'] >>> name[-3:] #取出-3以后的元素 包含-3 ['1', '2', '3'] >>> name[0:6:2] #从0-6之间不包含6,每隔2个取一个值,2为步长 ['zhao', 'sun', '1'] >>> name[0:7:3]#从0-7开始不包含7,每隔2个取一个值,3为步长 ['zhao', 'li', '3'] #注意:如元素只有n个 必须为n+1才能取出最后一个元素
字典
...
多行注释以及格式化输出
Name = input("please input your Name:") Age = int(input("please input your Age:")) Job = input("please input your Job:") print ('''Information: Name: %s Age: %d Job: %s ''' %(Name,Age,Job)) ##%s和%d表示一个连接调用的意思,在结束分别按照顺序输入你的变量名称即可。 三个单引号'或者双引号"可以多行打印,也可以多行注释。
数据类型
1.数字 INT(整数) 32位机器上,整数的位数为32位,取值范围为-2**32-1~2**32-1 64位机器上,整数的位数为64位,取值范围为-2**63-1~2**63-1 LONG(长整型) 3.X版本取消了长整型 FLOAT(浮点型) 带有小数点的数字 2.布尔值 真或假 1或0 3.字符串 “Hello World” pythonZ中,每次创建字符串需要在内存中开辟一块连续的空,并且一单需要修改字符串 话,就需要再次开辟空间,万恶的+号每出现一次就会在内存中重新开辟一次空间 PS: 字符串表示为 %s ; 整数%d;浮点数 %f 字符串的常用功能: .移除空白 .分割 .长度 .索引 .切片 4.列表 基本操作: .索引 .切片 .追加 .删除 .长度 .切片 .循环 .包含 5.元组 基本操作: .索引 .切片 .循环 .长度 .包含 6.字典(无序) 常用功能: .索引 .新增 .删除 .键、值、键值对应 .循环 .长度 .PS. 循环,range , continue 和break
运算符
算数运算符
以下假设变量a为10,b为20
运算符 | 描述 | 实例 |
+ | 加-两个对象相加 | a+b=30 |
- | 减-得到的负数或是一个数减去另一个人数 | a-b=-10 |
* | 乘-两个数相乘 | a*b=200 |
/ | 除 | b/a=2 |
% | 取模-返回除法的余数 | b%a=0 |
** | 幂,返回a的b次幂 | a**b=10的20次方 |
// | 取整除,返回除法的整数部分 | b//a=2 |
比较运算符
运算符 | 描述 | 实例 |
== | 等于-比较对象是否相等 | (a==b)返回false |
!= | 不等于-比较两个对象是否不相等 | (a!=b)返回True |
<> | 不等于-比较两个对象是否不相等(python3.X已废弃) | (a<>b)返回true 类似!= |
> | 大于-返回x是否大于y | (a>b) false |
< | 小于-返回x是否小于y | (a<b) True |
>= | 大于等于 | (a>=b) false |
<= | 小于等于 | (a <=b) false |
赋值运算符
运算符 | 描述 | 实例 |
= | 简单的赋值运算符 | c=a+b 将a+b的结果赋值给c |
+= | 加法赋值运算符 | 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 |
**= | 幂赋值运算符 | c **=a 等效于 c = c **a |
//= | 取整除赋值运算符 | c //=a 等效于 c = c//a |
位运算符
运算符 | 描述 | 实例 |
& | 按位与运算符 | (a&b)输出结果等于12,二进制解释:0000 1100 |
| | 按位或运算符 | (a|b)输出结果等于61,二进制解释:0011 1100 |
^ | 按位异或运算符 | (a^b)输出结果等于49,二进制解释:0011 0001 |
~ | 按位取反运算符 | (~a)输出结果等于-61,二进制解释:1100 0011 |
<< | 左移动运算符 | (a<<2)输出结果等于240,二进制解释:1111 0000 |
>> | 又移动运算符 | (a>>2)输出结果等于15,二进制解释:0000 1111 |
逻辑运算符
运算符 | 描述 | 实例 |
and | 布尔“与”- 如果x为False,x and y返回False 否则它返回y的计算值 | (a and b)返回true |
or | 布尔“或”-如果x是True,它返回True,否则它返回y的计算值 | (a or b)返回true |
not | 布尔“非”-如果x为true,返回false,如果x为false 它返回true | not(a and b)返回true |
成员运算符
运算符 | 描述 | 实例 |
in | 如果在指定的序列中找到值返回True,否则返回false | x在y的序列中,如果x在y序列中返回true |
not in | 如果在指定的序列中没有找到值返回True,否则返回false | x不在y的序列中,如果x不在y序列中返回true |
身份运算符
运算符 | 描述 | 实例 |
is | is是判断两个表示服是不是引用自一个对象 | x is y,如果id(x)等于id(y),is返回结果1 |
is not | is not是判断两个表示服是不是引用不同对象 | x is not y,如果id(x)不等于id(y),is返回结果1 |
文件操作:
打开文件
2.X版本 File_obj=file("文件路径",“模式”)
3.X版本 File_obj=open("文件路径",“模式”)
打开文件的模式
. r, 以只读方式打开文件
. r+, 可读写文件。【可读,可写,可追加】 . w, 以写入模式打开文件,如果文件存在则将其内容覆盖,不存在则新建 . a, 以追加模式打开,不存在则创建,存在则只追加内容 . w+, 以写读模式打开,文件存在将覆盖,不存在将创建
. “U”, U表示在读取时,可以将\r\n自动转换成\n(与r或r+模式同使用)
. rU
. r+U
. "b"表示处理二进制文件,(如:FTP发送上传ISO镜像文件,Linux可忽略,Windows处理二进制文件时需标注)
. rb
. wb
. ab 读取文件内容: 一次性将所有内容加载到内存 job.read() 一次性加载所有内容到内存并根据行分割成字符串 obj.readlines() 每次仅读取一行数据 for line in obj: prine (line) 写文件内容: obj.write('内容') 关闭文件句柄 obj.close()
PS. replace函数,替换文件中的内容obj.replace("old","new")
enumerate() 函数,枚举 遍历 列表,字符串 字典等
例如:
a = [1,2]
for i,val in enumerate(a):
print (i,val)
>>> 0 1
>>> 1 2
isdigit()函数 判断字符串是否为数字,返回True或者false
例如:
a = "1"
b = "b"
print (a.isdigit())
print (b.isdigit())
True
False