美文网首页
python 列表 循环 实现简易的电子商城

python 列表 循环 实现简易的电子商城

作者: maxlike | 来源:发表于2018-07-14 16:25 被阅读0次

    电子商城功能

    • 用户登录注册
    • 页面之间的跳转
    • 用户购买商品的输入判断
    • 数据的修改已更新
    • 休闲小游戏的整合

    用户登录注册

    列表的初始化与赋值

    users=[['admin','admin'],['tom','123456']]
    g1=[1000,'可口可乐(罐装)',2.5,100]
    g2=[1001,'可口可乐(瓶装)',3.0,100]
    g3=[1002,'可口可乐(小瓶装)',2.5,100]
    g4=[1003,'可口可乐(大瓶装)',6.0,100]
    goods=[g1,g2,g3,g4]
    score=10
    

    用户登录

    根据python逐行解释的特性设计逻辑,从而跳出多个循环
    遍历用户列表匹配用户信息,进行身份认证

            os.system('cls')
            while 1.1:
                name = input("请输入您的用户名:")
                password = input('请输入您的密码:')
                for username in users:
                    if username[0] == name and username[1] == password:
                        input ("用户登录成功,按任意键进入首页")
                        time.sleep(1)
                        break
                else:
                    input("用户名或密码错误!按任意键继续!")
                    os.system('cls')
                    continue
                break
    

    用户注册

    在循环中可以通过变量的控制,从而实现多个循环的跳出

    #用户注册
            break_flag = False
            while break_flag == False:
                name = input('请输入您的用户名:')
                #判断用户名是否存在
                for username in users:
                    if username[0] == name:
                        input("你的用户名已存在,请重新输入")
                        break
                #在for循环中添加else,使得在遍历完成后等够跳出两层循环
                else:
                    break_flag = True
            password = input('请输入您的密码:')
            #把注册的用户加入到用户列表中
            register = [name, password]
            users.append(register)
            input("注册成功,按任意键返回!")
    

    超市页面

    首先进行输入判断

    str.isdigit() #判断输入是否为数字

    取出列表中的索引与值,以便下面操作二维列表的时候使用,同时明确选择的商品完整信息

    i, rows in enumerate(goods)#输出索引和值

    之后进行库存判断,明确商品可以购买

    #判断输入的是否为整数
                    if Input.isdigit():
                        #遍历商品列表,得到商品信息
                        for i, rows in enumerate(goods):#输出索引和值
                            back = False
                            #判断输入商品编号是否存在
                            if int(Input) == rows[0]:
                                Input = rows[0]
                                # 判断商品是否还有库存
                                if rows[3] > 0:
                                    while 1:
                                        buy = input("请输入你要购买的数目:")
                                        if buy.isdecimal():  # 判断输入是否为整数,判断完成后在进行int操作,防止出错 PS:可以使用try except
                                            buy = int(buy)
                                            #判断输入合法
                                            if buy > rows[3]:
                                                input("购买数目过大,按任意键返回")
                                                continue
                                            else:
                                                break
                                        else:
                                            input('输入有误,按任意键返回!')
                                            continue
    

    付账信息明确
    运用try...except... 进行异常处理是实现金额输入标准化

    #输入金额判断
    money = input('请输入金额:')
    try:  # 判断输入金额是否为数字,可能存在零钱,使用try 收集异常,做到判断
        money = float(money)  # 转换为float预防用户输入为浮点数
            if money > 0:
                break
            else:
                input('输入有误,按任意键返回')
                continue
    except ValueError:#异常信息 传入无效的参数
        print('输入有误,按任意键返回!')
        continue
    

    商品购买流程

    #商品购买
    #判断金额是否满足条件
    if money > rows[2] * buy:
        print('找您%.2f元钱' % (money - rows[2] * buy))
        print('感谢您的购买,欢迎下次再来!')
        # 修改库存
        goods[i][3] = goods[i][3] - buy
        input('按任意键返回')
        back = True
        break
    elif money < rows[2] * buy:
        while 5:
            #金额不足再次输入
            money1 = input("您支付的金额不足,请再次付账:")
            try:
                money1 = float(money1)
                money = money + money1
                break
            except ValueError:
                input('您的输入有误,按任意键重新输入!')
                continue
    else:
        print('感谢您的购买,欢迎下次再来!')
        #商品库存修改
        goods[i][3] = goods[i][3] - buy
        input('按任意键返回')
        back = True
        break
        time.sleep(2)
    

    小游戏整合

    老虎棒子鸡

    # 老虎棒子鸡游戏界面
    os.system('cls')
    print("\t\t欢迎进入PY1807电子商城休闲区")
    print("#" * 70)
    print("\t欢迎进入老虎棒子鸡小游戏规则页面")
    print('\t你有10秒的时间观看规则,十秒后自动进入游戏')
    print("\t游戏的规则是老虎吃鸡,棒子打老虎,虫子克棒子,鸡吃虫子")
    print("\t当然老虎与虫子->平局,棒子与鸡->平局")
    print("\t系统会自动出招")
    print("\t玩家根据提示,输入自己的招式[0 老虎,1 棒子,2 鸡,3 虫子]")
    print("\t系统会根据运算得出结果,根据结果给予奖励")
    print("#" * 70)
    time.sleep(5)
    os.system('cls')
    
    # 积分判断
    if score > 0:
        print('加载游戏中,请稍后...')
        time.sleep(1)
        while 1:
            print("\n系统正在绞尽脑汁的出招中...")
            time.sleep(1)
            print("\n准备接受正义的制裁吧!到你了,凡人")
            time.sleep(1)
            # 系统获得随机数
            game1_computer = random.randint(0, 3)
            # 玩家出招
            game1_player = input("\n请谨慎选择您的招数(0 老虎,1 棒子,2 鸡,3 虫子):")
            game1_player = int(game1_player)
            # 判断输赢
            print("\n电脑正在卖力的处理中,请稍等...\n")
            time.sleep(2)
            if (game1_player == 0 and game1_computer == 2) \
                    or (game1_player == 1 and game1_computer == 0) \
                    or (game1_player == 2 and game1_computer == 3) \
                    or (game1_player == 3 and game1_computer == 1):
                print("\nCongratulations, 玩家获胜!获得2积分\n")
                score += 2
                time.sleep(1)
    
                # 确认用户是否退出
                num = input("\n是否退出游戏(Y):")
                if num == 'y' or num == 'Y':
                    os.system('cls')
                    break
            elif (game1_player == 0 and game1_computer == 3) \
                    or (game1_player == 1 and game1_computer == 2) \
                    or (game1_player == 2 and game1_computer == 1) \
                    or (game1_player == 3 and game1_computer == 0) \
                    or (game1_player == game1_computer):
                print("\n哇哦,平局!看来还需要一局了")
                time.sleep(2)
                os.system("cls")
            else:
                print("\nSORRY,你输了!扣除1点积分\n")
                score = score - 1
                time.sleep(1)
                # 确认用户是否退出
                num = input("\n是否退出游戏(Y):")
                if num == 'y' or num == 'Y':
                    os.system('cls')
                    break
    else:  # 积分不足
        print("积分不足,退出游戏")
        time.sleep(2)
        break
    

    猜数字游戏

    # 猜数字游戏
    os.system('cls')
    print("\t\t欢迎%s进入PY1807电子商城休闲区" % (name))
    print("#" * 70)
    print("\t欢迎进入猜数字小游戏规则页面")
    print('\t你有10秒的时间观看规则,十秒后自动进入游戏')
    print("\t游戏的规则是系统会从0-100之间随机选择一个数")
    print("\t玩家猜测系统出的数")
    print("\t若玩家猜测的数比系统的大,系统会提示偏大")
    print("\t若玩家猜测的数比系统的小,系统会提示偏小")
    print("\t玩家猜错一次扣一分,才对获得6积分的奖励")
    print("#" * 70)
    time.sleep(5)
    os.system('cls')
    print('系统正在选择时...')
    time.sleep(2)
    os.system('cls')
    print('系统以选择完毕!!!')
    game2_computer = random.randint(0, 100)
    time.sleep(1)
    while 1:
        # 积分判断
        if score > 0:
            game2_player = int(input("请输入您猜测的值(扣除1积分):"))
            time.sleep(1)
            # 判断结果
            if game2_player < game2_computer:
                print('您猜测的数字偏小,请重新输入!\n')
                time.sleep(1)
                score = score - 1
                print("当前积分为%d" % (score))
                time.sleep(1)
                continue
            elif game2_player > game2_computer:
                print("您猜测的数字偏大,请重新输入!\n")
                time.sleep(1)
                score = score - 1
                print("当前积分为%d" % (score))
                time.sleep(1)
                continue
            else:
                print('恭喜您成功了,获得6积分')
                time.sleep(1)
                score = score + 6
                print("当前积分为%d" % (score))
                time.sleep(1)
                print('游戏结束,返回游戏页面')
                time.sleep(1)
                print('系统正在重新加载中...')
                time.sleep(1)
                break
        else:
            print('积分不足,退出游戏!')
            break
    
    

    相关文章

      网友评论

          本文标题:python 列表 循环 实现简易的电子商城

          本文链接:https://www.haomeiwen.com/subject/bmjypftx.html