python之购物车的编写(熬夜撸代码中。。。)

购物车的编写对于我这种不是很精通函数的小白来说,简直太难了。各种坑,各种无奈啊!不过总算也是写出来了!

不多说,直接上代码!

#!/usr/bin/env python#用户名 sanjiang#密码 sanjiang123import sysimport collections#定义一个计数器A = 0first = Truewhile first:    login_user = input(‘请输入你的用户名: ‘).strip()#读取用户文件user.txt,用来判断输入的用户是否存在    f_user = open(‘user.txt‘,‘r+‘)    user_list=f_user.read().split()#读取锁定文件local_file,用来判断输入的用户是否锁定    lock = open(‘local_file‘,‘a+‘)    lock_file = lock.read().split()#判断用户是否锁定    if login_user in lock_file:        print(‘------------------------------------------------\n‘              ‘对不起,你输入的账号已被锁定,请用其他账号登录\n‘)        continue#判断用户是否存在    elif login_user not in user_list:        print(‘------------------------------------------------\n‘              ‘对不起,你输入的用户不存在,请重新输入。\n‘)        continue    while   True:            login_pwd  = input(‘请输入你的密码: ‘).strip()#判断密码是否正确            if login_pwd == user_list[ user_list.index(login_user) + 1]:                print(‘------------------------------------------------\n‘                      ‘亲爱的%s,\n‘%login_user)                first = False                break            else:                A +=1                a = 3 - A                if A ==3:                    print(‘------------------------------------------------\n‘                          ‘对不起,你输入的次数已经超过三次,账号已被锁定\n‘)#往锁定文件中添加输入的用户                    lock.write(‘%s\n‘%login_user)#关闭两个文件                    lock.close()                    f_user.close()                    first =  True    #定义一个变量用来跳出二层循环                    break                print(‘------------------------------------------------\n ‘                      ‘对不起,你输入的密码错误,请重新输入。您还有%s次机会\n‘%a)#如果跳出第一层循环定义了跳出二层循环变量,那么就跳出第二层循环print(‘‘‘     __________________________________________________    |                                                 |    |             欢迎登陆三江水果购物商城            |    |_________________________________________________|    ‘‘‘)

 # 定义一个本地字典dic = {}#!定义一个跳出循环的变量flag1 = Truewhile flag1:#!请求输入一个购物预算    num1 = input(‘请输入您的购物预算:  ‘)#!判断输入的是否为空或者是否为字符串    if len(num1)==0 or num1 ==‘0‘ or num1.isdigit() is False:        print(‘\033[36;1m对不起,你输入的有误,请重新输入\033[0m‘)        continue    else:        pass#!定义一个跳出循环的变量    flag2 = True    while flag2:#!交互式询问要做什么选项        num = input(‘‘‘三江,你想要做什么呢?              你的预算为%s元        1:购买水果        2:购物车        3:修改购物预算        4:老板个人简历        5.退出程序        :‘‘‘%num1)#!定义退出程序        if num ==‘5‘:            sys.exit()#!显示老板简历信息        if num == ‘4‘:            print(‘‘‘            notice:            吴三江是一个非常的帅的一个小伙子,很有潜力的孩子,虽然现在有点穷,但是请莫欺少年穷。

            ‘‘‘)#!返回上一个循环        if num ==‘3‘:            flag2 = False#!进入购买水果的界面        if num == ‘1‘:#!定义一个字典并把字典转换成列表            local_dic= {‘芒果‘:‘7‘,‘桃李‘:‘8‘,‘龙眼‘:‘9‘,‘苹果‘:‘9‘,‘香蕉‘:‘5‘,‘葡萄‘:‘8‘,‘蓝莓‘:‘7‘,‘凤梨‘:‘7‘,‘柚子‘:‘3‘,‘橘子‘:‘6‘,            }            list1 =list(local_dic)            list2 = list(local_dic.values())            print(‘编号\t\t‘,‘种类\t\t‘,‘单价\t\t‘)            flag3 = True            while flag3:#!展示水果的商品列表                for i in range(len(list1)):                    print( ‘num.%s \t\t %s \t\t %s元/斤‘ %(i,list1[i],list2[i]))                num2 = input(‘\033[36;1m请输入你要购买的商品序号(返回上一层请按q): ‘)#!定义退出这个循环                if num2 ==‘q‘:                    break#!判断是否输入的是字符串                if num2.isdigit() is False:                    print(‘\033[36;1m你输入的有误,请重新输入:\033[0m ‘)                    continue                if len(num2)!=0 and int(num2)<len(list1):#!交互式显示购买水果的过程                    num3 = input(‘您要购买的商品是%s,单价为%s元/斤,确定要购买么(y/n?): ‘%(list1[int(num2)],list2[int(num2)]))                    if num3 ==‘n‘:                        continue                    elif num3 ==‘y‘:                        num4 = input(‘\033[36;1m请输入你要购买的商品数量:\033[0m‘)                        if num4.isdigit()is False:                            print(‘\033[36;1m对不起,你输入的有误,请重新输入。\033[0m‘)                            continue                        num5 = input(‘您要购买的商品是%s,单价为%s元/斤,数量为%s,总价为%s,确定加入购物车么(y/n?):‘%(list1[int(num2)],list2[int(num2)],int(num4),int(num4)*int(list2[int(num2)])))                        if num5 ==‘y‘:                            dic_list = list(dic)                            dic_list2 = list(dic.values())#!如果购买的商品不在购物车中,那么购买数量就是指定的数量                            if list1[int(num2)] not in dic_list:                                dic[list1[int(num2)]]=int(num4)                                break#!如果购买的商品在购物车中,那么购买的数量就是之前的商品数量加上这次的商品数量                            else:                                dic[list1[int(num2)]]=int(num4)+dic_list2[int(dic_list.index(list1[int(num2)]))]

                        elif num5==‘n‘:                            continue                        else:                            print(‘\033[36;1m你输入的有误,请重新输入: \033[0m‘)                            continue                    else:                        print(‘\033[36;1m你输入的有误,请重新输入: \033[0m‘)                        continue                else:                    print(‘\033[36;1m你输入的有误,请重新输入: \033[0m‘) #!进入购物车        if num == ‘2‘:            print(‘‘‘购物车        编号      商品      单价      数量      总价\t‘‘‘)#!再次重复定义一个字典,和列表,用来调用            local_dic= {‘芒果‘:‘7‘,‘桃李‘:‘8‘,‘龙眼‘:‘9‘,‘苹果‘:‘9‘,‘香蕉‘:‘5‘,‘葡萄‘:‘8‘,‘蓝莓‘:‘7‘,‘凤梨‘:‘7‘,‘柚子‘:‘3‘,‘橘子‘:‘6‘,            }            dic_list1 = list(dic)            dic_list2 = list(dic.values())#!显示出购物车里面的商品列表            for i in range(len(dic_list1)):                print(‘‘‘         %s        %s       %s          %s      %s\t‘‘‘%(i,dic_list1[i],local_dic[dic_list1[i]],dic_list2[i],int(dic_list2[i])*int(local_dic[dic_list1[i]])))#!求所有商品的总金额            a = 0            for i in range(len(dic_list1)):                a = a + int(dic_list2[i])*int(local_dic[dic_list1[i]])            b = a            flag4 = True            while flag4:                num6 = input(‘结算:t | 退出:q | 删除订单 :d | 修改订单 :z\n请输入你的操作指令:‘)                if num6 ==‘q‘:                    flag4 =False                elif num6 ==‘t‘:                    num7= input(‘你购买水果的总金额为%s,确定要结算么?(y/n)‘%b,)                    if num7 ==‘y‘:#!如果预算小于结算的总金额,那么提示重新购买                        if int(num1)<int(b):                            print(‘对不起,超出了你的预算,请重新购买。‘)                            flag4 = False#!如果预算大于结算的总金额,那么会提示距离预算还有多少钱可以用                        elif int(num1)>int(b):                            c = int(num1)-int(b)#!结算完可以继续购物,也可以选择离开                            num8 = input(‘距离你的预算还有%s元,你还可以去买些水果哦,要离开还是继续购物?q:离开,购物:g‘%c)                            if num8 ==‘q‘:                                flag4=False                            elif num8 ==‘g‘:                                continue                            else:                                 print(‘对不起。你输入的有误‘)                elif num6 ==‘d‘:                        print(‘学艺不精,暂时不支持此功能,‘)                elif num6 ==‘z‘:                        print(‘学艺不精,暂时不支持此功能,‘)                else:                    print(‘对不起。你输入的有误‘)                    continue效果展示。

				
时间: 2024-10-10 14:02:40

python之购物车的编写(熬夜撸代码中。。。)的相关文章

编写高质量代码–改善python程序的建议(二)

原文发表在我的博客主页,转载请注明出处! 建议七:利用assert语句来发现问题断言(assert)在很多语言中都存在,它主要为调试程序服务,能够快速方便地检查程序的异常或者发现不恰当的输入等,可防止意想不到的情况出现.其语法如下: assert expression1 ["," expression2] 其中expression1的值会返回True或者False,当值为False的时候会引发AssertionError,而expression2是可选的,常用来传递具体的异常信息. 不

《编写高质量代码:改善Python程序的91个建议》读后感

编写高质量代码:改善Python程序的91个建议  http://book.douban.com/subject/25910544/ 1.(建议16)is 用于判断两个对象的id是否相等,==才是判断值是否相等 2.(建议23)for,while,和try语句后面都可以跟else语句,可以简化代码 3.(建议18) __init__.py模块可以写代码,import时只需要 import 包(文件夹) 4.(建议19)用import a 而不是 from a import b ,可以避免嵌套导入

编写高质量代码改善python程序91个建议学习01

编写高质量代码改善python程序91个建议学习 第一章 建议1:理解pythonic的相关概念 狭隘的理解:它是高级动态的脚本编程语言,拥有很多强大的库,是解释从上往下执行的 特点: 美胜丑,显胜隐,简胜杂,杂胜乱,平胜陡,疏胜密 python定义 #python排序 def quicksort(arr): less=[];greater=[] if len(arr)<=1: return arr pivot=arr.pop() for x in arr: if x<=pivot: less

Python 工匠:编写条件分支代码的技巧

序言 编写条件分支代码是编码过程中不可或缺的一部分. 如果用道路来做比喻,现实世界中的代码从来都不是一条笔直的高速公路,而更像是由无数个岔路口组成的某个市区地图.我们编码者就像是驾驶员,需要告诉我们的程序,下个路口需要往左还是往右. 编写优秀的条件分支代码非常重要,因为糟糕.复杂的分支处理非常容易让人困惑,从而降低代码质量.所以,这篇文章将会种重点谈谈在 Python 中编写分支代码应该注意的地方. Python 里的分支代码 Python 支持最为常见的 if/else 条件分支语句,不过它缺

Python :编写条件分支代码的技巧

『Python 工匠』是什么? 我一直觉得编程某种意义是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目. 在雕琢代码的过程中,有大工程:比如应该用什么架构.哪种设计模式.也有更多的小细节,比如何时使用异常(Exceptions).或怎么给变量起名.那些真正优秀的代码,正是由无数优秀的细节造就的. 序言 编写条件分支代码是编码过程中不可或缺的一部分. 如果用道路来做比喻,现实世界中的代码从来都不是一条笔直的高速公路,而更像是由无数个岔路口组成的某个市区地图.我们编码者就像

Python 编程语言要掌握的技能之一:编写条件分支代码的技巧

Python 里的分支代码 Python 支持最为常见的 if/else 条件分支语句,不过它缺少在其他编程语言中常见的 switch/case 语句. 除此之外,Python 还为 for/while 循环以及 try/except 语句提供了 else 分支,在一些特殊的场景下,它们可以大显身手. 下面我会从 最佳实践.常见技巧.常见陷阱 三个方面讲一下如果编写优秀的条件分支代码. 最佳实践 1. 避免多层分支嵌套 如果这篇文章只能删减成一句话就结束,那么那句话一定是“要竭尽所能的避免分支嵌

python ATM + 购物车

一.项目介绍 ATM + 购物商城程序其实是通过模拟银行ATM机功能以及电商平台<购物商城程序>功能的实现,将前面大部分所学的知识点串联起来, 更好的去巩固python基础.这也是在学习python这门语言的第一个程序. 项目需求如下: - 额度 15000或自定义 - 实现购物商城,买东西加入 购物车,调用信用卡接口结账 - 可以提现,手续费5% - 支持多账户登录 - 支持账户间转账 - 记录每月日常消费流水 - 提供还款接口 - ATM记录操作日志 - 提供管理接口,包括添加账户.用户额

python轻量级爬虫的编写

嗯...今天来分享一下如何使用python编写一个简单的网络爬虫.说到爬虫,这简直就是广大懒惰的程序员和宅男们的福音啊,一次编写,想要啥资源就能爬啥资源,高至各种学习资源,论文资料,低至各种图片小视频(...)等等...嗯...这里讲解了如何搭建一个简单爬虫的框架之后,会基于该框架编写一个栗子,该栗子代码会从python的百科页面开始,爬取各种百科页面信息并记录下来. 注意,这里的标题是<*轻量级爬虫*>,之所以说是轻量级,是因为这里只涉及到静态网页的解析,至于AJAX异步加载,JS脚本什么的

Zen Coding: 一种快速编写HTML/CSS代码的方法[Emmet]

译自:[Smashing Magazine](http://www.smashingmagazine.com/2009/11/21/zen-coding-a-new-way-to-write-html-code/)中文:[Zen Coding: 一种快速编写HTML/CSS代码的方法](http://www.qianduan.net/zen-coding-a-new-way-to-write-html-code.html) 请尊重版权,转载请注明来源! - - - - - - 在本文中我们将展示