网课传送门:第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)