标签:
上周六开始在老男孩学习python,以前一直没有写blog的习惯,作为python新手,还是有必要记录点东西,权当复习使用吧。
直接写干货了,什么python发展史就略过了。
python执行过程是从py代码读取内容通过python虚拟机转化为机器码,然后发送给cpu执行的,所以python从某些方面来讲是没有c快的,但python贵在语言简洁干练,记得在Alex老师讲课时,曾经有python、c、java、PHP、C#各种语言打印hello world的比较,明显python和PHP要比其他语言简洁很多。
一、python2和3的区别
这里有详细的2和3的区别,说下明前大概知道的吧
1.print语法:
2.X: print "The answer is", 2*2
3.X: print("The answer is", 2*2)
2.X: print x, # 使用逗号结尾禁止换行
3.X: print(x, end=" ") # 使用空格代替换行
2.X: print # 输出新行
3.X: print() # 输出新行
2.X: print >>sys.stderr, "fatal error"
3.X: print("fatal error", file=sys.stderr)
2.X: print (x, y) # 输出repr((x, y))
3.X: print((x, y)) # 不同于print(x, y)!
2.字符串:Python 2有两种字符串类型:Unicode字符串和非Unicode字符串。Python 3只有一种类型:Unicode,简化了程序员的操作,不必再为是否中文而担心。
3.交互语法:
user=raw_input(‘输入用户名‘) #python2 user=input(‘输入用户名‘) #python3
另外,python中input输入的永远为字符串(string),这就有了某些情况,比如用用户输入为数字时,需要用int()转化:
user=input(‘输入用户名‘) #python3 if user.isdigit(): print(‘数字:%s‘%user) print(‘%s的下一位:%s‘%(user,int(user)+1)) else: print(‘不是数字‘)
其中isdigit()用来判断字符串是否为数字组成,用法:
#!/usr/bin/python str = "123456"; # Only digit in this string print str.isdigit(); str = "this is string example....wow!!!"; print str.isdigit();
返回值为:
True
False
二、用户交互中的非明文密码输入
在用户进行密码交互的时候,由于密码是使用非明文输入的,所以使用getpass,注意getpass为一个模块,需要import
import getpass user=input(‘input the user name:‘) pwd=getpass.getpass(‘input the password of %s:‘%user)
三、占位符:
上面代码中,%s是占位符,也叫字符串的格式化。整数是%d,浮点数为%f,但%s可包括所有,为啥不用%s...还少记了东西,好懒...
print中引号内的%s个数要与引号外面的%()中的变量个数相同。
四、变量:
变量赋值需要用“=”,后面的字符串需要加引号,数字可不加
name=‘ccorz‘ print(‘name:%s‘%name) name2=name print(‘name2:%s‘%name2) name=‘shane‘ print(‘‘‘ name:%s name2:%s‘‘‘%(name,name2))
执行结果为:
name:ccorz
name2:ccorz
name:shane
name2:ccorz
注意其中name和name2的值,结果不同的原因,是因为变量赋值后是指定到内存中的,变量取值是基于内存地址,并非变量。
变量的起名,只能是以字母开头,有一些关键字不能作为变量名称,如下:
[‘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‘]
名称较长的可以用首字母大写(也叫驼峰命名),或者"_"下划线来分开,以便其他程序员记忆。
五、python中的换行打印
python中,如果需要打印多行,在一个print可用三对单引号或者三对双引号标识,例如上面代码中的最后一个print动作。
六、注释
当行注视:# 被注释内容
多行注释:""" 被注释内容 """
七、模块
模块是python经常用到的东西,非常强大,有标准库和第三方库,比如sys os time 之前提到的getpass等等。
>>> import os >>> os.system(‘ls -a‘) . .. ReadMe menus.py menus_process.png 0
最后的0是执行linux命令后返回的值。如果直接调用linux命令并返回结果,可用popen:
>>> import os >>> output=os.popen(‘ls -a‘) >>> print(output.read()) . .. ReadMe menus.py menus_process.png >>>
os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。
八、数据类型
python的数据类型有:
1.数字:包括整形,长整形,浮点型,复数,None(空值)
2.布尔值:0(真)或者1(假),布尔值一般用来做判断,比如:
has_money=Fales if has_money: print(‘发工资‘)
3.字符串:
字符串是用单引号或者双引号括起来的任意文本,如果字符串中本身包含单引号或者双引号怎么办,那就用“\”反斜杠转义字符。
需要注意的是,python中还能用r‘ ‘表示引号内部字符串默认不转义
r‘I‘m ok,lol‘
4.列表
列表使用中括号,元素用逗号隔开
name_list=[‘shane‘,‘alex‘,‘gao‘,‘ccorz‘]
len(name_list) #列表元素的个数
name_list[2] #索引号为2的对应元素,注意索引号从0开始
name_list[-2] #倒数取第二个元素
列表切片
name_list[0:3] #从列表中取从索引0到3之前的元素,但不包含索引号为3的元素
name_list[:3] #同上
name_list[:-3] #取从0到倒数第3个元素,不包含倒数第三个
name_list[-3:] #取最后3个元素
name_list[1:8:2] #从1到8取,包括第8个,隔1个取一个,后面的2是步长,基本是-1取就好
name_list[::3] #从头到尾取,隔两个取一个
列表增删改查
name_list.append(‘cheng‘) #列表中增加元素
name_list.pop() #删除最后一个元素,并显示该元素
name_list.remove(‘cheng‘) #删除叫‘cheng‘的元素,如果列表中有多个‘cheng‘,删除从左边数的第一个‘cheng‘
name_list[2] #取索引为2的元素
name_list[2]=‘mayun‘ #将索引为2的值改为‘mayun‘
name_list.insert[2,‘guodegang‘] #插入一个新元素,索引号为2
name_list.count(‘alex‘) #统计元素的个数
name_list.extend(name_list2) #把新列表合并到name_list列表中,新列表元素在后面增加
name_list.sort() #列表排序
name_list.reverse() #将列表反转排序
del nanme_list[3:8] #删除索引号3到8的元素,不包括8
tuple(name_list) #将列表转化为元组
5.元组
元组是不可变的,取值方法和列表一样
names=(‘alex‘,‘bob‘,‘tracy‘) names=(‘alex‘,) #当元组中只有一个元素时,后面加“,”逗号,以免把括号当成数学公式使用
names[0]
names[-1]
name[1:3]
6.字典
①字典是以key:value的方式存储的,key必须唯一
②字典的特点是无序,每次打印回显顺序会不同
③字典用大括号标识,key和value用冒号对应,数据组之间用“,”逗号隔开
例如:
info={‘name‘:‘ccorz‘, ‘job‘:‘IT‘, ‘company‘:‘ali‘, ‘age‘:‘18‘, ‘map‘:{‘china‘:‘beijing‘,‘american‘:‘huafu‘} } print(info) print(info.items()) for i in info.items(): print(i)
执行结果:
{‘age‘: ‘18‘, ‘job‘: ‘IT‘, ‘company‘: ‘ali‘, ‘name‘: ‘ccorz‘, ‘map‘: {‘american‘: ‘huafu‘, ‘china‘: ‘beijing‘}} dict_items([(‘age‘, ‘18‘), (‘job‘, ‘IT‘), (‘company‘, ‘ali‘), (‘name‘, ‘ccorz‘), (‘map‘, {‘american‘: ‘huafu‘, ‘china‘: ‘beijing‘})]) (‘age‘, ‘18‘) (‘job‘, ‘IT‘) (‘company‘, ‘ali‘) (‘name‘, ‘ccorz‘) (‘map‘, {‘american‘: ‘huafu‘, ‘china‘: ‘beijing‘})
操作
info.pop(‘age‘) #删除key为age的数据组
info.popitem() #随机删除一条数据,如果字典为空会报错
del info(‘age‘) #同上,删除key为age的数据组
info[‘job‘] #查看key为job的value
info[‘job‘]=‘sale‘ #将key为job的value改为sale,如果没有,创建key为job,value为sale的记录
info.items() #将字典的key,value转换为列表的形式显示,将字典info中所有键值对以dict_items的形式返回(Python 2中d.iteritems() 返回一个针对键值对的迭代器对象,Python 3中没有 iteritems 方法了)
info.has_key(‘name‘) #判断字典中是否有name的key,python3中改为使用 in 判断
info.get(‘name‘) #查找key,如果有返回其value,如果没有返回None
info.clear() #清空字典
info.fromkeys([‘a‘,‘b‘,‘c‘],‘tst‘) #根据列表创建字典对应的key,默认对应的value为‘tst‘
info.setdefault(‘age‘,‘23‘) #如果列表中有age,返回其value值18,如果没有age的key,创建age,value为23,返回value的值23
info.update(dict2) #用字典dict2更新info,如果key有冲突,dict2的key对应的value覆盖info中的value。如果不冲突,那就创建相应的记录
九、数字运算
数据运算:
+ 加法
- 减法
* 乘法
/ 除法
% 取模,求余,左边的除以右边的,得到的余数的返回值
** 求幂
// 取整除,左边除以右边,等到的整数部分
算术运算
== 判断是否相等
!= 判断是否不相等
<> 同上
> 判断是否大于
< 判断是否小于
>= 是否大于等于
<= 是否小于等于
赋值运算
= 赋值,右边赋值给左边变量
+= a+=b a=a+b
-= a-=b a=a-b
*=
/=
%=
**=
//=
逻辑运算:and, or, not
关系运算:in, not in
验证运算:is,is not
十、判断
if...elif...else,挺简单的,只要注意缩进和判断条件后面的分号即可。
十一、循环
while
for
循环不难,注意缩进即可。
for用在遍历文件、字典、列表等较多
while True 用在无限循环较多
while True: pass for i in range(10): pass flag==0: while flag==0: pass while i < 10: pass
break 跳出循环
continue 跳过本次,继续下一次循环
标签:
原文地址:http://www.cnblogs.com/ccorz/p/5483042.html