综合练习函数以及以前的知识

import random
import sys
# 1、欢迎页面(是否购买vip卡)
# 1、购物
# 2、充值(验证码;钱不够判断是否进入充值页面)
# 3、抽奖系统(购物大于500元抽奖1次,购物大于800元抽奖二次,大于1000抽奖三次)
# 4、vip卡注册
# 4、抽奖系统(购物大于500元抽奖1次,购物大于800元抽奖二次,大于1000抽奖三次)
def lucy():#抽奖系统
global vip_card#声明全局变量;
if sum_price >= 500 and sum_price < 800:
print("您现在有一次抽奖机会!")
while True:
res = code()#调用验证码函数,并将返回值赋值给res变量
lucy_num = input("请输入您的数字[四位]:")
if lucy_num.isdigit():
if int(lucy_num) == res:
lucy_money = random.choice(range(10,1000))#随机生成奖金
print("恭喜您中奖了")
vip_card = vip_card + lucy_num#将获得奖金添加到充值卡中
break
else:
print("谢谢惠顾,本次中奖号码为:%d" %res)
else:
print("请输入正确的数字")

vip_dict = {}#定义一个全局变量,用于接收注册的信息
#5、vip注册
def vip_enroll():#vip注册函数
print("注册中...")
while True:
# 定义全局变量后,给全局变量赋值
name = input("用户名:")
#判断用户名是否为纯字符串
if name.isalpha():
#判断用户名是否已经存在
if name not in vip_dict.keys():
password = input("密码:")
#判断密码是否为六位
if len(password) == 6:
#判断密码是否为数字或字母密码
if password.isalnum():
vip_dict.setdefault(name,password)#将用户名密码添加到vip字典中
print(vip_dict)
print("注册成功")
#返回欢迎菜单
memu()#调用菜单函数
else:
print("请输入正确的密码")
else:
print("请输入正确长度的密码")
else:
print("用户名已经注册")
lose = input("找回密码?[y/n]")#询问用户是否找回密码
if lose == "y":
lost_password()#调用找回密码页面
else:
sys.exit()

else:
print("请输入正确的用户名!")

def lost_password():#找回密码丢失页面
while True:
lost_name = input("请输入您的用户名:")
if lost_name.isalpha():#判断用户的用户名是否为字符
print("验证码:"+code())#调用验证码函数code()
lost_code = input("验证码:")
if lost_name in vip_dict.keys():#判断用户的用户名是否在vip字典中
lost_password = vip_dict.get(lost_name)#返回用户密码
print("您的密码是:",lost_password)
#判断用户是否用于登录
lost_login = input("是否登录:")
if lost_login == 'y':
memu()#调用登录页面
else:
print("欢迎下次光临")
#退出系统
sys.exit()
else:
print("")
else:
print("请输入正确的用户名")


def code():#生成验证码功能函数
global str1#定义全局变量str,用于接收生成的验证码
str1 = ""
num1 = random.choice(range(0,4))
num2 = random.choice(range(0,4))
for i in range(0,4):
if i == num1:
temp = chr(random.randint(65,90))
elif i == num2:
temp = chr(random.randint(97,122))
else:
temp = str(random.choice(range(0,10)))
str1 += temp
return str1
vip_card = 0#暂时定义一个vip卡
#2:购物
def shopping():#购物函数
global sum_price#定义商品总价,全局变量
sum_price = 0#定义处置
user_shop = {}#定义局部变量;接收用户购买的物品
flag = False
while True:
shop_memu = ['苹果','香蕉','梨','橘子','甘蔗']#商场清单
shop_price = [5,10,15,20,25]#定义局部变量;商场物品价格
#向客户展示清单

for i in range(1,len(shop_memu)+1):
print(i,":",shop_memu[i-1] , ":" , shop_price[i-1])
buy = int(input("购买<<<:"))
num = int(input("几斤>>>:")) # 购买的斤数
# for i in range(1,len(shop_memu)+1):
#询问用户购买几斤
user_shop_value = shop_price[buy-1] * num #用户字典的value值,等于原价*数量
user_shop.setdefault(shop_memu[buy-1],num)#添加到字典中
sum_price += user_shop_value#总花费
continue_buy = input("继续购买>>>:")
if continue_buy == "y":
flag = True
else:
print("下次见")
print("您的清单:",user_shop,"总花费为:",sum_price)
kahao = input("卡号:")
if kahao in card_dict.keys():#是否在卡片的字典中
if card_dict[kahao] > sum_price:
for i in range(0,len(card_dict.keys())):
card_dict[kahao] = vip_card[kahao] - shop_price
print("卡内余额为:%d" %card_dict[kahao])
a = input("是否进行抽奖")
if a == 'y':
if sum_price >= 500:
lucy() # 进入抽奖系统
else:
print("对不起,消费不足")
else:
print("下次再见")
sys.exit()

else:
ifchongzhi = input("是否充值[y/n]:")
if ifchongzhi == "y":
pay_monry()#调用充值函数
else:
print("对不起余额真不足")


else:
ifjihuo = input("是否激活[y/n]:")
if ifjihuo == "y":
pay_monry()#调用充值函数

else:
print("对不起,余额不足!")
sys.exit()#退出系统


card_dict = {}#定义一个全局变量,接收卡片的卡号和金钱
def pay_monry():
card = input("卡号:")
if card in card_dict.keys():#如果卡号在定义的card_dict(),在就充值
print("卡内余额:%d" %card_dict[card])#展示余额
chongzhi1 = int(input(">>>充值:"))
for key in range(0,len(card_dict)):
card_dict[key] = chongzhi1#重新复制
print("卡内余额%d" %card_dict[card])
else:#不在激活
print("对不起,您的卡暂时没有激活")
jihuo = input("是否激活[y/n]:")
if jihuo == "y":
while True:#如果验证码输入不正确,重新生成验证码再次验证
res = code()#调用验证码函数
print(res)#显示验证码
userCode = input("验证码:" )
if res == userCode:
print("<<<激活成功>>>")
card_dict.setdefault(card,0)#先把卡号和默认0元放在卡片的字典中
print(">>>余额:%d" %card_dict[card])#显示激活后的卡上的余额
chongzhi = input("是否充值[y/n]:")#询问用户是否充值
if chongzhi == "y":
money = int(input(">>>数额:"))
for key in range(0,len(card_dict.keys())):
card_dict[card] = money
print("卡内余额:%d" %card_dict[card])
break
else:
break#退出循环
else:
print("请输入正确的验证码")
else:
sys.exit()#不激活退出系统





def outter(func):#装饰器;将memu()函数传入装饰器中
def inner():
print("*"*15+"小二超市"+"*"*15)
memu_dict = {1:"购物",2:"充值",3:"抽奖",4:"vip注册"}
for key,value in memu_dict.items():
print(key,"."+value)
print("*" * 34)
func()#执行memu()函数
return inner
@outter#将装饰器应用到函数
def memu():#欢迎界面
while True:
num = input("请选择:")
if num.isdigit():#判断输入的是否是纯数字
if int(num) == 1:
shopping()#购物系统
elif int(num) == 2:
pass
elif int(num) == 3:
print("请先消费")
shopping()#抽奖系统
elif int(num) == 4:
vip_enroll()#注册的vip
else:
print("正在开发中...")
else:
print("请输入合理的数字!")
memu()
#相关业务的连接考虑还不是很全面,有什么问题的可以留言一起讨论

猜你喜欢

转载自www.cnblogs.com/guojie-guojie/p/9245126.html
今日推荐