购物车的编写对于我这种不是很精通函数的小白来说,简直太难了。各种坑,各种无奈啊!不过总算也是写出来了!
不多说,直接上代码!
#!/usr/bin/env python#用户名 sanjiang#密码 sanjiang123import sysimport collections#定义一个计数器A = 0first = Truewhile first: login_user = input(‘请输入你的用户名: ‘).strip()#读取用户文件user.txt,用来判断输入的用户是否存在 f_user = open(‘user.txt‘,‘r+‘) user_list=f_user.read().split()#读取锁定文件local_file,用来判断输入的用户是否锁定 lock = open(‘local_file‘,‘a+‘) lock_file = lock.read().split()#判断用户是否锁定 if login_user in lock_file: print(‘------------------------------------------------\n‘ ‘对不起,你输入的账号已被锁定,请用其他账号登录\n‘) continue#判断用户是否存在 elif login_user not in user_list: print(‘------------------------------------------------\n‘ ‘对不起,你输入的用户不存在,请重新输入。\n‘) continue while True: login_pwd = input(‘请输入你的密码: ‘).strip()#判断密码是否正确 if login_pwd == user_list[ user_list.index(login_user) + 1]: print(‘------------------------------------------------\n‘ ‘亲爱的%s,\n‘%login_user) first = False break else: A +=1 a = 3 - A if A ==3: print(‘------------------------------------------------\n‘ ‘对不起,你输入的次数已经超过三次,账号已被锁定\n‘)#往锁定文件中添加输入的用户 lock.write(‘%s\n‘%login_user)#关闭两个文件 lock.close() f_user.close() first = True #定义一个变量用来跳出二层循环 break print(‘------------------------------------------------\n ‘ ‘对不起,你输入的密码错误,请重新输入。您还有%s次机会\n‘%a)#如果跳出第一层循环定义了跳出二层循环变量,那么就跳出第二层循环print(‘‘‘ __________________________________________________ | | | 欢迎登陆三江水果购物商城 | |_________________________________________________| ‘‘‘) # 定义一个本地字典dic = {}#!定义一个跳出循环的变量flag1 = Truewhile flag1:#!请求输入一个购物预算 num1 = input(‘请输入您的购物预算: ‘)#!判断输入的是否为空或者是否为字符串 if len(num1)==0 or num1 ==‘0‘ or num1.isdigit() is False: print(‘\033[36;1m对不起,你输入的有误,请重新输入\033[0m‘) continue else: pass#!定义一个跳出循环的变量 flag2 = True while flag2:#!交互式询问要做什么选项 num = input(‘‘‘三江,你想要做什么呢? 你的预算为%s元 1:购买水果 2:购物车 3:修改购物预算 4:老板个人简历 5.退出程序 :‘‘‘%num1)#!定义退出程序 if num ==‘5‘: sys.exit()#!显示老板简历信息 if num == ‘4‘: print(‘‘‘ notice: 吴三江是一个非常的帅的一个小伙子,很有潜力的孩子,虽然现在有点穷,但是请莫欺少年穷。 ‘‘‘)#!返回上一个循环 if num ==‘3‘: flag2 = False#!进入购买水果的界面 if num == ‘1‘:#!定义一个字典并把字典转换成列表 local_dic= {‘芒果‘:‘7‘,‘桃李‘:‘8‘,‘龙眼‘:‘9‘,‘苹果‘:‘9‘,‘香蕉‘:‘5‘,‘葡萄‘:‘8‘,‘蓝莓‘:‘7‘,‘凤梨‘:‘7‘,‘柚子‘:‘3‘,‘橘子‘:‘6‘, } list1 =list(local_dic) list2 = list(local_dic.values()) print(‘编号\t\t‘,‘种类\t\t‘,‘单价\t\t‘) flag3 = True while flag3:#!展示水果的商品列表 for i in range(len(list1)): print( ‘num.%s \t\t %s \t\t %s元/斤‘ %(i,list1[i],list2[i])) num2 = input(‘\033[36;1m请输入你要购买的商品序号(返回上一层请按q): ‘)#!定义退出这个循环 if num2 ==‘q‘: break#!判断是否输入的是字符串 if num2.isdigit() is False: print(‘\033[36;1m你输入的有误,请重新输入:\033[0m ‘) continue if len(num2)!=0 and int(num2)<len(list1):#!交互式显示购买水果的过程 num3 = input(‘您要购买的商品是%s,单价为%s元/斤,确定要购买么(y/n?): ‘%(list1[int(num2)],list2[int(num2)])) if num3 ==‘n‘: continue elif num3 ==‘y‘: num4 = input(‘\033[36;1m请输入你要购买的商品数量:\033[0m‘) if num4.isdigit()is False: print(‘\033[36;1m对不起,你输入的有误,请重新输入。\033[0m‘) continue num5 = input(‘您要购买的商品是%s,单价为%s元/斤,数量为%s,总价为%s,确定加入购物车么(y/n?):‘%(list1[int(num2)],list2[int(num2)],int(num4),int(num4)*int(list2[int(num2)]))) if num5 ==‘y‘: dic_list = list(dic) dic_list2 = list(dic.values())#!如果购买的商品不在购物车中,那么购买数量就是指定的数量 if list1[int(num2)] not in dic_list: dic[list1[int(num2)]]=int(num4) break#!如果购买的商品在购物车中,那么购买的数量就是之前的商品数量加上这次的商品数量 else: dic[list1[int(num2)]]=int(num4)+dic_list2[int(dic_list.index(list1[int(num2)]))] elif num5==‘n‘: continue else: print(‘\033[36;1m你输入的有误,请重新输入: \033[0m‘) continue else: print(‘\033[36;1m你输入的有误,请重新输入: \033[0m‘) continue else: print(‘\033[36;1m你输入的有误,请重新输入: \033[0m‘) #!进入购物车 if num == ‘2‘: print(‘‘‘购物车 编号 商品 单价 数量 总价\t‘‘‘)#!再次重复定义一个字典,和列表,用来调用 local_dic= {‘芒果‘:‘7‘,‘桃李‘:‘8‘,‘龙眼‘:‘9‘,‘苹果‘:‘9‘,‘香蕉‘:‘5‘,‘葡萄‘:‘8‘,‘蓝莓‘:‘7‘,‘凤梨‘:‘7‘,‘柚子‘:‘3‘,‘橘子‘:‘6‘, } dic_list1 = list(dic) dic_list2 = list(dic.values())#!显示出购物车里面的商品列表 for i in range(len(dic_list1)): print(‘‘‘ %s %s %s %s %s\t‘‘‘%(i,dic_list1[i],local_dic[dic_list1[i]],dic_list2[i],int(dic_list2[i])*int(local_dic[dic_list1[i]])))#!求所有商品的总金额 a = 0 for i in range(len(dic_list1)): a = a + int(dic_list2[i])*int(local_dic[dic_list1[i]]) b = a flag4 = True while flag4: num6 = input(‘结算:t | 退出:q | 删除订单 :d | 修改订单 :z\n请输入你的操作指令:‘) if num6 ==‘q‘: flag4 =False elif num6 ==‘t‘: num7= input(‘你购买水果的总金额为%s,确定要结算么?(y/n)‘%b,) if num7 ==‘y‘:#!如果预算小于结算的总金额,那么提示重新购买 if int(num1)<int(b): print(‘对不起,超出了你的预算,请重新购买。‘) flag4 = False#!如果预算大于结算的总金额,那么会提示距离预算还有多少钱可以用 elif int(num1)>int(b): c = int(num1)-int(b)#!结算完可以继续购物,也可以选择离开 num8 = input(‘距离你的预算还有%s元,你还可以去买些水果哦,要离开还是继续购物?q:离开,购物:g‘%c) if num8 ==‘q‘: flag4=False elif num8 ==‘g‘: continue else: print(‘对不起。你输入的有误‘) elif num6 ==‘d‘: print(‘学艺不精,暂时不支持此功能,‘) elif num6 ==‘z‘: print(‘学艺不精,暂时不支持此功能,‘) else: print(‘对不起。你输入的有误‘) continue效果展示。
时间: 2024-10-10 14:02:40