模块

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)

alex python of day2的更多相关文章

  1. python s12 day2

    python s12 day2   入门知识拾遗 http://www.cnblogs.com/wupeiqi/articles/4906230.html 基本数据类型 注:查看对象相关成员 var, ...

  2. (转)Python作业day2购物车

    Python作业day2购物车 原文:https://www.cnblogs.com/spykids/p/5163108.html 流程图: 实现情况: 可自主注册, 登陆系统可购物,充值(暂未实现) ...

  3. python学习day2

    一.模块初识 python模块 模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用 ...

  4. Python自学day-2

    一.模块     模块分两种:标准库和第三方库,标准库是不需要安装就可以使用的库.     import [模块名]:导入一个库,优先是在项目路径中寻找.自定义模块名不要和标准库模块名相同.   sy ...

  5. Python学习-day2

    这周时间充裕,把第一周的两个作业登陆验证和三级菜单做完后又用零零散散的时间看完了第二周的课程,不得不说老男孩这个教育方式感觉还是不错的,其实说白了就是花钱找个人监督自己学习呗,而且还强行让我们养成一些 ...

  6. Python基础-day2

    1.Python模块python 中导入模块使用import语法格式:import module_name示例1: 导入os模块system('dir')列出当前目录下的所有文件 # _*_ codi ...

  7. alex python of day1

    Print("hello word!")#打印hello word!向python世界发生第一声呐喊,仪式很重要 定义变量 name="Alex Li" nam ...

  8. alex python of day3

    集合 # author:"Jason lincoln" list_1={1,4,5,7,3,6,7,9} list_1=set(list_1) #把集合变成列表 去重复 list_ ...

  9. python基础day2

    一.python字符串 字符串是 Python 中最常用的数据类型.可以使用引号('或")来创建字符串 1.1Python访问字符串中的值 Python不支持单字符类型,单字符在 Pytho ...

随机推荐

  1. Ubuntu1604中mysql的登录问题

    自从Ubuntu 1604出来后,新安装了尝试了下,在安装到mysql的时候用root登录不了,在网上查了很多资料都没找到解决办法.后来su到系统的root后直接就可以登录mysql了,看到Ubunt ...

  2. GOLANG 基本数据类型 浮点型

    浮点型 主要为了表示小数 也可细分float32和float64两种 float64提供比float32更高的精度 取值范围 类型 最大值 最小非负数 float32 3.40282346638528 ...

  3. 拓展:使用终端创建、编译、链接OC…

    本文介绍一下如何使用Mac OS X自带终端快速创建.编译.链接OC程序. 1.打开终端 顺序:打开Finder——应用程序——实用工具——终端 2.打开需要存放 .m 文件的路径(比如我需要放到桌面 ...

  4. Linux堆内存管理深入分析--阿里聚安全

    http://www.freebuf.com/author/%E9%98%BF%E9%87%8C%E8%81%9A%E5%AE%89%E5%85%A8

  5. POJ 3280 Cheapest Palindrome (区间DP) 经典

    <题目链接> 题目大意: 一个由小写字母组成的字符串,给出字符的种类,以及字符串的长度,再给出添加每个字符和删除每个字符的代价,问你要使这个字符串变成回文串的最小代价. 解题分析: 一道区 ...

  6. Python - 列表解析式/生成器表达式

    列表解析式: [expr for iter_var in iterable if cond_expr] 生成器表达式: (expr for iter_var in iterable if cond_e ...

  7. JedisConnectionPool scala

    /** * Created by lq on 2017/8/29. */ object JedisConnectionPool { val config = new JedisPoolConfig() ...

  8. 关于Cocos2d-x中init方法和onEnter方法的区别

    init()和onEnter()这两个方法都是写实例化对象的类(比如继承自Node的一些类等等)的时候用到的方法. 一般都是public类型下面的 bool init(); void onEnter( ...

  9. Oracle数据库的启动与关闭

    一.概述: Oracle数据库的启动分为启动数据库实例.装载数据库和打开数据库3个过程,对应数据库的3种模式. 启动数据库实例:根据数据库初始化参数文件中参数设置,在内存中为数据库分配SGA.PGA等 ...

  10. C# 使用API检查域用户名和密码是否正确

    添加引用: using System.Runtime.InteropServices; public class VerifyUserByDomain { ; ; ); [DllImport(&quo ...