码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习笔记,Day1

时间:2016-05-11 19:30:41      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:


  上周六开始在老男孩学习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 跳过本次,继续下一次循环

 

Python学习笔记,Day1

标签:

原文地址:http://www.cnblogs.com/ccorz/p/5483042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!