s22day2作业

# _*_ coding:utf-8 _*_

"""
购物车
功能要求:
要求用户输入总资产,例如:2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功,可以连续购买。
需要有结算功能,充值功能。
"""

'''
解决思路:
1、 用户登录完成后,要求其输入初始金额

2、 显示当前的主菜单列表 ["商品列表", "购物车", "充值"]

2.1、 商品列表: 定义一个商品字典 [{'name':'电脑','price':5000},{},{},...]

2.2、 购物车: 用户购买的商品,形成一个列表呈现,以及金额的total, [{'name':'电脑','price':5000},{},{},]

2.3、 结算: 结算功能在购物车里,向用户提供结算功能,用户选择后 用户的初始金额 - 购物车中的总金额, 包括判断 "余额不足"

2.4、 充值: 当用户选择充值时,要求用户输入一个非负值,与用户的余额进行相加操作

'''

import sys
import time

counts = 0

print("欢迎使用淘淘宝".center(50, "-"))

user_list = [
{"user_name":"sanshao","passwd":"123456"},
{"user_name":"xiaoming","passwd":"123456"},
{"user_name":"gege","passwd":"123456"},
{"user_name":"haha","passwd":"123456"},
{"user_name":"xiaogang","passwd":"123456"}
]

'''用户登录'''
flag = False
while True:
user = input("请输入用户名:")
#password = getpass.getpass("请输入密码:")
password = input("请输入密码:")
for item in user_list:
if counts == 3:
print("您已经输错三次,已经不能再输入了。")
exit()
elif item["user_name"] == user and password == item["passwd"]:
flag = True
break
if flag :
print("欢迎%s登陆成功" % user)
break
else:
print("没有%s用户或密码错误!" % user)
counts = counts + 1


'''获取用户初始金额'''
userRMB = 0
while True:
try:
userRMB = int(input("请输入金额数(10-10000):"))
except ValueError as e:
print("输入非法,请重新输入")
continue

if userRMB < 10 or userRMB > 10000:
print("输入非法,请重新输入")
else:
break


'''定义主菜单'''

main_Menu = ["商品列表", "查看购物车", "充值"]

def print_main_menu():
'''主菜单呈现'''
global main_Menu
for index,item in enumerate(main_Menu):
menu_index = index + 1
print("%d. %s" % (menu_index,item))


commodity_List = [
{"name":"ThinkPad","price":3500},
{"name":"Iphone","price":4500},
{"name":"Three Squirrels","price":30},
{"name":"Ipod","price":500}
]

def print_commodity_list():
'''商品列表呈现'''
global commodity_List

print("商品列表".center(50, "-"))

for index, item in enumerate(commodity_List):
commodity_index = index + 1
print(str(commodity_index).center(10, " "), str(item["name"].ljust(31, " ")), str(item["price"]))

def print_shopping_cart():
'''购物车列表呈现'''

global shopping_cart

print("购物车列表".center(50, "-"))

for index, item in enumerate(shopping_cart):
shopping_cart_index = index + 1
print(str(shopping_cart_index).center(10, " "), str(item["name"].ljust(31, " ")), str(item["price"]))

shopping_cart = []

while True:
print_main_menu()
try:
menu_choice = int(input("请输入要选择的操作:"))
except ValueError as e:
print("输入非法,请重新输入")
continue
if menu_choice < 1 or menu_choice > len(main_Menu):
print("输入非法,请重新输入")

if main_Menu[menu_choice - 1] == "商品列表":

while True:
print_commodity_list()
try:
commodity_choice = int(input("请选择要购买的商品:"))
except ValueError as e:
print("输入非法,请重新输入")
continue

if commodity_choice < 1 or commodity_choice > len(commodity_List):
print("输入非法,请重新输入")
continue

shopping_cart.append(commodity_List[commodity_choice - 1])
print("添加购物车成功!")

user_operation = input("继续:y\n退出:e\n返回上一级:q ")

if user_operation == 'y':
continue
elif user_operation == 'e':
sys.exit(0);
elif user_operation == 'q':
break
else:
print("输入非法,请重新输入")

elif main_Menu[menu_choice - 1] == "查看购物车":
while True:
total_consume = 0
print_shopping_cart()

for i in shopping_cart:
total_consume += i['price']

print("所有商品总金额为:",total_consume)

user_operation = input("立即结算:c\n退出:e\n返回上一级:q ")

if user_operation == 'c':
if userRMB > total_consume:
userRMB -= total_consume
print("结算成功:本次消费 %d,您的账户余额为 %d"%(total_consume, userRMB))
shopping_cart = []


else:
print("您的账户余额不足,请返回上一级充值后,再进行支付.")
elif user_operation == 'e':
sys.exit(0);
elif user_operation == 'q':
break
else:
print("输入非法,请重新输入")

elif main_Menu[menu_choice - 1] == "充值":
while True:
try:
recharge_amount = int(input("请输入要充值的金额数,每次充值不得小于100"))
except ValueError as e:
print("输入非法,请重新输入")
if recharge_amount < 100:
print("输入金额过少,充值金额不得小于100")
continue
userRMB += recharge_amount

print("恭喜你充值成功,本次充值金额为 %d, 余额为 %d, 3秒后返回主菜单" % (recharge_amount,userRMB))
time.sleep(3)
break
posted @ 2018-05-17 15:35  Error丶log  阅读(134)  评论(0编辑  收藏  举报