zoukankan      html  css  js  c++  java
  • python-第05章-元组与购物车的程序练习

    1.元组

    特点:不能够增删改,只能查,也叫做只读列表

    两种用法:count和index

    names = ["han","wang","liu","hanjiali","han" ]
    print(names.index("wang"))
    

     输出结果:

    1
    

    什么情况用元组?
    信息不想被改,就用元组。

    2.购物车程序

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

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

               3.用户选择商品后,检测余额是否够,够就直接扣除,不够提醒

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

    class Shopping():
        def __init__(self):
            self.list1 = []
            self.a = input("请输入您的工资:")
            self.start()
    
        def start(self):
    
            self.list = ["1.苹果手机:8000元", "2.华为手机:10900元", "3.男士T袖:500元", "4.男士短裤:300元"]
            print(self.list)
            self.shop()
    
        def shop(self):
    
            self.b = input("请输入您想要购买的商品编号(1,2,3,4):")
            self.list2 =['1','2','3','4']
            if self.b in self.list2:
                self.list1.append(self.b)
                self.c = int(input("是否还要选择商品(1.是 or 2.不用了):"))
                if self.c == 1:
                    self.shop()
    
                else:
                    self.chack()
    
            else:
                print("您的输入有误,请重新输入:")
                self.shop()
    
        def chack(self):
          print("您要购买的商品有%s"%self.list1)
          self.d = int(input("请确定是否正确?(1.正确 or 2.不正确)"))
          if self.d == 2:
             self.shop()
          else:
            self.money()
        def money(self):
            num=0
    
    
            for i in self.list1:
    
                if i == '1':
                   num +=8000
                   print("苹果手机")
                if i == '2':
                   num += 10900
                   print("华为手机")
                if i == '3':
                   num += 500
                   print("男士T袖")
                if i == '4':
                   num += 300
                   print("男士短裤")
            print("您购买的东西总共有%d元" % num)
            if int(self.a) < num:
                print("对不起,您的余额不足。")
            else:
                 self.m = self.a - num
                 print("购买成功,您的余额为:%d"%self.m)
    
    if __name__ == '__main__':
        shopping = Shopping()
    

     运行结果:

    C:Users韩佳丽Desktop老男孩python2019.801venvScriptspython.exe C:/Users/韩佳丽/Desktop/老男孩/python/2019.8/001/01.py
    请输入您的工资:8000
    ['1.苹果手机:8000元', '2.华为手机:10900元', '3.男士T袖:500元', '4.男士短裤:300元']
    请输入您想要购买的商品编号(1,2,3,4):1
    是否还要选择商品(1.是 or 2.不用了):1
    请输入您想要购买的商品编号(1,2,3,4):3
    是否还要选择商品(1.是 or 2.不用了):2
    您要购买的商品有['1', '3']
    请确定是否正确?(1.正确 or 2.不正确)1
    苹果手机
    男士T袖
    您购买的东西总共有8500元
    对不起,您的余额不足。
    请输入您的工资:
    
    请输入您的工资:10000
    ['1.苹果手机:8000元', '2.华为手机:10900元', '3.男士T袖:500元', '4.男士短裤:300元']
    请输入您想要购买的商品编号(1,2,3,4):1
    是否还要选择商品(1.是 or 2.不用了):1
    请输入您想要购买的商品编号(1,2,3,4):2
    是否还要选择商品(1.是 or 2.不用了):2
    您要购买的商品有['1', '2']
    请确定是否正确?(1.正确 or 2.不正确)1
    苹果手机
    华为手机
    您购买的东西总共有18900元
    对不起,您的余额不足。
    请输入您的工资:
    

     优化版本

    product_list = [
        ('苹果手机',9000),
        ('华为手机', 1000),
        ('Bike', 600),
        ('watch', 3000),
        ('python book', 120)
    
    ]
    shopping_list = [] #储存用户购买物品的一个列表
    #输入你的工资,input输入的是字符串的形式,看起来输入的是数字,其实是字符串
    salary = input('Input your salary:')
    #检测字符串是不是由纯数字构成,如果是,将字符串改为int型
    if salary.isdigit():
        salary = int(salary)
    #做循环,但是while true是死循环,需要跳出
        while True:
            for index,item in enumerate(product_list):
            #for item in product_list:
              #  print(product_list.index(item),item)
    #enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for 循环当中
                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("添加%s进入您放入购物车,您的余额为%s:" %(p_item,salary))
                    else:
                        print("你的余额只剩[%s]啦,请充值。"%salary)
                else:
                    print("你选的[%s]不存在"%user_choice)
            elif user_choice =='q':
                print("-----------------shopping list----------------------")
                for p in shopping_list:
                    print(p)
                print("你花的钱:",salary)
                exit()
    
            else:
                    print("invalid option")
            break
    
  • 相关阅读:
    python的不可变对象与可变对象及其妙用与坑
    WAAPI+Python使用中的相关问题和学习记录
    开发工具使用
    面试要点5
    面试要点4
    HTTP状态码——详解
    ElasticSearch使用curl导数据报400可能原因
    elasticsearch的安装、部署
    js二级联动
    aspose.words for java操作文档doc,设置一级二级三级标题以及段落表格等详情
  • 原文地址:https://www.cnblogs.com/hanjiali/p/11304109.html
Copyright © 2011-2022 走看看