python列表、循环、判断小练习——购物车小程序

程序要求:

1.商品信息保存在文件中。

2.打印商品信息,包括名称及编号,价格

3.输入工资

4.选择商品编号将商品放入购物车,并计算剩余工资。

5.工资不够时提醒余额不足

6.将已购商品,余额记录长久保存

7.打印已购商品名单

8.可以添加商品及价格

 

流程图

扫描二维码关注公众号,回复: 3846036 查看本文章

 

所用开发软件:pycharm

开发环境:win10

所用文件:

  • 购物记录文件,名为shopping_date.txt

         内容默认为空

  • 商品信息文件,名为product_date.txt

内容为:apple:10000

              huawei:10000

具体实现代码

# Author: Mina


product_list = []  # 构建空列表以存放商品信息
shopping_list = []  # 构建空列表以存放已购商品信息

while True:
    choice = input('查看购物记录请按W\n添加商品信息请按A\n购物请按S')
    if choice == 'w' or choice == 'W':
        with open('shopping_date', 'r')as f_shop:  # 以只读模式打开购物信息文件
            shop_list = f_shop.readlines()  # 读取购物信息并转为列表
        for shop_line in shop_list:  # 利用循环打印购物记录
            shop_line = shop_line.strip()
            print(shop_line)
        else:
            pass
    elif choice == 'A' or choice == 'a':
        new_product = input('添加的商品名称:')
        new_price = input('商品价格:')
        with open('product_date', 'a') as f_prod:  # 以只写模式打开商品信息文件
            f_prod.writelines([new_product, ':', new_price, '\n'])  # 将商品信息以列表的形式写入商品文件
            #  商品名与价格用分号隔开,以便于之后的读取

    elif choice == 's' or choice == 'S':
        break  # 跳出本循环,执行下个模块的命令
    else:
        print('无效指令,请重新输入')
    flag = input('退出请按q,继续请按g')
    if flag == 'Q' or flag == 'q':
        exit('退出程序')
    elif flag == 'g' or flag == 'G':
        continue
    else:
        print('无效命令,请重新输入')
else:
    exit()


salary = input('请输入你的工资:')
if salary.isdigit():  # 判断输入工资是否为整数,返回值不为0
    salary = int(salary)  # 实际输入为字符串,强制转换为整数,便于之后的计算
else:
    print('输入有误,请重新输入工资')

while True:
    with open('product_date', 'r') as f_prod:  # 以只读模式打开商品信息文件
        prod_list = f_prod.readlines()  # 读取商品信息
        i = len(prod_list)  # 计算列表长度,用于后面判断是否有该商品
    for prod_line in prod_list:
        (prod, price) = prod_line.strip().split(':')  # 分别提取商品名与价格,以分号为分割
        print(prod_list.index(prod_line), '\t', prod, '\t', price)  # 将列表下标作为商品编号,打印商品信息
        price = int(price)  # 将价格转为整数类型,便于计算
        product_list.append([prod, price])  # 将商品信息以列表的形式追加到商品信息列表便于查找
    else:
        pass
    user_choice = input('请输入商品编号:\n(如果需要退出请按Q)')
    if user_choice.isdigit():
        user_choice = int(user_choice) 
        if 0 <= user_choice < i:  # 判断有无该商品
            prod_item = product_list[user_choice]  # 提取商品信息
            if prod_item[1] <= salary:  # 判断工资余额是否充足
                salary = salary-prod_item[1]  # 计算购买商品后的余额
                shopping_list.append(prod_item)  # 将已购商品信息列表追加到购物记录列表
                print("将%s加入购物车,剩余工资为%s" % (prod_item, salary))
            else:
                print('\033[31;1m\033[0m 你的余额不足,为%s\033[0m' % salary)
        else:
            print('\033[32;1m\033[0m 没有这件商品\033[0m')
    elif user_choice == 'q' or user_choice == 'Q':  # 退出购买程序
        print('shopping list'.center(30, '-'))  # 打印购物记录
        for p in shopping_list:  # 利用循环打印已购商品信息
            print(p)
            with open('shopping_date', 'a')as f_shop:  # 以追加模式打开购物记录文件
                f_shop.writelines(str(p) + '\n')  # 将已购商品信息以列表形式写人购物记录文件
                f_shop.write(str(salary) + '\n')  # 将余额写入购物记录文件
        else:
            pass
        exit('你的余额为%d' % salary)  # 退出程序,并打印余额
    else:
        print('错误操作')

 

猜你喜欢

转载自www.cnblogs.com/minax/p/9873816.html
今日推荐