1丶 用户先进行登陆如果用户名在文件中且用户密码也正确就登陆成功调用购物车函数,如果用户用户名输入正确密码错误,提示用户密码错误且重新输入,如果用户
输入用户名不存在,提示用户是否创建该用户,调用注册函数。

1.1、用户登录完成后,要求其输入初始金额,如果用户名或密码输入错误超过三次则退出程序。

2、 显示当前的主菜单列表 ["商品列表", "购物车", "充值"] 定义print_main_menu函数呈现主菜单

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

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

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

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

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

"""解题思路

创建用户登录函数,用户登错3次程序退出创建新用户注册函数(如果用户用户名没在用户文件中提示是否新建用户)创建购物车函数

"""import time

def login():    flag = False    count = 0

    while True:        user_name = input("请输入用户名:")        password = input("请输入密码:")        # user_name = "dingyang"        # password = "12"

        with open("login", encoding="utf-8", mode="r") as f:

            for countent in f:                line = countent.strip().split()                #print(line)                if count == 2:                     print("您已经输错三次,已经不能再输入了。")                     exit()                if  user_name == line[0] and password == line[1]:                    flag = True                    break

            if flag :                print("欢迎%s登陆成功" % user_name)                shopping_car()                break            else:                with open("login", encoding="utf-8", mode="r") as f1:                    for counten in f1:                        line1 = counten.strip().split()                        # print(line1)                        if user_name != line1[0]:                            #print(line1[0])                            # while True:                            print("您输入的用户名不存在,需要注册%s吗?" % user_name)                            user_input = input("按y进行注册,按q重新输入:")                            if user_input == "y":                                print(user_name)                                user_register(user_name)

                            elif user_input == "q":                                break                            else:                                print("您输入有误,请输入y或q")                        else:                            print("%s用户密码错误,请重新输入!" % user_name)                            break

            count = count + 1

def user_register(username):    while True:        register_passwd = input("请输入新用户密码:")        new_register_passwd =  input("请再次输入密码: ")        if register_passwd == new_register_passwd:            with open("login",encoding="utf-8",mode="a") as f2:                f2.write("\n%s " % username)                f2.write(new_register_passwd)                f2.close()                print("用户%s注册成功" % username)                login()                break        else:            print("您输入的密码不一致,请重新输入:")

def shopping_car():    print("欢迎使用淘淘宝".center(50, "-"))    user_rmb()

userRMB = 0def user_rmb():    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 = []#C =

login()

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':                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':                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

转载于:https://www.cnblogs.com/dingyang-python/p/9087349.html

python学习day3相关推荐

  1. Python学习day3、day4

    一.字典 1.字典是(1)python内置的数据结构之一,与列表一样是一个可变序列,(2)以键值对的方式存储数据,字典是一个无序的序列 2.字典的实现原理 字典的实现原理与查字典类似,查字典是先根据部 ...

  2. python 学习day3

    set(无序不重复的序列) 创建两种方式  例一:s1 = {1,2,3}  例二:s2 = set() ,s3 = set([1,2,3,4,5]) 功能  s2.add(123) #添加s2集合中 ...

  3. Python学习记录day3

    2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...

  4. Python学习笔记:Day 16 编写移动App

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. Python学习笔记:Day15 部署Web App

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  6. Python学习笔记:Day14 完成Web App

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  7. Python学习笔记:Day13 提升开发效率

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  8. Python学习笔记:Day 12 编写日志列表页

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此, 写下这些 ...

  9. Python学习笔记:Day11 编写日志创建页

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

最新文章

  1. 定时任务scheduleAtFixedRate设定每天某个时刻执行
  2. MD5 算法描述及实现
  3. 一个springboot能支持多少并发_跑滴滴一个月能挣多少?-好不好
  4. MySQL慢查询之慢SQL定位、日志分析与优化方案
  5. html css 圆形按钮 仿uc,10款基于jquery的web前端动画特效
  6. Unity调用动态链接库dll和so
  7. DeepStream框架整理
  8. 深度linux系统怎么安装软件
  9. 详解机器学习算法基础--K近邻算法
  10. python 批量视频转换成图片
  11. 计算机键盘排列方式,电脑上的键盘布局是怎么形成的?
  12. r访问oracle数据库,R学习笔记之访问远程Oracle数据库
  13. c语言炉石传说测试数据库,炉石传说:王师傅微博分享算法入门题 网友:快把C语言播完吧!...
  14. java算法合集-九阳神功第三式滑动窗口
  15. Circular Barn Revisited (区间DP)
  16. H5网页开发新手入门-H5网页如何适应不同手机屏幕分辨率?
  17. 2018吉林CCPC(HDU6555)A.The Fool
  18. 这样发工资,风险很大,会计一定要重视!
  19. python必背英语单词的手机软件_有哪些适合背英语单词的手机app?
  20. oracle9i解压,Linux下oracle 9i图文安装四

热门文章

  1. FFmpeg通过摄像头实现对视频流进行解码并显示测试代码(新接口)
  2. 【MySQL】缩略语PK NN UQ BIN UN ZF AI G、基本操作语句
  3. 【驱动】在内核源码中添加驱动程序
  4. python判断质数的函数并输出_【python基础】|| 用python判断输入的数是否为素数
  5. julia有 pytorch包吗_有了Julia语言,深度学习框架从此不需要计算图
  6. MySQL留言板怎么创建_如何使用JSP+MySQL创建留言本(三)
  7. Linux服务器部署ssl证书教程,linux服务器在wdcp面板安装ssl证书教程
  8. Angular应用中配置全局路径映射
  9. vuerouter3种模式_Vue-router的三种传参方式
  10. tabBar 自定义,小程序自定义底部导航栏