内容

  1. 模块初识
  2. 数据运算
  3. bytes数据类型
  4. python数字类型
  5. python序列类型-字符串|列表|元组的常用操作
  6. 购物车程序练习
  7. python映像类型-字典的使用 
  8. 三级菜单实例
  9. 本周作业-购物车优化

 Python数据类型:

按特征划分为:数字类型、序列类型、映像类型、集合类型;

按可变性划分:可哈希的,不可变数据类型包括{数字类型、不可变集合(frozenset)、字符串(str)、元组(tuple)};可变数据类型包括{字典(dict)、列表(list)、可变集合(set)}。

四、python 数字类型

数字类型

int(整型):

简单来讲就是整数。 

在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1

在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1

举例: 

name = 25

print (type(name))

输出:

<class 'int'>

long(长整型):

短整型的取值范围[-2417483648,2417483647],如果超过这个范围怎么办呢?就可以使用长整型数,不过在结尾必须写上大写的“L”,小写也可。但是为了避免与1混淆,建议用L

float(浮点型):

浮点数用来处理实数,即带有小数的数字, 如:2.6、3.14

complex(复数):

复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。

#Python数字,python支持四种不同的数据类型 int整型 long长整型 float浮点型 complex复数 var1 = 10; #表示整型 var2 = 678L #表示长整型 var3 = 12.34;#表示浮点型 var4 = 123j #复数 var5 = 123+45j #复数

bool(l布尔值):

真与假的判断(经常结合if语句使用)。0关闭、1开启。

判断包含 

>>>  name = "chen chang qing"


>>> "chen"  in name


True


>>> if "chen" in name:


...     print "OK"


...


OK

 


五、python序列类型-字符串|列表|元组的常用操作

序列类型

1)、字符串

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

  字符串常用功能:

  • 移除空白
  • 分割
  • 长度
  • 索引
  • 切片

A、移除空白:通过.strip() 去掉,()里面填写字母还可以去掉字符

python 指定数组中的指定字段排序_元组

python 指定数组中的指定字段排序_字符串_02

1 name = input("Enter your name:") 2 dy =  '''
 3     name: %s
 4 ''' % (name)
 5 
 6 print (dy) 
 7 name1 = input("Enter your name1:").strip()
 8 dy1 = """
 9     name:%s
10 """ % (name1)
11 print (dy1)
12  输出:
13 
14 Enter your name:  chen
15     name:   chen #带空格输出
16 Enter your name1:     chenchangqing
17     name:chenchangqing


去空格



B、切割、分片索引操作

python 指定数组中的指定字段排序_元组

python 指定数组中的指定字段排序_字符串_02

#python字符串
"""python的字串列表有2种取值顺序:
从左到右索引默认0开始的,最大范围是字符串长度少1
从右到左索引默认-1开始的,最大范围是字符串开头
"""

name = "chen chang qing"

print (name)     #全部打印
print (name[0])  #输出第一个字符
print (name[2:5])#输出2到5个字符
print (name[2:20:2])#输出2到5个字符,最后面这个2 表示步长
print (name[2:]) #输出第三个字符后面的字符串
print (name*2)   # 连续打印两次
print (name + "yes") #字符串的拼接
print (name[-3:]) #输出倒数第三个位置(含倒数第三个字母\数字)开始往后的所有字符
print (name[-6:-2]) #输出倒数第六个位置字母到倒数第二个(不包含第二字母)字母之间的字符串,注意空格也算一个站位

切片、索引操作

2)、列表 

#Python列表,List是Python使用最频繁的数据类型之一;列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)

列表存储信息是中括号 [],

  • 索引
  • 切片
  • 追加
  • 删除
  • 长度
  • 切片
  • 循环
  • 包含

基本操作 如下:

python 指定数组中的指定字段排序_元组

python 指定数组中的指定字段排序_字符串_02

1 list = ["chen","chang","qing"]  2 list1 = [1,2,3,4,5,6,7,8,9]
  3 #列表中的切片跟字符串的切片是一样的
  4 print (list[0])  #根据索引取值["chen","chang","qing"]分别对应 0、1、2
  5 print (list1[2:6])#根据切片,输出第三个字符到第六个字符
  6 print (list1[2:7:2]) #最后面这个2 表示步长,最后一个不打印
  7 print (list*2) #连续打印两次
  8 print (list + list1 ) #列表组合 
  9 打印:#一个print 对应一个输出
 10 chen
 11 
 12 [3, 4, 5, 6]
 13 [3, 5, 7]
 14 ['chen', 'chang', 'qing', 'chen', 'chang', 'qing']
 15 ['chen', 'chang', 'qing', 1, 2, 3, 4, 5, 6, 7, 8, 9]
 16 #打印列表中能使用的方法
 17 print (dir(list))
 18 
 19 输出:
 20 
 21  ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
 22 
 23 前面有两个下划线的先不管,这是私有方法,后期在解析;重点:#append 追加;count 统计  extend 扩展;index 索引;insert 插入;pop 删除一个; remove 删除指定的一个; reverse 反转 ; sort 排序;
 24 #.append在最后追加字符串
 25 print ("________________")
 26 list.append("chenchangqing")
 27 print (list)
 28 输出:
 29 
 30 ['chen', 'chang', 'qing', 'chenchangqing']
 31 #.insert指定所以位置插入字符串 
 32 print ("________________")
 33 print (list)
 34 
 35 list.insert(1,"123chen")
 36 print (list)
 37 输出:
 38 
 39 ['chen', 'chang', 'qing', 'chenchangqing']
 40 ['chen', '123chen', 'chang', 'qing', 'chenchangqing'] 
 41 #.index 找出字符串在列表中的位置
 42 print ("__________________")
 43 print (list) 
 44 
 45 number = list.index("chang")
 46 print (number)
 47 输出:
 48 
 49 ['chen', '123chen', 'chang', 'qing', 'chenchangqing']
 50 2 
 51 
 52 #count 统计字符串在列表中出现的次数
 53 print ("__________________")
 54 print (list)
 55 tj = list.count("chen")
 56 print (tj)
 57 输出:
 58 
 59 ['chen', '123chen', 'chang', 'qing', 'chenchangqing'] 
 60 
 61 1
 62 
 63 #.pop()删除列表中最后一个元素
 64 print ("________________")
 65 
 66 print (list)
 67 print (list.pop())
 68 print (list)
 69 输出:
 70 
 71 ['chen', '123chen', 'chang', 'qing', 'chenchangqing']
 72 chenchangqing
 73 ['chen', '123chen', 'chang', 'qing'] 
 74 #.remove()  指定元素删除
 75 print ("________________")
 76 print (list)
 77 list.remove("chen")
 78 print (list)
 79 输出:
 80 
 81 ['chen', '123chen', 'chang', 'qing']
 82 ['123chen', 'chang', 'qing']
 83 
 84 #.sort  根据元素中的第一个字符进行排序,顺序为特殊字符、数字、字母
 85 print ("________________")
 86 print (list)
 87 list.append("chenchangqing")
 88 list.sort()
 89 print (list)
 90 输出:
 91 
 92 ['123chen', 'chang', 'qing']
 93 ['123chen', 'chang', 'chenchangqing', 'qing']
 94 
 95 #.reverse 反转,最后的元素变成第一个
 96 print ("________________")
 97 print (list)
 98 list.reverse()
 99 print (list)
100 输出:
101 
102 ['123chen', 'chang', 'chenchangqing', 'qing']
103 ['qing', 'chenchangqing', 'chang', '123chen']
104 
105 #.extend 扩展,把C的赋值分别查分添加到list列表中
106 
107 print ("________________")
108 print (list)
109 c = "chen"
110 list.extend(c)
111 print (list)
112 输出:
113 
114 ['qing', 'chenchangqing', 'chang', '123chen']
115 
116 ['qing', 'chenchangqing', 'chang', '123chen', 'c', 'h', 'e', 'n']
117 
118  #循环删除列表中相同的元素,与for预计结合
119 
120 name = ["chen","chenchangqing","f","fa",1,2,3,5,"chen",4,8,8,"chen"]
121  for i in range(name.count("chen")) :
122 
123 name.remove("chen")
124 
125 print (name)
126 
127 输出:
128 
129 ['chenchangqing', 'f', 'fa', 1, 2, 3, 5, 4, 8, 8] 
130  #判断包含
131 
132 >>> "chen"  in name
133 True
134 >>> if "chen" in name:
135 ...     print "OK"
136 ...
137 OK


列表的操作



3)、元组

元组可以切片、取值。但不能修改元组里面的信息。简单讲:列表能够干元组的活,元组不能干列表的活

元组存储信息是小括号 ()

  • 统计
  • 获取游标 

元组的操作举例:

python 指定数组中的指定字段排序_元组

python 指定数组中的指定字段排序_字符串_02

1 定义元组
 2 name = ("chen","chang","qing","chenchang","chenqing","chen",123)
 3 
 4 A、打印元组的使用方法  
 5 
 6 print (dir(name))
 7 输出:
 8 
 9  ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
10 
11 #只有count, index,双下划线的私有定义先忽略
12 
13 B、统计 
14 
15 number = name.count("chen")
16 print number
17 输出:
18 2 
19 
20 C、获取游标 
21 
22 index = name.index("qing")
23 print (index)
24  输出:
25 
26 2

元组的操作六、购物车练习 

程序:购物车练习

需求:

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

python 指定数组中的指定字段排序_元组

python 指定数组中的指定字段排序_字符串_02

1 product_list = [
 2     {'宝马':300000},
 3     {'奔驰':450000},
 4     {'奥迪':350000},
 5     {'现代':106000},
 6     {'哈弗':150000},
 7     {'传祺':120000}
 8 ]
 9 
10 shoppling_list = []
11 salary  = input("请转入您的购车金额:")
12 
13 i = 0
14 
15 if salary.isdigit():
16     salary = int(salary)
17     while i < 3 :
18         for index,item in enumerate(product_list):
19             print (index,item)
20 
21         user_choice = input("请输入您想购买的品牌(如没有适合的品牌,请输入q退出):")
22         if user_choice.isdigit():
23             user_choice = int(user_choice)
24 
25             if 0 <= user_choice < len(product_list):
26                 for key in product_list[user_choice]:
27                     p_item = product_list[user_choice][key]
28 
29                     if p_item <= salary:
30                         shoppling_list.append(product_list[user_choice])
31                         salary -= p_item
32                         print ("已购买商品:%s ,您的余额: %s " % (shoppling_list,salary))
33 
34                     else:
35                         print ('''余额不足,剩余:%d ,请及时充值;\n所购买商品:%s ''' % (salary, shoppling_list))
36 
37                         confirm_recharge =  input("\n是否充值,请选择 yes 或 no:")
38                         if confirm_recharge == "yes":
39                             add_salary = int(input("请输入充值金额:"))
40                             salary += add_salary
41                             print ("充值后余额 %s" % (salary))
42                         elif confirm_recharge == "no":
43                             print ("最终购买商品列表%s;\n余额剩余:%d " % (shoppling_list,salary))
44                             balance_refund = input("是否申请余额退款:yes 或 no:")
45 
46                             if balance_refund == "yes":
47                                 refund_amount = input("请输入退款金额:")
48                                 if refund_amount.isdigit():
49                                     refund_amount = int(refund_amount)
50                                     salary -= refund_amount
51                                     print ("退款成功,余额剩余:" ,salary)
52                                 else:
53                                     exit()
54                             elif balance_refund == "no":
55                                 exit()
56 
57             else:
58                 print ("您选择产品编号 %d 不存在,请继续选择:" % (user_choice))
59 
60         elif user_choice == "q":
61             print ("商品列表: %s;剩余余额:%s" % (shoppling_list,salary))
62             exit()
63         else:
64             print ("错误选项,请认真对待:",user_choice)
65             i  += 1

python代码

enumerate 打印列表中的,索引。

逻辑图:

python 指定数组中的指定字段排序_元组_11

 七、映像类型-字典的使用

映像类型

1、字典

字典的特性:

  • dict 是无序的
  • key 是必须是唯一的,有去重的功能。

 

python 指定数组中的指定字段排序_元组

python 指定数组中的指定字段排序_字符串_02

1 city_center = {
 2     "广东":"广州",
 3     "广西":"南宁",
 4     "湖南":"长沙",
 5     "北京":"天安门"
 6 }
 7 
 8 
 9 #增加
10 city_center["江西"] = "南昌"
11 print (city_center)
12 
13 打印:
14 >>{'广东': '广州', '北京': '天安门', '湖南': '长沙', '江西': '南昌', '广西': '南宁'}
15 
16 #1、修改
17 city_center["北京"] = "故宫"
18 print(city_center)
19 打印:
20 >>{'广东': '广州', '北京': '故宫', '湖南': '长沙', '江西': '南昌', '广西': '南宁'}
21 
22 #2、删除:为分三种 标准删除、del删除、随机删除
23 city_center.pop("广西")
24 print (city_center)
25 打印:
26 >>{'广东': '广州', '北京': '故宫', '湖南': '长沙', '江西': '南昌'}
27 
28 del city_center["湖南"]
29 print (city_center)
30 打印:
31 >>{'广东': '广州', '北京': '故宫', '江西': '南昌'}
32 
33 city_center.popitem()
34 print(city_center)
35 打印:
36 >>{'北京': '故宫', '江西': '南昌'}
37 
38 #3、查找
39 print ("北京" in city_center) #判断是不是在字典里面,取的是Key
40 打印:
41 >>True
42 
43 print (city_center.get("广东"))  #如果一个key不存在,就报错,get不会,不存在只返回(None)
44 打印:
45 >>None
46 
47 
48 print (city_center["广东"]) #利用key取values的值
49 打印:
50 Traceback (most recent call last):
51   File "/Users/mac/PycharmProjects/untitled2/51CTO/2day/dict.py", line 36, in <module>
52     print (city_center["广东"]) #利用key取values的值
53 KeyError: '广东'

字典增删改查

python 指定数组中的指定字段排序_元组

python 指定数组中的指定字段排序_字符串_02

1 dict2 = {
 2     "chen":123,
 3     "chang":1203,
 4     "qing":1230
 5 }
 6 
 7 for key in dict2:
 8     print (key,dict2[key])
 9 
10 
11 for k,v in dict2.items():#数据量大时,慎用!!!
12     print (k,v)
13 
14 打印:
15 1、
16 chang 1203
17 chen 123
18 qing 1230
19 
20 2、
21 chang 1203
22 chen 123
23 qing 1230

for循环打印字典八、三级菜单的实例

 程序练习

程序: 三级菜单

要求: 

1、使用字典定义菜单列表(有三个级别)
2、输入下标输出打印对应的层级菜单
3、可返回上一级
4、可随时退出程序

九、购物车的优化

 要求:

1、额度 15000
2、可以提现,手续费5%
3、每月最后一天出账单(每月30天),写入文件
4、记录每月日常流水
5、提供还款接口

优化:
1、每月10号为还款日,过期未还,按欠款额 5%。计息