设为首页 收藏本站
查看: 3030|回复: 0

[经验分享] python购物车-优化版本

[复制链接]
累计签到:2 天
连续签到:2 天
发表于 2018-8-14 10:02:20 | 显示全部楼层 |阅读模式
#!/bin/bash/env python  
#python3.x
  
'''
  
要求一:
  
    1.启动程序后,然该用户输入工资,然后打印商品列表
  
    2.允许用户根据商品编号购买商品
  
    3.用户选择商品后,检测余额是否足够,够就直接扣款,不够就提醒
  
    4.可随时退出,退出时,打印已购买商品和余额
  
要求二:
  
    用户输入:
  
    1.商品信息存在文件里
  
    2.已购商品,余额记录。
  
'''
  
#获取当前时间
  
import time
  
date = time.strftime("%Y-%m-%d %H:%M:%S")
  

  
#读取商品列表
  
f =open("shangpin.txt","r")
  
wenzi = f.readlines()
  
f.close()
  

  
#读取用户列表
  
f = open("yh.txt","r")
  
ff = f.readlines()
  
f.close()
  

  
zhanghu_list = []             #列表用于临时存储 账户的名字;
  
zhanghu = {}                  #用于临时存储用户和余额 信息;
  
shopping_list = []
  

  
#循环用户名和余额并赋值给已定义好的 字典zhanghu ;
  
for i in ff:
  
    k,v = i.strip().split(" ")      #分别把账户和余额 去换行和空格后 赋值给 k v ;
  
    zhanghu[k] = v                  #把key 和value 添加的字典zhanghu 里边 ;
  

  
shopping = {}                              #定义商品字典
  

  
#通过循环将读取的商品序号、名称、价格 添加到商品字典dict1里边
  
for i1 in wenzi:
  
    ff1 = i1.strip("\n")
  
    list1 = list(ff1.split(" "))
  
    list2 = []                              #open读取商品后的列表
  
    for i2 in list1:
  
        list2.append(list1[1])
  
        list2.append(list1[2])
  
        shopping[list1[0]] = list2
  
        break
  

  
yonghu = input("请输入您的用户名:")
  
#循环字典:zhanghu 里边的key ,也就是用户列表,将值赋值到 已定义好的用户列表里 zhanghu_list ;
  
for aa in zhanghu.keys():
  
    zhanghu_list.append(aa)
  
#判断输入的yonghu 是否在 已经存在的账户列表里;
  
if yonghu in zhanghu_list:          #如果在输入的账户在 已经存在的列表里,打印您的余额是多少 ;
  
    print("您的余额是{0}$:".format(zhanghu[yonghu]))
  
    print("商品列表".center(30, "="))
  
    for i2 in shopping:
  
        print(i2, shopping[i2][0], shopping[i2][1])
  
else:
  
    zhanghu[yonghu] = 0
  
    print("添加新用户!\n您的余额是0$ !")
  
    print("商品列表".center(30, "="))
  
    for i2 in shopping:
  
        print(i2, shopping[i2][0], shopping[i2][1])
  
while True:
  
    chongzhi = input("您要充值吗? y/n :")
  
    if chongzhi == "y":
  
        while True:
  
            gongzi = input("请输入您的工资:")
  
            if gongzi.isdigit():
  
                gongzi = int(gongzi) + int(zhanghu[yonghu])
  
                print("您的余额是{0}$:".format(gongzi))
  
                break
  
            elif gongzi == "q":
  
                exit()
  
            else:
  
                print("输入错误,请重新输入")
  
        break
  
    elif chongzhi == "n":
  
        gongzi = int(zhanghu[yonghu])
  
        break
  
    else:
  
        print("输入错误,请重新输入!")
  

  
while True:
  
    print("商品列表".center(30, "="))
  
    for i2 in shopping:
  
        print(i2, shopping[i2][0], shopping[i2][1])
  
    choice = input("请输入购买商品的编号:【按q退出】")
  
    if choice.isdigit():
  
        choice_1 = int(choice)
  
        # 如果用户余额大于选择的商品的价格
  
        if gongzi >= int(shopping[choice][1]):
  
            shopping_wupin = [choice, shopping[choice][0], shopping[choice][1], date]
  
            shopping_list.append(shopping_wupin)
  
            gongzi = gongzi - int(shopping[choice][1])
  
            print("您的余额是:{0}$".format(gongzi))
  
        else:
  
            print("您的余额不足!")
  
    elif choice == "q":
  
        print("您已购买以下商品".center(30, "="))
  
        #打开用户已购买文件,讲已购买的商品列表写进去。
  
        shangpin = open("yh-list.txt", "a")
  
        for i3 in shopping_list:
  
            print(i3[0], i3[1], i3[2], i3[3])
  
            shangpin.write("\n")
  
            shangpin.write(yonghu)
  
            shangpin.write(" ")
  
            shangpin.write(i3[0])
  
            shangpin.write(" ")
  
            shangpin.write(i3[1])
  
            shangpin.write(" ")
  
            shangpin.write(i3[2])
  
            shangpin.write(" ")
  
            shangpin.write(i3[3])
  
        shangpin.close()
  
        #打开用户文件,将用户和用户对应的余额写进去。
  
        zhanghu[yonghu] = gongzi
  
        save = open("yh.txt","w")
  
        for zhanghu_save in zhanghu:
  
            save.write(zhanghu_save)
  
            save.write(" ")
  
            save.write(str(zhanghu[zhanghu_save]))
  
            save.write("\n")
  
        save.close()
  
        print("".center(38, "-"))
  
        print("您的余额是:{yue}$".format(yue=gongzi))
  
        exit()
  
    else:
  
        print("输入错误,请重新输入")

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-551499-1-1.html 上篇帖子: Python学习第三天 下篇帖子: Python 格式化字符%r与%s的区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表