电子商城功能
- 用户登录注册
- 页面之间的跳转
- 用户购买商品的输入判断
- 数据的修改已更新
- 休闲小游戏的整合
用户登录注册
列表的初始化与赋值
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