作者:Carrie
出处:https://home.cnblogs.com/u/hanjiali
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任

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\老男孩\python\2019.8\001\venv\Scripts\python.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

 

posted on 2019-08-06 08:32  不吃葡萄楞吐皮  阅读(451)  评论(2编辑  收藏  举报