栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python自学笔记9:实操案例六(千年虫,购物流程)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python自学笔记9:实操案例六(千年虫,购物流程)

Python自学笔记9:实操案例六(千年虫,购物流程)

网课传送门:第155,156讲,https://www.bilibili.com/video/BV1Sw411Z779?p=155
1.千年虫

人话:2000年以前,不写年份前两位没事,比如说1991,写个91啥事没有
2000年这种,不写20,就会变成00,计算机整形一处理,0了
所以现在身份证号都从15位变成了18位,包含完整的出生年月日

year=[82,89,88,86,85,00,99]
print('原列表:',year)
for index,value in enumerate(year):
    if str(value)!='0':
        year[index]=int('19'+str(value))#不是2000年这种年份的加上19的前缀补全
    else:
        year[index]=int('200'+str(value))#2000年这种年份用200补全
#value转换为str之后,字符串拼接,再转换为int
print('修改之后的列表为:',year)
#列表排序
year.sort()
print('排序之后的列表为:',year)

老师这个enumerate用的很巧,这样每个年份又能改变值value加上前缀,还能用index来放入循环遍历
https://blog.csdn.net/qq_32252917/article/details/78174835


还可以统计文件行数,具体可以看看这位码友的博文最后一部分,因为我这暂时用不到,就不细致研究了

2.购物流程

注意这个倒序输出要指定步长,不然会没有输出
老师的单独实验,指定步长为-1:

不指定步长:

lst=[]#商品清单
for i in range(0,5):
    goods=input('请输入商品编号和商品名称进入商品的入库,每次只能输入一件商品:n')
    lst.append(goods)
for item in lst:
    print(item)

cart=[]#购物车
while True:
    num=input('请输入要购买的商品编号:')
    for item in lst:
        if item.find(num)!=-1:#没找到会返回-1
            cart.append(item)#找到了就加入购物车
            break;#添加完毕,退出break循环
    if num=='q':#退出while循环
        break

print('您购物车里已经选好的商品为(正序输出):')
for m in cart:
    print(m)

#优化:最新选择的商品在最上面显示,所以要倒着遍历
print('您购物车里已经选好的商品为(倒序输出):')
for i in range(len(cart)-1,-1,-1): #因为到不了-1,所以最后要写-1
    #需要告知每次步长是多少,不然无法输出
    print(cart[i])

代码可以的升级方向:
每次入库输入很麻烦,可以封装成一个函数,然后利用文件读写存储,再从磁盘文件种加载进来购买,类似于模拟数据库的一个过程。
我这给出一份自己改的参考代码,应该是实现了商品清单写入文件和读取,本人也是初学菜狗一枚,如果代码有谬误还请多多指教:


创建的读写文件在这:

创建的读写文件在这:

在文件目录里打开如下:

在Pycharm里面打开会发现好像有一些小问题,别着急,后面我们解决

另外,file.write(goods+‘n’)的n不能去掉,否则会发生下面的事情:

def CreateShoppingListToFile():
    with open('ShoppingList.txt', 'w') as file:
        lst = []#商品清单
        for i in range(0, 5):
            goods = input('请输入商品编号和商品名称进入商品的入库,每次只能输入一件商品:n')
            lst.append(goods)
            file.write(goods + "n")
        for item in lst:
            print(item)

shoppingList=[]
def ReadShoppingListFromFile():
    with open('ShoppingList.txt', 'r') as file:
        for item in file:
            shoppingList.append(item)

def PrintFileShoppingList():
    print('现有商品列表为:')
    for item in shoppingList:
        print(item)

cart=[]#购物车
def AddShoppingList():
    while True:
        num=input('请输入要购买的商品编号:')
        for item in shoppingList:
            if item.find(num)!=-1:#没找到会返回-1
                cart.append(item)#找到了就加入购物车
                break;#添加完毕,退出break循环
        if num=='q':#退出while循环
            break

def PrintShoppingList():
    print('您购物车里已经选好的商品为(正序输出):')
    for m in cart:
         print(m)

def PrintShoppingListInOrder():
    #优化:最新选择的商品在最上面显示,所以要倒着遍历
    print('您购物车里已经选好的商品为(倒序输出):')
    for i in range(len(cart)-1,-1,-1): #因为到不了-1,所以最后要写-1
        #需要告知每次步长是多少,不然无法输出
        print(cart[i])

#按逻辑顺序先后调用:
CreateShoppingListToFile()#输入商品信息,创建文件并且写入
ReadShoppingListFromFile()#把文件里面的商品信息读进来
PrintFileShoppingList()#打印读入的商品清单看是否正确
AddShoppingList()#添加需要的商品到购物清单
PrintShoppingList()#正序打印购物清单
PrintShoppingListInOrder()#倒序打印购物清单

至于那个shoppingList在Pycharm里面打开报红色标乱码:python打开文件时提示“File was loaded in the wrong encoding:’UTF-8”
https://www.cnblogs.com/alphabetical/p/14117391.html

(下面的结果是去掉n之后的bug结果,不用管他,看上面就行,已经不报错了)

操作步骤:


如果一不小心把这个删了,没关系,点一下这个reset就回来了(鼠标滑过才会出现reset)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/931513.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号