Python第二节

模块初识  

  • Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的。
  • 标准库:不需要安装直接导入
  • 第三方库:必须安装下载

标准库模块:

  • sys模块
# Author:XP
import sys
print(sys.path) #打印环境变量
print(sys.argv) #打印相对路径
print(sys.argv[2])
  • os模块
# Author:XP
import os
cmd_res = os.system("dir") #执行命令不保存结果
cmd_res = os.popen("dir").read()#执行命令保存结果
print("-->",cmd_res)
os.mkdir("new_dir") #创建目录哭

pyc是什么

简述Python的运行过程

在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

数据类型:

int:(整形)
long:(长整形)《--(python3没有)
float:(小数and浮点数)浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。

布尔值:【True:真(1)】或【False:假(0)】

列表:

创建列表:
names = ['ZhangYang''GuYun''xp','liangcheng']
    print(names[1],names[2])
#切片:(查)
    print(names[1:3])
    GuYun xp
 
#反向取值切片:
    print(names[-2:])
    xp liangcheng
提示:前后(正负)取值 下标为0时可以省略这个0如:[2:]、[-2:]
 
#不长切片
    print(names[::2]) 
 
#插入(增)
    names.insert(1,"nihao")
    names.insert(3,"keyi")
 
#改
    names[2] ="xiedi"
 
#删
    del names[1]
    names.remove(xp)
 
#查找一个用户的位置点
    print(names.index("xp"))
    print(names[names.index("xp")])
 
#查找统计列表中的重复字符串的数量
    print(names.count("xp"))
 
#清空列表
    names.clear()
 
#反转列表:
    names.reverse()
 
#按字母顺序排序【特殊符号-->数字-->大写字母-->小写】
    names.sort()
 
#列表合并:
    names2 = [1,2,3,4]
    names.extend(names2)
 
##copy模块:
      import copy
names = ['ZhangYang''GuYun''xp','liangcheng']
#三种浅拷贝:
      n1=copy.copy(names)
      n2=name[:]
      n3=list(names)
 
#深拷贝:
    name2 = copy.deepcopy(names)
 
 

元组

(不可变列表)

创建元组:
ages = (1122334455)

程序练习 

请闭眼写出以下程序。

程序:购物车程序

需求:

  1. 启动程序后,让用户输入工资,然后打印商品列表
  2. 允许用户根据商品编号购买商品
  3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 
  4. 可随时退出,退出时,打印已购买商品和余额
#Author:XP
product_list = [
    ('Iphone',5800),
    ('Mac Pro',9800),
    ('Watch',10600),
    ('Bike',800),
    ('Coffee',31),
    ('Alex Python',120),
]
shopping_list=[]
salary = input("输入工资:")
if salary.isdigit():
    salary = int(salary)
    while True:
        for index,item in enumerate(product_list):
            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 balance 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 exist!"% user_choice)
        elif user_choice == 'q':
            print("----shopping list------")
            for p in shopping_list:
                print(p)
            print("your current balance:",salary)
            exit(1)
        else:
            print("invalid option") 

字符串常用操作:

name = "My name is Xp"
print(name.capitalize()) #首字母大写
print(name.count("a")) #查看有几个相同的字符串
print(name.center(50,"-"))#打印50个字符不够的话用‘-’补全
print(name.endswith("xp")) #以什么结尾
print(name.expandtabs(tabsize=30))#转成多少个"这里是30个"空格
print(name.find(name))#找字符串的索引
print('Xp'.lower()) #大写转换成小写
print('Xp'.upper())#小写转换成大写
print(name.format(name='Xp',year=123))
#print(name.format_map( {'name';'Xp','year';12}  ))
print('ab23'.isalnum())
print('abA'.isalpha())
print('1.23'.is_integer())
print('a 1A'.isidentifier())#判断是不是一个合法的标识符

字典操作:

字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

语法:

info = {
    'stu1101': "TengLan Wu",
    'stu1102': "LongZe Luola",
    'stu1103': "XiaoZe Maliya",
}
# info["stu1101"] ="武藤兰" #改
# info["stu1104"] ="CangJinKong"#该字符串存在就修改不存在就添加
#print(info["stu1101"]) #查
#del info["stu1101"] #删除
#info.pop("stu1101") #判断字典里是否有数据
#info.popitem("stu1101")#随机删除也可指定
#print(info.get('stu1104'))#在字典里精确查找
#print('stu1104' in info)#判断字典里是否有此字符串
#info has_key('1103) #py2.7里判断字典里是否有此字符串

字典的特性:

  • dict是无序的
  • key必须是唯一的,so 天生去重

循环:

info = {
    'stu1101': "TengLan Wu",
    'stu1102': "LongZe Luola",
    'stu1103': "XiaoZe Maliya",
}
for i in (info):
    print(i,info[i])

  

 

posted @ 2016-08-04 21:11  小伙真精神  阅读(192)  评论(0编辑  收藏