模块

sys模块:sys模块是用c语言写的,所以在lib下是不会有sys.py这个文件存在

1 import sys
2 print(sys.path)   #打印环境变量
3 print(sys.argv)   #打印相对路径

os模块

1 # author:"Jason lincoln"
2 import os
3 #cmd_res=os.system("dir") #只执行命令,不保存结果
4 cmd_res = os.popen("dir").read()
5 print("-->",cmd_res)
6 os.mkdir("new_dir") #创建一个目录

 Pyc是什么鬼?

当程序执行的时,python内部会先将源代码编译成所谓的字节码的形式,这些字节码可以提高执行速度。python将把程序的字节码保存为一个以.pyc为扩展名的文件(".pyc"就是编译过的“py”源代码)。下一次运行程序时,如果你在上次保存字节码之后没有修改过源代码的话,python将会加载.pyc文件并跳过编译这个步骤。当python必须重新编译时,它会自动检查源文件和字节码文件的时间戳:如果你又保存了源代码,下次程序运行时,字节码将会自动重新创建。

python的数据类型 

整型(int):python2分长整型和整型,整型的内存最大为2的32次方字节

浮点型(float):比如小数

布尔值:真或假 1或0

字符串: "helloword"

数据运算

运算符

+  两个数相加

-

*

% 取模,例如9%4等于1

** 例如 2**3等于8

//  例如9//4等于2

比较运算

== 等于

!= 不等于

<> 不等于

>

<

>=

<=

赋值运算

==

+=   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

逻辑运算

and 布尔“与” ,x和y同时为真即x and y为真,否则为假

or   布尔“或”,x和y只要有一个为真即 x or y 为真 ,X和y同时为假则x or y为假

not  布尔“非”,x为真则返回为假,x为假则返回为真

成员运算

in         如果在指定序列中找到值返回ture,否则返回Fasle.

in not   如果在指定的序列中没有找到值就返回ture,否则返回false

身份运算

is        is是判断两个标识符是不是引用自一个对象

is not  is not 是判断两个标识符是不是引用自不同对象

位运算

&      按位与运算 两位同时为“1”,结果才为“1”,否则为0

|       按位或运算 只要有一个为1,其值为1

^      按位异或  相同为“0”,不同为“1”

x=0101,y=1011
x^y==1110

~      对一个二进制数按位取反,即将0变1,1变0。

<<    a = a << 2 将a的二进制位左移2位,右补0。若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。

a=0011 0011 #十进制等于51
a==a<<2
a==1100 1100 #十进制等于204

>>   a = a >> 2 将a的二进制位右移2位

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

操作数每右移一位,相当于该数除以2。

a=1100 1100 #十进制为204
a==a>>2
a=00110011 #十进制为51

bytes数据类型

三元运算

1 # author:"Jason lincoln"
2
3 a,b,c=1,3,5
4 d=a if a>b else c
5 print(d)

输出“5”

python3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分,文本总是unicode,由str类型表示,二进制数据则由byte类型表示。

encode和decode的转换

列表的使用

列表

 # author:"Jason lincoln"

 names=["Zhangyang","GuYun","Xuliangchen","xiangpeng"]
 #print(names)
 #print(names[0],names[2])
 # 切片
 #print(names[1:3])           #顾头不顾尾 从第一个开始取到第三个不包括第三个
 #print(names[3])
 print(names[-2:])            #从左往右数
 # ['Xuliangchen', 'xiangpeng']
 print(names[0:3])
 #['Zhangyang', 'GuYun', 'Xuliangchen']
 print(names[:3])
 #['Zhangyang', 'GuYun', 'Xuliangchen']
 names.append("Leihaidong")
 print(names)
 #['Zhangyang', 'GuYun', 'Xuliangchen', 'xiangpeng', 'Leihaidong']
 names.insert(1,"chenronghua")
 print(names)
 #['Zhangyang', 'chenronghua', 'GuYun', 'Xuliangchen', 'xiangpeng', 'Leihaidong']
 #names.remove("chenronghua")
 #del names[1]
 #names.pop()  #如果不输入默认删除最后一个
 #names.pop(1) #和del names[1]效果一样
 print(names)
 print(names.index("GuYun"))
 print(names[names.index("GuYun")])

切片

  1 #print(names[1:3])           #顾头不顾尾 从第一个开始取到第三个不包括第三个
  2 #print(names[3])
  3 print(names[-2:])            #从左往右数
  4 ##['Xuliangchen', 'xiangpeng']
  5 print(names[0:3])
  6 ##['Zhangyang', 'GuYun', 'Xuliangchen']
  7 print(names[:3])
  8 ##['Zhangyang', 'GuYun', 'Xuliangchen']
  9 names.append("Leihaidong")
 10 print(names)
 11 ##['Zhangyang', 'GuYun', 'Xuliangchen', 'xiangpeng', 'Leihaidong']
 12 names.insert(1,"chenronghua")
 13 print(names)
 14 ##['Zhangyang', 'chenronghua', 'GuYun', 'Xuliangchen', 'xiangpeng', 'Leihaidong']
delete
1 ames.remove("chenronghua")
2 del names[1]
3 names.pop()  #如果不输入默认删除最后一个
4 names.pop(1) #和del names[1]效果一样

列表之改

1 print(names)
2 print(names.index("GuYun"))
3 print(names[names.index("GuYun")])

统计

1 print(names.count("chenronghua"))

清空

names.clear()
反转
names.reverse()

排序

names.sort

合并

names.extend()

删变量

del 变量名

copy

1 names=["Zhangyang","GuYun",["alex","jack"],"xiangpeng","Xuliangchen"]
2 name2=names.copy()
3 print(names)
4 print(name2)
5 names[3]="向鹏"
6 names[2][0]="ALEX"  #浅copy,只copy内存地址,同一块内存
7 print(names)
8 print(name2)

深copy
 1 # author:"Jason lincoln"
 2 import copy
 3 names=["Zhangyang","GuYun",["alex","jack"],"xiangpeng","Xuliangchen"]
 4 #name2=copy.copy(names)  #和浅copy一样
 5 name2=copy.deepcopy(names) #深copy
 6 print(names)
 7 print(name2)
 8 names[3]="向鹏"
 9 names[2][0]="ALEX"  #浅copy,只copy内存地址
10 print(names)
11 print(name2)

浅copy

 # author:"Jason lincoln"

 import copy

 person=['name',['a',100]]
 p1=copy.copy(person) #浅copy
 p2=person[:]         #浅copy
 p3=list(person)      #浅copy

 p1[0]='alex'
 p2[0]='fengjie'
 print(p1)
 print(p2)

元组

1 names=('jack','alex')2 names.index
3 names.count

购物车程序

需求:

1.启动程序后,让用户输入工资,然后打印商品列表

2.允许用户根据商品编号购买商品

3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒

4.可随时退出,退出时,打印已购买商品和余额

 # author:"Jason lincoln"
 shopping_list=[]
 product_list=[
     ('iphone',5888),
     ('mac pro',12000),
     ('bike',800),
     ('alex python',120),
     ('coffee',31),
 ]

 salary=input('please input your salary:')
 if salary.isdigit():
     salary=int(salary)
     while True:
         for index,item in enumerate(product_list):
            # print(product_list.index(item),item)
            print(index,item)
         user_choice=input("选择要买啥?>>:")
         if user_choice.isdigit():
             user_choice=int(user_choice)
             if user_choice<len(product_list) and user_choice>=0:
                 p_item=product_list[user_choice]
                 if p_item[1]<=salary:         #买得起
                     shopping_list.append(p_item)
                     salary -=p_item[1]
                     print("Added %s into shopping cart,your current balsnce is \033[31;1m%s\033[0m"%(p_item,salary))
                 else:
                     print("\033[41;1m你的余额已剩[%s],还买个毛线啊\033[0m"%salary)
             else:
                 print("product code [%s] is not list"%user_choice)
         elif user_choice=='q':
             print("exit......")
         else:
             print("invild option")
 else:
     print("输入数字啊,傻嗨!")

字符串操作

 # author:"Jason lincoln"

 #name ='my \tname is alex'
 name="my \tname is {name} and i am {year} years old"
 print(name.capitalize()) #首字母大写
 print(name.count("a"))   #统计
 print(name.center(50,"-")) #打印50个字符,不够用“-”补齐,name放中间
 print(name.endswith("ex"))  #判断字符串以什么结尾
 print(name.expandtabs(tabsize=30)) #加空格,没什么卵用
 print (name[name.find("name"):]) #切片
 print(name.format(name='alex',year=23))
 print(name.format_map({'name':'alex','year':23}))
 print('abc123'.isalnum()) #是不是阿拉伯数字和字母
 print('Aassafsdf'.isalpha()) #是不是纯英文字母
 '.isdigit())  #是不是整数
 print('1f'.isdecimal()) #是不是十进制
 print('f-f'.isidentifier())#判断是不是一个合法的标识符
 '.isnumeric()) #是不是只有数字
 print('qqQ'.isupper()) #是不是全是大写
 ']))
 print(name.ljust(50,'*')) #放左边,不够用*补齐
 print(name.rjust(50,'*')) #放右边,不够用*补齐
 print('ALEX'.lower())  #变小写
 print('alex'.upper())  #变大写
 print('\nalex'.lstrip())#去左边的空格回车
 print('alex\n'.rstrip())#去右边的空格回车
 print('           alex\n'.strip())#去两边空格回车
 p=str.maketrans(")  #加密
 print("alex li".translate(p))             #加密
 print('alex li'.replace('l','L',1))
 print('alex li'.rfind('l')) #找到最右边的值的下标
 print('1+2+3+4'.split('+'))
 print('1+2\n3+4'.splitlines())
 print('Alex Li'.swapcase()) #大小写转换
 print('alex li'.title())
 print('alex li'.zfill(50)) #不够用0补上

字典

 # author:"Jason lincoln"

 info={
     'stu1101':"TengLan Wu",
     'stu102':"LongZe Luola",
     'stu1103':"Xiaoze Maliya",
 }
 print(info)
 print(info['stu1101'])

 info["stu1101"]="武藤兰"
 info["stu1104"]="Cangjingkong"
 print(info)
 #del
 #del info['stu1101']
 #print(info)
 print(info.get('stu1105')) #查
 print('stu1103' in info) #info has_key('stu1103') py2.x  判断

 b={
     'stu1101':'alex',
     1:3,
     2:5,
 }
 info.update(b)
 print(info)
 print(info.items()) #把字典转成列表
 c=dict.fromkeys([6,7,8],"test") #初始化列表
 print(c)
 c=dict.fromkeys([6,7,8],[1,{"name":"alex"},444])
 print(c)
 c[7][1]='jack chen'
 print(c)
 for i in info:        #字典转成列表  高效
     print(i,info[i])
 for k,v in info.items():
     print(k,v)

多层嵌套

 # author:"Jason lincoln"
 av_catalog={
     '欧美':{
         'www.youporn.com':['很多免费的,世界最大的','质量一般'],
         'www.pornhub.com':['很多免费的,也很大','质量比youporn高点'],
          'letmedothistoyou.com':['质量很高,真的很高','全部收费,屌丝请绕过 '],
     },"日韩":
     {'tokyo-hot':["质量不怎么样",'听说是收费的']

     },
     '大陆':{
         ':['全部免费,真好,好人一生平安','服务器在国外,慢']
     },
 }
 av_catalog['][1]="可以在国内做镜像"
 av_catalog.setdefault("大陆",{'www.baidu,com':['呵呵']}) #找到key就替换,找不到就创建
 print(av_catalog)