学习内容:

一、模块认识

二、pyc是什么

三、数据类型

四、列表、元组操作

五、字符串操作

六、字典操作

七、学习案例

一、模块认识

  模块(又称库)分标准库(直接导入)和第三方库(必须下载安装)。Python的强大之处是有非常丰富和强大标准的第三方库。比如:sys,os

       sys

import  sys

print(sys.path)  #打印环境变量
print(sys.argv) #打印相对路径
print(sys.argv[2]) #取出第三个  0,1,2,3

  os

import os

cmd_res = os.system("dir") #当前目录下的文件,os.system是直接输出在屏幕上,不是存储,而是执行结果
#执行命令,不保存结果
print("-->",cmd_res) # 是0 ,说明输出成功了

cmd_res = os.popen("dir").read()
print("-->",cmd_res)


#在当前文件夹创建目录
os.mkdir("new file")

 

  注:  在新建paython文件时不要命名与库名相同

  当前目录查找,然后系统环境变量目录中查找

二、pyc是什么

  Python是解释型语言,其实也是先编译(在内存中.pyc),然后执行。

  当Python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python执行结束时,Python解释器则将PyCodeObject写回.pyc文件中。当Python程序第二次执行时,首先程序会在硬盘中寻找.pyc文件,如果找到,则直接载入,否则就重复上面的过程。所以我们应该这样来定位PyCodeObject和.pyc文件,我们说.pyc文件其实是PyCodeObject的一种持久化保存方式。

三、数据类型

1.数字

  int(整型)

  在32位机器上,整型位数是32位,取值范围是-2^31~2^31-1

  在64位机器上,整型位数是64位,取值范围是-2^64~2^64-1

  long(长整型)

  Python的长整型没有指定具体多少位,即:Python没有限制数值大小,但由于机器内存有限,不可能无限大。

  注:自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以在长整数数据后面不加字母L也不会导致严重后果。

  float(浮点型)

  浮点数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。

  complex(复数)

  复数由实数部分和虚数部分组成,一般形式是x+yj,除工程类,一般不常用。

2.布尔值

  只有两种类型:真(1)、假(0)

3.字符串

“hello world”

  Python中字符串在C语言中体现的是一个字符串组,每次创建字符串的时候需要咋内存中开辟一块连续的空,并且一旦需要修改字符串,就需要再次开辟空间,+号每出现一次就会在内存中重新开辟一块空间。

4.进制

  二进制  0 1

  八进制  0 1 2 3 4 5 6 7

  十进制

  十六进制 

5.bytes类型

  字符str和字节bytes在Python 3 中不会以任意隐式方式混用。

  encode编码  decode 解码

msg = "中国,欢迎您"
print(msg)
print(msg.encode(encoding="utf-8"))
print(msg.encode())  #Python 3 中默认utf-8
print(msg.encode(encoding="utf-8").decode(encoding="utf-8"))

6.三元运算

  result = 值1  if 条件  else  值2

  如果条件为真:result=值1

  如果条件为假:result=值2

7.列表

  创建列表:

names = ["ZhangSan", "LiSi", "WangWu"]

8.元组(不可变列表,即制度列表)

  有别于列表的中括号,用括号

names = ('Lily','Lucy')

9.字典(键值对,输出无序)

  创建字典:

info = {
    'stu001': 'ZhangSan',
    'stu002': 'LiSi',
    'stu003': 'WangWu'
}

四、列表、元组操作

  列表是我们常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改、删除等操作。

定义列表:

names = ["ZhangSan", "LiSi", "WangWu"]

访问列表

print(names) #打印列表中所有元素
print(names[0]) #打印第一个元素
print(names[-1]) #从右向左 -1  -2  -3

切片操作:取多个元素

print(names[0:2]) # 取下标0至下标2,包括0,不包括2
print(names[1:-1]) #取下标1至-1的元素,不包括-1

print(names[:2]) # 如果从头开始去,0可以不用写,等同与print(names[0:2])
print(names[1:]) #如果想取到最后一个,必须不能写-1,只能这样写

print(names[-2:]) # 取后面2个
print(names[0:2]) #取到0 1  切片 包含起始位置,不包含结束位置(前面是0可以不写)

print(names[0::2])#后面的2表示,每隔一个元素,就取一个

添加

names.append("ZhangFei") #追加到后面

插入

names.insert(1,"ZhangMei") #插入
names.insert(3,"ZhangLei") #插入

修改

names[2] = "Me" #修改

删除

names.remove("ZhangSan")  #删除指定元素
del names[1] 
names.pop() # 删除最后一个

扩展、合并

names2 = [1,2,3,4]
names.extend(names2) #扩展 合并
print(names)

拷贝

import copy

names = ["ZhangSan", "LiSi", "WangWu"]
names1 = names.copy() #浅复制 只复制第一层
names3 = copy.deepcopy(names) #深复制  全部复制

统计

print(names.count("ZhangSan")) #有多少个

排序、反转

names.reverse() #反转
print(names)

names.sort() #排序 按ASCII码来的
print(names)

获取下标

print(names.index("ZhangSan")) # 查找位置
print( names[names.index("ZhangSan")] ) # 查找位置并打印

元组

  元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

names = ('Lily','Lucy')

它只有2个方法,一个是count,一个是index。

五、字符串操作

name = "my name is Lily"

print(name.capitalize()) #首字母大写
print(name.count("i")) #i 有几个
print(name.center(50,"-")) #打印50个字符name放中间,不足用---
print(name.endswith("ly")) #以什么结尾 返回ture  false
print(name.expandtabs()) #tabsize=30 转成多少个空格  当有 \t
print(name.find("name"))
print(name[name.find("name"):7]) #切片 把name取出来
print('name {0} age{1}'.format(name='Lily',year=19)) # 填充
print(name.format_map({'name':'Lily','year':19})) #
print(name.isalnum()) #是不是阿拉伯数字 所有英文字符和数字
print(name.isalpha()) #纯英文字符
print(name.isdecimal()) #是否
print('22'.isdigit()) #是否整型
print('1A'.isidentifier()) #是否合法的标识符
print('aa 1A'.islower()) #是否小写
print('33.33'.isnumeric())#是否只有数字
print('My Name'.istitle()) #是否所有字符首字母大写
print('My Name'.isprintable()) #tty file,drive file
print('My'.isupper()) #是否全大写
print(''.join(['1','2','3'])) #
print('+'.join(['1','2','3'])) #
print(name.ljust(50,'*')) #长50,不够用*补
print(name.rjust(50,'-'))
print('Lily'.lower()) #大写变小写
print('Lily'.upper()) #小写变大写
print('   Lily\n'.lstrip()) #从左去掉回车和空格
print('Lily\n'.rstrip()) #从左去掉回车和空格
print('   Lily\n'.strip()) #从左去掉回车和空格

p = str.maketrans("abcdef",'123456')
print(p)
print("aely be".translate(p))

print('Lily'.replace('l','L'))

print('lily'.replace('l','L',1)) #替换 只替换1个

print('Lily'.rfind('y')) #从左向右,找到最后那个值的下标
print('1+2+3+4'.split('+')) #按+分隔
print('1+2\n+3+4'.splitlines()) #按+分隔
print('Lily is'.swapcase()) #大写变小写,小写变大写
print('lily'.title()) #都变大写
print('lily'.zfill(50)) #长度不够用0填充

 

六、字典操作

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

创建字典:

info = {
    'stu001': 'ZhangSan',
    'stu002': 'LiSi',
    'stu003': 'WangWu'
}

字典的特性:

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

增加元素

info['stu004'] = '中国'  #存在就修改,不存在创建

修改

info['stu001'] = '中国'

查找

#查找
info['stu001']
print(info.get('stu001'))
print(info.get('stu004'))

print('stu005' in info)#标准用法

print(info)
print(info['stu001'])

删除

#del 删除
del info['stu001']
info.pop('stu002') #删除
info.popitem() #随机删除

合并

info = {
    'stu001': 'ZhangSan',
    'stu002': 'LiSi',
    'stu003': 'WangWu'
}
b = {
    'stu001':'ZhangFei',
    1:3,
    2:5
}
info.update(b) #合并

循环

#循环
for i in info:
    print(i,info[i])
for k,v in info.items(): #字典变成列表  如果数据很多不高效,因为需要转换
    print(k,v)

 

多级嵌套

 

七、学习案例

程序:购物车程序

需求:

  1. 启动程序后,让用户输入工资,然后打印商品列表
  2. 允许用户根据商品编号购买商品
  3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 
  4. 可随时退出,退出时,打印已购买商品和余额
    product_list = [
        ('Iphone',5000),
        ('Mac pro',12000),
        ('Bike',800),
        ('Watch',10000),
        ('Python',50),
        ('Coffe',31),
    ]
    shopping_list = []
    salary = input("Input your Salary:")
    if salary.isdigit():  #判断是否数字
        salary = int(salary)
    
        while True:
      #      for item in product_list:
      #          print(product_list.index(item),item)  #打印下标
    
            for index,item in enumerate(product_list):  #enumerate打印下标
                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")
                else:
                    print("product is not exist"%user_choice)
            elif user_choice == 'q':
                print('-----shopping list-----')
                for p in shopping_list:
                    print(p)
                print("Your current blance:",salary)
                exit()
            else:
                print('Invalid option')

     

posted on 2018-05-04 10:54  Sue_blog  阅读(199)  评论(0编辑  收藏  举报