python学习笔记(列表、元组、购物车实例)

一、列表

列表和字典是最常用的两种数据类型

1. 需求:怎么存放班级80多人的姓名,如何实现?

names = ["Zhangyang","Guyun","Xiangpeng","Xuliangchen"]
print(names[0],names[2]) #取出 Zhangyang Xiangpeng
print(names[2:4]) #切片,取出"Xiangpeng","Xuliangchen"并输出
print(names[0:4]) #切片,取出"Zhangyang","Guyun","Xiangpeng","Xuliangchen"]
print(names[-1]) #切片,负数指从后往前
print(names[-2:]) #取最后2个值

注意:前后的0可以省略

2. 举例说明列表的各种操作

names = "ZhangYang Guyun Xiangpeng XuLiangChen" #以此列表为例

增加:

names.append("Leihaidong") #在列表最后增加

插入:

names.insert(1,"Chenronghua") #位置1,插入数据
names.insert(3,"Xinzhiyu") #位置3,插入数据

修改:

names[2] = "Xiedi" #下标位置2,替换成"Xiedi"

删除:(三种方式)

names.remove("Chenronghua") #删除列表中指定数据
del names[1] #删除下标位置1的数据
names.pop() #不加下标,删除最后一个数据;加下标,和del效果相同

拷贝:

(1)

names = ["Zhangyang","Guyun","Xiangpeng","Xuliangchen"]
names2 = names.copy()
names[2] = "向鹏"
print(names)
print(names2)

(2)

a.

names = ["Zhangyang","Guyun","Xiangpeng",["alex","jack"],"Xuliangchen"]
names2 = names.copy() #浅copy,只拷贝第一层
names[2] = "向鹏"
names[3][0] = "ALEX"
print(names)
print(names2)

查看输出结果,names2中,Xiangpeng没有改,子列表中的数据都被修改。因为子列表中的数据只是一个内存地址,copy的时候只copy内存地址

b.浅copy,浅copy的用途:创建联合账号

import copy
names = ["Zhangyang","Guyun","Xiangpeng",["alex","jack"],"Xuliangchen"]
names2 = copy.copy(names)
print(names)
print(names2)
names[2] = "向鹏"
names[3][0] = "ALEX"
print(names)
print(names2)

(3)深copy

import copy
names = ["Zhangyang","Guyun","Xiangpeng",["alex","jack"],"Xuliangchen"]
names2 = copy.deepcopy(names)
print(names)
print(names2)
names[2] = "向鹏"
names[3][0] = "ALEX"
print(names)
print(names2)

此时,names和names2将会成为独立的两份数据

列表循环:

for i in names:
    print(i)

列表切片:

print(names[0:-1:2])
print(name[::2])

上面两条命令效果相同,间隔输出列表中数据。列表操作中的0和-1可以省略。

二、元组

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

语法:

names = (‘alex‘,‘jack‘)

元组只有2个方法,一个是count,一个是index

三、程序练习

程序:购物车程序

需求:

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

代码如下:

shopping_list = [] #已购买的商品列表,预先定义空列表
salary = input("please input your saraly:") # 启动程序后,让用户输入工资
product_list = [
    (‘iphone‘,5800),
    (‘bike‘,800),
    (‘coffee‘,31),
    (‘Macbook Pro‘,12000),
    (‘alex python‘,81),
    (‘a‘,120)
]

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 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()
        else:
            print("invalid option")
时间: 2024-10-25 10:01:37

python学习笔记(列表、元组、购物车实例)的相关文章

python学习笔记—列表相关

python中的列表等同于其他编程语言中的数组 基本操作有: 1.插入,追加,修改,删除 name = ["Type99","M1A2","T-72","Leclerc"] print (name[2]) print (name[0:2]) print (name[1:-1]) print (name) name.insert(2,"Type96") #插入元素 print (name) name.appe

python学习笔记——列表生成式与生成器

1.列表生成式(List Comprehensions) python中,列表生成式是用来创建列表的,相较于用循环实现更为简洁.举个例子,生成[1*1, 2*2, ... , 10*10],循环用三行: 1 L = [] 2 for i in range(1,11): 3 L.append(i*i) 列表生成式只用一行,前面是生成规则,后面是初始元素,最后还可以加上判断条件: 1 [i*i for i in range(1, 11)] 列表生成式还可以实现多层循环,以及判断,刚刚的栗子再写复杂一

Python学习笔记2:购物车(for,while循环;列表)

1 import sys 2 flag = True 3 list = [('mac',13500),('thinkpad',6700),('Iphone x',8800),('car',150000),('book',32),('bike',1000),('MP3',260)] 4 buy_file = open('C:/安装包/pycharm/day01/list.txt', 'w+') 5 while flag is True: 6 money = input('Please you de

python学习笔记列表和元组(三)

列表(list) 是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表.列表是可变的(mutable)--可以改变列表的内容. 对应操作: 1.查([]切片操作) name = ['tom','张三','joker','李四'] print(name[2]) print(name[0:3]) print(name[0:7]) print(name[-1]) print(name[2:3]) print(name[0:3:1]) print(name[

python学习笔记3(元组、字典)

Python中有三种内置的数据类型.dictionary(字典).List(列表)和tuple(元组). 元组(tuple) 只读列表(列表的值可以修改,元组的不可以) 元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 如下实例: tup1 = ('physics', 'chemistry', 1997, 2000) tup2 = (1, 2, 3, 4, 5 ) tup3 = "a", &

【 python 学习笔记 -- OOP】在实例中学习继承(inheritance)和组合(composition)

[面向对象的三大特征]: [封装(encapsulation)]: 通过抽象的类把数据和方法封装起来.实例的数据只能通过public interface(即实例的方法)来获取或操作. [优点]:1. 功能只需在一个地方定义,而不需要在很多地方重复定义 2. 保证对象内部的数据的安全性 3. 当我们想要使用一个方法的时候,我们只需要知道我们用这个方法会返回什么结果,而不需要知道内部到底做了哪些操作来实现的.  就好像我们看电视时想要换频道,只需要按几个按钮,不需要知道要怎么调频. [继承  (in

Python学习笔记#列表操作常用的函数

列表操作常用的两类函数: 1. 添加元素: append extend insert append主要是在列表的尾部添加一个元素: a = [1,2,3,4,5] a.append(6) 将得到: a = [1, 2, 3, 4, 5, 6] extend主要是在列表的尾部添加一些元素,这些元素只能用列表的形式添加: 错误实例: >>> a.extend(6,7) Traceback (most recent call last): File "<pyshell#3>

python学习笔记——列表操作

python列表操作--增 append:追加一条数据到列表的最后 name = ["Zhangsan","XiongDa","Lisi"] name.append("wangwu") print name 输出结果: ['Zhangsan', 'XiongDa', 'Lisi', 'wangwu'] insert:指定位置插入一条数据 name = ["Zhangsan","XiongDa&qu

Python学习笔记 - 列表

# ----------------------------------------------------- # 创建列表 : [], 用方括号标识列表, 用逗号来分割元素 motorcycles = ['honada','yamaha','suzuki'] print(motorcycles) #['honada', 'yamaha', 'suzuki'] # ----------------------------------------------------- # 修改列表 : 列表[

python学习笔记——贰之购物车小程序_客户端

客户端大概流程 :买家系统 首先输入买家他的余额,之后会进行,通过文件里的来余额判断他是否上次消费过.如果有信息,就按照文件里的余额计算,替换掉买家输入的余额,如果没有信息证明客户是第一次来,就用买家输入的余额. 然后循环输出商品下标,和商品信息.客户通过下标来选择商品.选择的商品会被加入到 购物车列表 中,然后通过下标[1]得到商品的金额.计算出消费金额,这个消费金额 如果大于余额 那么 从购物车列表里删除这个商品 告知 余额不足,并提示买多少钱以内的商品.每加进一个商品,都会计算购物车的总金