zoukankan      html  css  js  c++  java
  • Python编写购物小程序

    购物车要求:

           用户名和密码存放于文件中
           启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序
           允许用户根据商品编号购买商品
           用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
           可随时退出,退出时,打印已购买商品和余额
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import os
    '''
    用户名和密码存放于文件中
    启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序
    允许用户根据商品编号购买商品
    用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
    可随时退出,退出时,打印已购买商品和余额
    '''
    
    product_dic = { 1:['Iphone7',5800],
                    2:['Coffee',30],
                    3:['疙瘩汤',10],
                    4:['Python Book',99],
                    5:['Bike',199],
                    6:['ViVo X9',2499],
    }
    
    shop_list=[]
    shop_dic={}
    def shop():
        Tag=True
        remain_Balance = Balance
        print("开始购物".center(30,"="))
        for key,value in product_dic.items():
            print(key,value)
        while Tag:
            serial_number=input("输入你要购买商品的编号>>:").strip()
            if serial_number.isdigit():
                serial_number = int(serial_number)
                if serial_number > 6:
                    print("请输入1-6")
                    continue
            elif serial_number == "q":
                print("开始结算".center(20,"="))
                for list in shop_list:
                    product_name = list[0]
                    product_price = list[1]
                    shop_dic.setdefault(product_name, {})
                    shop_dic[product_name].setdefault("number", 0)
                    shop_dic[product_name].setdefault("total", 0)
                    shop_dic[product_name]["price"] = product_price
                    if product_name in shop_dic:
                        shop_dic[product_name]["number"] += 1
                    shop_dic[product_name]["total"] = shop_dic[product_name]["price"] * shop_dic[product_name]["number"]
                # 总价
                total = 0
                for product in shop_dic:
                    print(product.center(7),str(shop_dic[product]["number"]).center(7),str(shop_dic[product]["total"]).center(5))
                    total = total + shop_dic[product]["total"]
                print("您当前余额为{}".format(Balance).center(20))
                print("您购买总价格为{}".format(total).center(20))
                print("您的剩余价格为{}".format(Balance-total).center(20))
                    # with open('user.txt',"r",encoding="utf-8") as read_f,open('.user.txt.swap',"w",encoding="utf-8") as write_f:
                    #     for line in read_f:
                    #         line = line.replace(str(Balnce),str(Balance-total))
                    #         write_f.write(line)
                    # os.remove('user.txt')
                    # os.rename('.user.txt.swap', 'user.txt')
                with open('user.txt', "r", encoding="utf-8") as read_f, open('.user.txt.swap', "w",
                                                                             encoding="utf-8") as write_f:
                    for line in read_f:
                        line = line.replace(str(Balance), str(Balance - total))
                        write_f.write(line)
                os.remove('user.txt')
                os.rename('.user.txt.swap', 'user.txt')
                break
            elif serial_number == "exit":
                print("直接退出")
            else:
                continue
            print("你要购买的商品编号{},商品{},价格{}".format(serial_number,product_dic.get(serial_number)[0],product_dic.get(serial_number)[1]))
            yes_no=input("输入y/n,确定加入购物车>>:")
            if yes_no == "y" :
                if product_dic.get(serial_number)[1] > remain_Balance:
                    print("您的余额不够.无法加入到购物车,还差{}".format(product_dic.get(serial_number)[1]-remain_Balance))
                else:
                    shop_list.append(product_dic.get(serial_number))
                    remain_Balance = remain_Balance - product_dic.get(serial_number)[1]
                    print(shop_list,remain_Balance)
                continue
            elif yes_no == "n":
                print(shop_list)
                pass
                continue
            elif yes_no == "exit":
                break
            else:
                print("非法输入,请输入y或者n")
                continue
    
    user_info={}
    while True:
        print('''购物车小程序:
        1、购物
        2、注册账号
        3、充值
        输入q退出
        ''')
        option=input("your option>>:").strip()
        if not option.isdigit():
            print("input 1 or 2
    ")
            continue
        option=int(option)
        if option > 2:
            print("input 1 or 2
    ")
            continue
    
        if option == 1:
            Tag=True
            count=0
            while Tag:
                input_user = input("your name>>:").strip()
                with open("user.txt", encoding="utf-8", mode="r") as read_f:
                    for line in read_f:
                        line=line.strip("
    ")
                        User=line.split(",")[0]
                        Password=line.split(",")[1]
                        Balance=line.split(",")[2]
                        if input_user == User:
                            user_info.setdefault(User,{})
                            user_info[User].setdefault("count",0)
                            user_info[User]["Password"]=Password
                            user_info[User]["Balance"]=Balance
                            if user_info[User]["count"] >= 3:
                                print("%s用户锁定" %(input_user))
                                Tag=False
                            break
                    else:
                        print("{}用户不存在".format(input_user))
                        continue
                if Tag:
                    input_password = input("your password>>:").strip()
                    if input_password == user_info[input_user]["Password"]:
                        print("{}用户密码登陆正确".format(input_user))
                        print("用户:{},余额:{}".format(User, user_info[User]["Balance"]))
                        '''
                        这时候才开始购物
                        '''
                        Balance=int(Balance)
                        shop()
                        break
                    else:
                        user_info[input_user]["count"]+=1
                        print("{}用户密码登陆错误,还有{}尝试机会".format(input_user, 3 - user_info[input_user]["count"]))
        elif option == 2:
            Tag=True
            while Tag:
                with open('user.txt', "r", encoding="utf-8") as read_f, open('.user.txt.swap', "w",encoding="utf-8") as write_f:
                    register_user=input("你要注册的用户>>:").strip()
                    for line in read_f:
                        line=line.strip("
    ")
                        User = line.split(",")[0]
                        Balance = line.split(",")[2]
                        if register_user == User:
                            print("{}用户已经存在".format(register_user))
                            yn_pay=input("是否充值y/n>>:")
                            if yn_pay == "y":
                                pay_money=input("你要充值多少>>:").strip()
                                print(Balance,pay_money)
                                print(line)
                                line=line.replace(Balance,str(int(Balance)+int(pay_money)))
                                write_f.write(line)
                                # os.remove("user.txt")
                                # os.rename('.user.txt.swap', 'user.txt')
                            elif yn_pay == "n":
                                pass
    
                os.remove("user.txt")
                os.rename('.user.txt.swap', 'user.txt')
    

      

      

      

      

  • 相关阅读:
    jquery封装常用方法
    附加到iis进程调试时找不到w3wp.exe
    mongodb与sql语句对照表
    leetcode第一刷_Convert Sorted Array to Binary Search Tree
    swift 拼图小游戏
    散列技术之链地址法(基于无序链表)
    hdu 4850 字符串构造---欧拉回路构造序列 递归+非递归实现
    xtrabackup 2.3.3编译安装
    Android 绘制圆形图片
    赫夫曼树的构建、编码、译码解析
  • 原文地址:https://www.cnblogs.com/so-cool/p/8808983.html
Copyright © 2011-2022 走看看