python Day2 初窥门径

 

认识模块

python库

      有两种:

  1,标准库:不需要安装,直接导入,可以使用Python的最常用功能getpass,os,sy

  2,第三方库:要必须安装才能使用第三方库

调用标准库sys

import sys

print(sys.argv)
print(sys.argv[0])

#输出:
['c:/python/login.py']
c:/python/login.py


python test.py hello  nihao
#输出:
['test.py', 'hello', 'nihao']      #把执行脚本时传递的参数获取到了
test.py
 

sys.argv这个方法是返回的是一个列表,如果要取出某个值,可以用列表方法取到

调用标准库os

import os

os.system('pwd')  #调用系统命令,查看当前目录
import os,sys

os.system(''.join(sys.argv[1:]))  #把用户提交的参数当做一条命令提交给os.system执行

import也可以调用自己写的模块

将自己写的模块文件放在要当前目录,只能在当前目录调用该模块,如果想要任何地方都可以使用,需要将该模块文件拷贝到python全局环境变量目录里,一般是在python目录下的site-packages中,具体的路径可以用命令print(sys.path) 查看,可以查看到环境变量列表

 

三次元运算

 

result = 值1 if 条件 else 值2

 

举列子:

#如果a<b,就d=a,否者d=c
a,b,c=1,2,3
d=a if a < b else c
print(d)

#输出:
1

这样简化了if...elif...else,比较方便

进制法则

  • 二进制,01
  • 八进制,01234567
  • 十进制,0123456789
  • 十六进制,0123456789ABCDEF  二进制到16进制转换详细请看链接http://jingyan.baidu.com/album/47a29f24292608c0142399cb.html?picindex=1

数据类型转换

在python2.x中,是不区分bytes类型和str类型,在2.x中如果数字太大会自动转换成lon,但是在Python3.x就会报错,或者手动转换,所以python3.0中二者是严格的区分,所以不能手动拼接字符串和数据包,也不能在字节包里搜索字符串

在python中二进制的数据都是bytes的数据类型,文本都是字符串的数据类型

name = '我爱天安门'
print(name)
print(name.encode('utf-8'))


print(b'\xe6\x88\x91\xe7\x88\xb1\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8'.decode('utf-8'))

 

列表

通过下标访问列表中的元素,下标从0开始计数

1,定义列表,并输出:

names = ["zhang","wang","li","zhao"]
print (names)
#输出:
["zhang","wang","li","zhao"]

 2,切片,取多个元素

print(names[0])      #取第一个元素
print(names[0:3])    #取前三个元素
print(names[:3])     #取前三个元素
print(names[-1])     #取最后一个元素
print(names[1:])     #取第二个元素到最后一个的元素(包含最后一个元素必须这么写)
print(names[1:-1])   #取第二个元素到倒数第二个元素(这样就不包含了最后一个元素)
print(names[0::2])   #步长切片:后面的2是代表,从第一个元素开始,没隔2个元素取一个
print(names[::2])    #同上

3,添加元素

names.append("scg")   #在列表最后添加新的元素
names.insert(1,"我是插入的在li前面的")   #1是下表位置,就是将新元素插入在下标1的位置上,之前下标1的元素向后移

4,查询元素所在的下标

print(names.index("li"))  #查询元素'wang'在列表中的下标

5,修改元素

names[1] = "我是wang"   #将下标为2的元素'wang' 修改为'我是wang'

6,删除元素

#删除元素有三种方式
del names[2]      #删除指定下标为2的元素'li'
names.remove("li")    #删除指定元素'li'
names.pop()       #删除列表最后一个元素

7,拓展元素

names2 =[1,2,3,4]
names.extend(names2)       #将names2列表中的元素追加到names列表中

8,排序,反转排序

#排序
names.sort()

#反转排序
names.reverse()

9,列表循环

for i in names:
    print i

10,统计列表中某个元素有多少个

names = ["zhang","wang","li","zhao",'wang']
names.count('wang')

 

元组

 元祖跟列表差不多,但是元祖创建出来后,他的元素就是固定的无法修改,所以叫只读列表

names = ("zhang","wang","li","zhao")

元祖只有两种方法,一个是count,一个是index

 

购物车项目

# -*- coding:utf-8 -*-
'''
程序:购物车程序

需求:

启动程序后,让用户输入工资,然后打印商品列表
允许用户根据商品编号购买商品
用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
可随时退出,退出时,打印已购买商品和余额
'''

product_list= [
    ["book",100],
    ["car",2000],
    ["iphone",5000],
    ["coffe",50]
]
shopping_list  = []
salary = input("请输入你的余额:")
if salary.isdigit():
    salary = int(salary)
    while True:
        for index,item in enumerate(product_list):
            print(index,item)
        user_chosse = input("选择要买的产品:")
        if user_chosse.isdigit():
            user_chosse= int(user_chosse)
            if user_chosse < len(product_list) and user_chosse >=0:
                p_item = product_list[user_chosse]
                if p_item[1] <= salary:
                    shopping_list.append(p_item)
                    salary -= p_item[1]
                    print("%s加入购物车,你的余额还有%s" % (p_item[0],salary))
                else:
                    print ("你的余额只剩%s,余额不足"%salary)
            else:
                print("商品编号%s,不存在"%user_chosse)
        elif user_chosse == 'q':
            print ("-----------shopping list----------")
            for p in shopping_list:
                print (p)
            print("你的余额还剩:%s"%salary)
            exit()
        else:
            print("输入有误")

 

字典

字典是一种 Key - value的数据类型

dict是无序的,但是key是必须唯一的

#创建字典
info = {
    'stu1' : 'zhang'
    'stu2' : 'wang'
    'stu3' : 'li'
    'stu4' : 'zhao'
}

查询字典

print(info)                    #输出字典所有key和值
print(info["stu1"])            #输出key为stu1的值
print(info.get("stu1"))        #判断字典中是否有stu1的key,如果有则打出值,没有则输出None
print("stu1" in info)          #判断字典中是否有stu1的key,如果有则输出True,没有则输出False

修改

info["stu1"]  = "苍老师"

增加

info['stu005'] = '波多老师'

删除

del info ["stu5"]
info.pop("stu5")

多级字典嵌套和操作

av_catalog = {
    "欧美":{
        "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
        "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
        "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
        "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
    },
    "日韩":{
        "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
    },
    "大陆":{
        "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    }
}

av_catalog["大陆"]["1024"][1] = "可以做国内镜像"   #将“服务器在国外,慢“改成“可以做国内镜像”

其他操作

#values
print(info.values())                            #只打出字典中的所有值,不输出key

#keys
print(info.keys())                              #只打出字典中的所有key,不输出values

#setdefault
info.setdefault("stu5","alex")                  #当字典中没有stu5的key时候,则新加,当字典中已经有了stu5的key,则不操作

#update
b= {1:2,3:4, "stu1":"龙泽萝拉"}
info.update(b)                                  #将b字典的内容更新到info字典中,如果不存的key则新加进去,如果已存在的key,则更新值
 

循环字典

#方法1:
for key  in info:
    print(key,info[key])

#方法2:
for k,v in info.items()                         #将字典转换成列表,数据量大时,千万不要用
    print(k,v)
 
posted @ 2016-08-04 21:25  jock_G  阅读(121)  评论(0编辑  收藏  举报