项目案例——电商网站

初学程序结构写的一个简单网站,使用了大量的循环语句,代码重复较多,因此参考度不大。
下面是完整代码:

"""
用户登录的电商网站
"""
#引入模块
import os, sys, time
import random

#定义一个变量,存储多个用户数据
users = [
    ["admin", "123", "Tom"],
    ["liuhaoran", "1997", "Jone"]
]

#展示登录菜单
while True:
    os.system("cls")
    print("*" * 35)
    print("\t欢迎来到豪华电商网站")
    print("\t1.用户登录")
    print("\t2.注册新用户")
    print("\t3.修改用户信息")
    print("\t4.退出系统")
    print("*" * 35)

    #用户输入选项
    userChoice  = input("请输入您的选项:")

    #判断用户选项并跳转
    if userChoice == "1":
        #用户登录
        while True:
            #请输入账号和密码
            username = input("请输入您的账号:")
            password = input("请输入您的密码:")
            nicheng = input("请输入您的昵称: ")

            #判断账号和密码是否正确
            for user in users:
                if username == user[0] and password == user[1] and nicheng == user[2]:
                    #登录成功,展示首页菜单
                    print("登录成功,即将进入首页菜单")
                    time.sleep(1)
                    break
            #for循环遍历完之后还没有登录成功
            else:
                print("账号或密码有误,请重新操作")
                continue
            # 跳出while输入账号的循环
            break

        # 展示首页菜单

        while True:
            os.system("cls")
            print("%s小仙女,欢迎您" % (nicheng))
            print("~" * 44)
            print("\t\t系统网站首页")
            print("~*" * 22)
            print("\t\t1.进入购物超市")
            print("\t\t2.休闲小游戏")
            print("\t\t3.返回登录菜单")
            print("\t\t4.退出系统")
            print("~*" * 22)

            # 用户输入选项
            choice = input("请输入您的选项: ")
            if choice == "1":
                # 显示购物超市页面
                while True:
                    os.system("cls")
                    print("*" * 30)
                    print("\t欢迎来到豪华购物超市")
                    print("\t商品\t单价\t库存")
                    print("\t苹果\t5元\t100斤")
                    print("\t梨子\t4元\t50斤")
                    print("\t辣条\t1元\t10包")
                    print("\t牛奶\t3元\t20瓶")
                    print("\t小心钱包哈哈哈")
                    print("*" * 30)
                    listA = [
                        ["苹果", "5", "\t100"],
                        ["梨子", "4", "\t50"],
                        ["辣条", "1", "\t10"],
                        ["牛奶", "3", "\t20"]
                    ]

                    total = 0

                    for food in listA:

                        buyChoice = input("请输入您要购买的商品: ")
                        if buyChoice == "q":
                            print("即将退出")
                            time.sleep(3)
                            break

                        elif buyChoice == food[0]:
                            # 单价
                            price = int(food[1])
                            # 总的库存
                            sumCount = int(food[2])

                            while True:
                                count = int(input("请输入您要购买的数量:"))
                                # 库存不足
                                if count > sumCount:
                                    input("不好意思,库存不足,我们会尽快补货的")
                                    continue
                                elif count <= 0:
                                    print("客官,不能再少了")
                                    continue
                                else:
                                    # 总共花的钱
                                    sumPrice = count * price
                                    print("您购买的商品是%s,数量为%s,总额是%s" % (food[0], count, sumPrice))
                                    break

                            # 结算总金额
                            total += sumPrice

                            # 询问用户是否继续购买
                            choice = input("是否继续购买(y/n)")
                            if choice == "y":
                                continue
                            else:
                                print("您需要付钱:", total)
                                # 买完付钱
                                while True:
                                    money = float(input("请付钱:"))
                                    # 用户支付的金额不足
                                    if money < total:
                                        input("金额不足,请重新支付...")
                                        continue

                                    # 找零
                                    balance = money - total
                                    print("找您零钱:", balance, "元,欢迎下次再来")
                                    time.sleep(2)
                                    break
                                break
                            break
                        else:
                            input("商品未上架,请购买其他东西吧...")
                            time.sleep(2)
                            continue
                    break


            elif choice == "2":
                #展示游戏界面
                while True:
                    os.system("cls")
                    print("*" * 30)
                    print("---欢迎光临大富豪游戏---")
                    print("\t1.石头剪刀布")
                    print("\t2.老虎棒子鸡")
                    print("\t3.猜数字")
                    print("*" * 30)

                    # 初始积分
                    score = 10

                    #用户输入选择
                    gameChoice = input("请输入您的选择: ")
                    print("现在的积分为:", score)

                    if gameChoice == "1":
                        print("*" * 30)
                        print("欢迎来到石头剪刀布游戏!")
                        print("您准备好了吗?")
                        print("*" * 30)

                        while True:
                            # 石头剪刀布游戏

                            # 电脑每次出拳随机
                            computerNum = random.randint(0, 2)
                            if computerNum == 0:
                                computerEnd = "石头"
                            elif computerNum == 1:
                                computerEnd = "剪刀"
                            else:
                                computerEnd = "布"

                            # 玩家出拳
                            if score >= 0:
                                userEnd = input("请出拳(石头、剪刀、布):")
                            else:
                                print("积分不足,请充值")
                                print("即将退出")
                                time.sleep(2)
                                break
                            #玩家不想玩了
                            if userEnd == "q":
                                print("客官慢走呀")
                                time.sleep(2)
                                break

                            #为了使体验更友好,显示玩家和电脑出拳情况
                            print("您出拳为:%s,\n电脑出拳为:%s"%(userEnd, computerEnd))

                            if userEnd == "石头":
                                if computerEnd == "石头":
                                    print("平局,积分不变,现有积分:%s" % (score))
                                elif computerEnd == "剪刀":
                                    score += 10
                                    print("恭喜您,获胜,加10分,现有积分:%s"%(score))
                                else:
                                    score -= 10
                                    print("很遗憾,您输了,扣10分,现有积分:%s"%(score))

                            elif userEnd == "剪刀":
                                if computerEnd == "石头":
                                    score -= 10
                                    print("很遗憾,您输了,扣10分,现有积分:%s"%(score))
                                elif computerEnd == "剪刀":
                                    print("平局,积分不变,现有积分:%s" % (score))
                                else:
                                    score += 10
                                    print("恭喜您,获胜,加10分,现有积分:%s" % (score))

                            elif userEnd == "布":
                                if computerEnd == "石头":
                                    score += 10
                                    print("恭喜您,获胜,加10分现有积分:%s" % (score))
                                elif computerEnd == "剪刀":
                                    score -= 10
                                    print("很遗憾,您输了,扣10分,现有积分:%s" % (score))
                                else:
                                    print("平局,积分不变,现有积分:%s" % (score))

                            else:
                                print("输入错误,请重新输入")
                                continue

                    elif gameChoice == "2":
                        #展示游戏画面
                        print("*" * 35)
                        print("欢迎来到老虎棒子鸡游戏...")
                        print("\t游戏规则如下")
                        print("棒打老虎,老虎吃鸡,鸡吃虫,虫吃棒")
                        print("*" * 35)

                        while True:
                            # 老虎棒子鸡游戏

                            #电脑随机生成一个动物名字
                            animalNum = random.randint(0,3)
                            if animalNum == 0:
                                animalName = "老虎"
                            elif animalNum == 1:
                                animalName = "棒子"
                            elif animalNum == 2:
                                animalName = "鸡"
                            else:
                                animalName = "虫"

                            #提示用户输入
                            if score >= 0:
                                animal = input("请输入您心中的动物(老虎、棒子、鸡、虫): ")
                            #若积分不足不能继续游戏
                            else:
                                print("积分不足,请充值")
                                print("即将返回首页")
                                time.sleep(2)
                                break

                            #用户输入q退出游戏
                            if animal == "q":
                                print("客官慢走...")
                                time.sleep(2)
                                break

                            #显示电脑和用户输入
                            input("电脑想到的动物是:%s,\n玩家想到的动物是:%s"%(animalName, animal))

                            if animal == "老虎":
                                if animalName == "老虎":
                                    input("平局,积分不变,现有积分:%s"%(score))

                                elif animalName == "棒子":
                                    score -= 10
                                    input("很遗憾,您输了,扣10分,现有积分:%s"%(score))
                                elif animalName == "鸡":
                                    score += 10
                                    input("恭喜您,获胜,加10分,现有积分:%s"%(score))
                                else:
                                    input("不分输赢,积分不变,现有积分为:%s"%(score))

                            elif animal == "棒子":
                                if animalName == "老虎":
                                    score += 10
                                    input("恭喜您,获胜,加10分,现有积分:%s"%(score))
                                elif animalName == "棒子":
                                    input("平局,积分不变,现有积分:%s" % (score))
                                elif animalName == "鸡":
                                    input("不分输赢,积分不变,现有积分为:%s" % (score))
                                else:
                                    score -= 10
                                    input("很遗憾,您输了,扣10分,现有积分:%s" % (score))

                            elif animal == "鸡":
                                if animalName == "老虎":
                                    score -= 10
                                    input("很遗憾,您输了,扣10分,现有积分:%s" % (score))
                                elif animalName == "棒子":
                                    input("不分输赢,积分不变,现有积分为:%s" % (score))
                                elif animalName == "鸡":
                                    input("平局,积分不变,现有积分:%s" % (score))
                                else:
                                    score += 10
                                    input("恭喜您,获胜,加10分,现有积分:%s" % (score))

                            elif animal == "虫":
                                if animalName == "老虎":
                                    input("不分输赢,积分不变,现有积分为:%s" % (score))
                                elif animalName == "棒子":
                                    score += 10
                                    input("恭喜您,获胜,加10分,现有积分:%s" % (score))
                                elif animalName == "鸡":
                                    score -= 10
                                    input("很遗憾,您输了,扣10分,现有积分:%s" % (score))
                                else:
                                    print("平局,积分不变,现有积分:%s" % (score))

                            else:
                                input("输入有误,请重新输入")
                                continue

                    elif gameChoice == "3":
                        #猜数字游戏
                        while True:
                            #定义一个变量,记录每局游戏用户操作的次数
                            times = 0
                            #展示游戏画面
                            print("*" * 30)
                            print("猜数字游戏")
                            print("Ready? Go")
                            print("*" * 30)

                            # 电脑随机产生数字
                            comNum = random.randint(0, 100)
                            print("系统数字已经生成...")

                            while True:
                                #提示用户猜数字
                                if score >= 0:
                                    number =int(input("请输入您的数字: "))
                                    #每猜一次积分减1
                                    score -= 1
                                    #每输入1次次数加1
                                    times += 1

                                    # 根据用户输入的数字判断是偏大/偏小
                                    if number > comNum:
                                        input("猜错了,偏大")
                                    elif number < comNum:
                                        input("猜错了,偏小")
                                    elif number == comNum:
                                        input("恭喜您,答对了!")
                                        input("您只猜了:%s次就猜对了呢!" % (times))
                                        # 根据次数增加积分
                                        if times == 1:
                                            score += 10
                                        elif times == 2:
                                            score += 8
                                        elif times == 3:
                                            score += 5
                                        elif times == 4:
                                            score += 2
                                        elif times == 5:
                                            score += 1
                                        else:
                                            score += 0
                                        print("您的积分为:%s" % (score))
                                        break
                                    else:
                                        input("输入错误,请重新输入...")
                                        continue
                                else:
                                    input("积分不足,请及时充值,即将返回游戏主页面")
                                    time.sleep(3)
                                    break
                            response = input("游戏结束,是否继续?")
                            if response == "y":
                                continue
                            else:
                                print("游戏退出")
                                break

                    elif gameChoice == "q":
                        print("退出游戏,即将回到电商网站首页")
                        time.sleep(3)
                        break

            elif choice == "3":
                print("账号即将退出,返回登录菜单...")
                time.sleep(1)
                break

            elif choice == "4":
                print("退出系统")
                time.sleep(3)
                sys.exit(1)

            else:
                print("没有这个选项,请重新操作")
                time.sleep(1)
                continue

    elif userChoice == "2":
        while True:
            os.system("cls")
            # 展示注册界面
            print("\t\t用户注册")
            print("*" * 40)
            print("\t您好!欢迎注册新用户^-^")
            print("\t请根据提示信息")
            print("\t填写您的个人资料")
            print("*" * 40)
            time.sleep(1)

            #提示用户录入信息
            username = input("请输入您的账号: ")
            #验证用户账号是否可用
            is_ok = True #可用
            for user in users:
                if username == user[0]:
                    input("您的账号已经存在,请使用其他账号注册")
                    is_ok = False #表示账号不可用

            #如果账号已经被使用
            if not is_ok:
                continue #回到while循环,重新输入账号

            #提示用户输入昵称
            nicheng = input("请给自己起一个不一样的昵称吧: ")
            #提示用户输入密码
            while True:
                password = input("请输入您的密码: ")
                #提示用户确认密码
                confirm = input("请再次确认密码: ")

                #判断两次输入的密码是否一致
                if password != confirm:
                    print("两次密码输入不一致,请重新输入..")
                    time.sleep(2)
                    continue
                break
            #注册用户:将用户输入的账号、密码保存成一个列表
            user = [username, password, nicheng]
            #将新用户的列表添加到系统用户变量中
            users.append(user)

            print("注册成功,请使用新账号登录")
            time.sleep(2)
            break #跳出注册页面

    elif userChoice == "3":
        #修改用户登录密码

        while True:
            os.system("cls")
            print("*" * 30)
            print("\t您正在修改个人信息")
            print("\t请确认是本人操作")
            print("*" * 30)

            username = input("请输入您的用户名: ")
            if username == "q":
                print("放弃修改,即将退出修改界面")
                time.sleep(3)
                break

            for user in users:
                while username == user[0]:
                    oldPassward = input("请输入您的旧密码: ")
                    if oldPassward == "q":
                        print("放弃修改,即将退出修改界面")
                        time.sleep(3)
                        break
                    elif oldPassward != user[1]:
                        print("密码错误,请重新输入")
                        continue
                    while oldPassward == user[1]:
                        newPassward = input("请输入新密码: ")
                        if newPassward == "q":
                            print("放弃修改,即将退出修改界面")
                            time.sleep(3)
                            break
                        elif newPassward == oldPassward:
                            print("两次密码相同,请重新输入")
                            continue
                        else:
                            #将修改过的密码保存
                            user[1] = newPassward
                            users.append(user)
                            input("修改成功,请使用新密码登录")
                            time.sleep(2)
                            break
                    break
                break
            break

    elif userChoice == "4":
        print("即将退出系统")
        time.sleep(3)
        sys.exit(1)
    else:
        print("没有这个选项,请重新操作")
        time.sleep(1)
        #返回菜单,重新显示
        continue





你可能感兴趣的:(项目案例——电商网站)