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

电子商城功能

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

用户登录注册

列表的初始化与赋值

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 列表 循环 实现简易的电子商城)