day3(Alex python)

版权声明:本文为博主原创文章,转载请注明作者和出处。https://blog.csdn.net/xq920831/article/details/82017084

第三天学习一个购物车程序。

购物车程序要求:

1. 启动程序后,让用户输入工资,然后打印商品列表。

2. 允许用户根据商品编号进行购买。

3. 用户选择商品后,检查余额是否足够,够就直接扣款,不够给出提示。

4. 可随时退出,退出时打印已购买的商品和余额。

以下为自己编写的python程序

# -*- coding:utf-8 -*-
# Author: Agent Xu

goods =[['1','bear','5.88'],
        ['2','meat','12.88'],
        ['3','fish','8.88'],
        ['4','egg','3.88'],
        ['5','apple','4.88']]
tip = True
sumcost = 0
list_goods = []
price_goods = []

for i in range(len(goods)):
    price_goods.append(goods[i][2])
print(price_goods)

salary = float(input('input your salary:'))
if salary<float(min(price_goods)):
    print('sorry,your salary is too lower to shopping.')
else:
    while(tip):
        for i in goods:
            print(i)

        numbers = input('please input the number of goods:')
        if numbers == 'q':
            if list_goods == []:
                print('your have bought nothing.')
                tip = False
            else:
                print('已购买商品:{}'.format(list_goods))
                print('总花费:{}'.format(sumcost))
                print('余额:{}'.format(salary-sumcost))
        else:
            numbers=int(numbers)
            cost = float(goods[numbers-1][2])
            cost1 = cost
            list_goods.append(goods[numbers-1][1])
            sumcost = float(sumcost+cost)

            if sumcost<salary:
                print('thank you for shopping!')
                print('you have bought:')
                print(list_goods)
                continue
            else:
                print("sorry,you can't buy anymore.")
                #print(goods)
                list_goods.pop()
                print('已购买商品:{}'.format(list_goods))
                print('总花费:{}'.format(sumcost-cost1))
                print('余额:{}'.format(salary-sumcost+cost1))
                choose = input('Continue?(y/n):')
                if choose == 'y':
                    sumcost = sumcost-cost1
                    continue
                else:
                    tip = False

听了Alex的课程后,有几个部分可以优化的:

1. 产品列表可以不放入编号,在打印列表时直接打印,有两种方式:

    产品列表

goods =[['bear','5.88'],
        ['meat','12.88'],
        ['fish','8.88'],
        ['egg','3.88'],
        ['apple','4.88']]
  • for item in goods:
        print(goods.index(item),item)
  • for index,item in enumerate(goods):
        print(index,item)

2. 少了一个判断输入的数字是否超过商品数的模块。

3. 可以在每次购买后打印一个已购买什么商品,余额多少(高亮显示),用以提示。

4. 需要判断开始的输入是否为数字,用以提示。

所以下面放上Alix老师的课程代码。

__author__ = "Alex Li"


product_list = [
    ('Iphone',5800),
    ('Mac Pro',9800),
    ('Bike',800),
    ('Watch',10600),
    ('Coffee',31),
    ('Alex Python',120),
]
shopping_list = []
salary = input("Input your salary:")
if salary.isdigit():
    salary = int(salary)
    while True:
        for index,item in enumerate(product_list):
            #print(product_list.index(item),item)
            print(index,item)
        user_choice = input("选择要买嘛?>>>:")
        if user_choice.isdigit():
            user_choice = int(user_choice)
            if user_choice < len(product_list) and user_choice >=0:
                p_item = product_list[user_choice]
                if p_item[1] <= salary: #买的起
                    shopping_list.append(p_item)
                    salary -= p_item[1]
                    print("Added %s into shopping cart,your current balance is \033[31;1m%s\033[0m" %(p_item,salary) )
                else:
                    print("\033[41;1m你的余额只剩[%s]啦,还买个毛线\033[0m" % salary)
            else:
                print("product code [%s] is not exist!"% user_choice)
        elif user_choice == 'q':
            print("--------shopping list------")
            for p in shopping_list:
                print(p)
            print("Your current balance:",salary)
            exit()
        else:
            print("invalid option")

猜你喜欢

转载自blog.csdn.net/xq920831/article/details/82017084
今日推荐