博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Python基础(一)

Posted on 2015-12-28 18:42  善恶美丑  阅读(272)  评论(0编辑  收藏  举报

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