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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容