python基础(二)
变量
变量的另一种赋值方式
user = 'ljb' passwd = 'ljb123' user,passwd = 'ljb','ljb123'
常量
变量名全部用大写
MYSQL_CONNECTION = '192.168.1.1'
pyc文件
导入模块后会在相应目录生成pyc文件,pyc文件为字节码文件
python调用模块过程
首先调用模块之后会生成pyc的字节码文件,然后解释器通过识别这个二进制的字节码文件来执行py程序
注:
py2 上直接在当前目录生成pyc文件
py3上 会创建__pycache__目录下面生产cpython-35.pyc 这样的类似文件
数据类型
1 数字
int long float 复数
2 布尔值
True or False
1 or 0
判断1和0 代表True和False
>>> 1 == True
True
>>> 0 == False
True
3 字符串
字符串常用功能:
• 移除空白
• 分割
• 长度
• 索引
• 切片
username = input('inout you username')
username.strip() #移除空白
name = 'ljb,kkk,lll'
name.split(',') #拆分
name[2:4] #切分,取第3个到第4个字符
name.center(40,'-') #长度为40,居中显示name的字符,两边用-填补
name.isdigit #判断输入的字符书否为数字
name.isalnum() #判断是否有特殊字符
name.startwith('dsfdsa') #判断字符串是否以dsfdsa 开头
name.endwith('sdfaf') #判断字符串是否以sdfaf 结尾
name.find('l') #查找字符串中的l字符,打印字符的位置,不存在显示-1
>>> name = 'langjianbin'
>>> name.find('m')
-1
>>> name.find('j')
4
>>>
方法举例
#!/usr/bin/env python # -*- codind:utf-8 -*- #Author:ljb #user = input('username:') #if user.strip() == 'ljb': #去空白 # print('welcome') #name = 'ljb,langjb,langjianbin' #name1 = name.split(',') #以逗号分割为列表 #print(name1) #print('|'.join(name1)) #以|来合并为一个字符串 name = 'lang jian bin' print(name.center(40,'-')) #居中 print( '' in name) #判断字符串中是否有空格 print(name.capitalize()) #字符串的首字符大写 msg = "Hello ,my name is {Name},age is {Age}" print(msg.format(Name='ljb',Age=33)) #format格式输出 msg2 = 'lang{0}Age{1}' print(msg2.format('jianbin',22)) #format另一种方式 #age = input('Your age:') #if age.isdigit(): #判断是否为数字 # age = int(age) # print(age) #else: # print('invalid data') name4 = 'adsfdg' name5 = 'AAADDSFDA' print(name4.isalnum()) #判断是否有特殊字符#!@等 print(name4.endswith('dg')) print(name4.startswith('sadSF')) print(name4.upper()) print(name5.lower())
+ 在字符串中连接
下面的例子表示三个字符串连接起来,但是计算机将这三个字符串分配了三个内存空间,这样很占用资源,因此在写py程序中注意尽量少用这样的拼接字符串
>>> print ('hello' + '\n' + 'how are you') hello how are you
4 列表
列表的常用操作
• 索引
• 切片
• 追加
• 删除
• 长度
• 切片
• 循环
• 包含
name = ['ljbv','dsfg','222']
插入
name.insert(2,'kkk') #第3个位置插入kkk
追加
name.append('aaa') #在列表末尾追加aaa
删除
name.remove('dsfg') #删除列表中未dsfg的元素
del删除内存中的数据
del name[4:6] #批量删除(不仅仅试用于列表,其他的字典 元组等均可以使用del)
练习
1 写一个列表,列表里包含本组所有成员
2 往中间插入两个临组成员名字
3 取出第3-8的人列表
4 删除第7个人
5 把刚才加入的两个人一次性删除
6 把组长的名字加上组长备注
7 要求你隔一个人打印一个人
#!/usr/bin/env python # -*- codind:utf-8 -*- #Author:ljb ''' 1 写一个列表,列表里包含本组所有成员 2 往中间插入两个临组成员名字 3 取出第3-8的人列表 4 删除第7个人 5 把刚才加入的两个人一次性删除 6 把组长的名字加上组长备注 7 要求你隔一个人打印一个人 ''' group_list = ['ljb0','ljb1','ljb2','ljb3','ljb4','ljb5','ljb6','ljb7'] print('本组成员列表:') print(group_list ) print('插入两个临组成员名字:') group_list.insert(4,'zhangsan') #中间插入两个临组成员 group_list.insert(5,'lisi') #中间插入两个临组成员 print(group_list) print('取出第3-8的人列表:') print(group_list[2:8]) #打印第3-8个人列表 print('删除第7个人') group_list.remove(group_list[6]) #删除第7个人 print(group_list) #一次性删除刚才加入的两个人 print('把刚才加入的两个人一次性删除') del group_list[4:6] print(group_list) #组长名字添加备注 print('把组长的名字加上组长备注') group_list.remove('ljb0') group_list.insert(0,'ljb0_zuzhang') group_list[0] = 'ljb0_zuzhang' print(group_list) #间隔打印人员 print('要求你隔一个人打印一个人') print(group_list[0::2]) #首尾步长 print(group_list[::2]) for i in group_list[0::2]: print(i)
判断列表中是否存在某元素
name = [1,2,3,9,8,65,4,9,10] #print ('9 in name') if 9 in name: print ('9 in name') if 9 in name: num = name.count(9) #计数9出现的个数 print ('9 num is ',num) name.index(9) # 寻找第一个位置的9
name.extend(name2) #扩展进新的列表中
name.reverse() #反向显示列表
name.sort() #只能在2中排序,3中不支持此种排序方式
name.pop(2) #删除第三个位置的数值
name.copy() #只能拷贝列表的一层,如果修改列表中的列表时,两个列表都变化
如果需要完全copy的话需要到倒入copy模块
import copy
name4 = copy.depcopy(name)
列表赋值 给第二个变量时相当于做了软链接
len(name) #列表长度
常用操作练习
#!/usr/bin/env python # -*- codind:utf-8 -*- #Author:ljb import copy list1 = ['ljb',1,2,34,9,[88,44,88,99],9,34,'lang','zhangsan'] print(list1) list2 = list1.copy() #拷贝list1 list3 = copy.deepcopy(list2) #深层次拷贝,修改嵌套中的列表时不受影响 list2[0] = 'LJB' #修改list2中一个值,list1中不会变 list2[5][0] = 888888 #修改嵌套列表中一个值,list1和list2中都会变化(因为拷贝的是一个共享的内存段) print (list2) print (list3) for i in range(list1.count(9)): first_9=list1.index(9) list1[first_9] = 9999999 #列表中找到9并修改为999999 print(list1) for i in range(list1.count(34)): first_34 = list1.index(34) #list1.remove(list1[first_34]) list1.pop(first_34) #列表中找到34然后删除 print(list1) print(list2) list2.reverse() #反向显示 #list3 = sorted(list2) #不能sorted 在py3中 #print(list3) print(list2) list1.extend(list2) #list2扩展添加到list后面 print(list1)
5元组
r = (1,2,3,4,5) #只读列表 r.count() #统计元组中元素的个数 r.index() #元素的索引位置
6字典
字典的常用操作
• 索引
• 新增
• 删除
• 键、值、键值对
• 循环
• 长度
init_db.has_key #py2.x
key in init_db #py3.x
在字典的循环中尽量少使用这这这样的循环,此种方式占用资源比较大
for k.v in dict1: print(k,v) #如果需要用户循环的话采用 for k in dict1: print (k,dict1[k])
练习
#!/usr/bin/env python # -*- codind:utf-8 -*- #Author:ljb #字典定义 init_db = { 1:{ 'name':'ljb', 'age':22, 'addr':'HeBei' }, 2:{ 'name':'zhangsan', 'age':33, 'addr':'Beijing' } } print(init_db) print(init_db[1]) #打印key为1的value init_db[1]['name'] = 'langjb' #修改一个value name的值为langjb init_db[1]['qq'] = '12345678' #添加一个字段 init_db[1].pop('addr') #删除addr的字段 v = init_db.get(1) #获取key为1的值 print(v) dic2 = { 'name':'12dsfasdga', 1:{ 'name':'langjainbin' } } init_db.update(dic2) #将dic2中的值更新到init_db中 print(init_db) print(init_db.items()) print(init_db.values()) print(init_db.keys()) #init_db.has_key(1) #only 2.X #1 in init_db # 3.X equal init_db.has_key(1) print(init_db.setdefault('3','langjianbin')) #取一个key值,如果不存在就设置为'langjianbin',如果存在则输出 print(init_db) print(init_db.fromkeys([1,2,34,4,5,6]),'ddddd') #fromkeys(seq[,values])函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。 #for key in init_db: # print(key,init_db[key])
运算
算术运算符 (+,-,*,/,%,**,// 取整数返回商的整数部署)
比较运算符(==,!=,<>,>,<,>=,<=)
赋值运算符(=,+=,-=,*=,/=,%=,**=,//=)
逻辑运算符(and,or,not)
成员运算符( in,not in )
身份运算符(is,is not)
位运算符
& 按位与
| 按位或
^ 按位异或
~ 按位取反
>> 左移运算
<< 右移运算
运算优先级

while True循环
练习
循环100次自动退出循环,在第50-60次之间不打印
#!/usr/bin/env python # -*- codind:utf-8 -*- #Author:ljb counter = 0 while True: counter += 1 if counter >50 and counter <60: continue print('循环次数',counter) if counter == 100: print('循环100次结束,跳出循环') break

浙公网安备 33010602011771号