知识点随笔 Week 3

本周学习简单的购物车、string用法及字典应用

第一次跟写了这么多code 很有趣

购物车部分:

‘‘‘购物车程序1.启动程序用户输入工资>>>打印商品列表2.允许用户根据商品编号购买商品3.用户选择商品后,检测余额是否足够(够扣款,不够提醒)4.可随时退出,推出时打印已购买的商品和余额‘‘‘

product_list = [    ("macbook",13000),    ("iphone",6000),    ("kindle",800),    ("bike",1200),    ("car",50000),    ("pen",350),    ("coffee",50)]  #商品列表shoping_list = []  #定义空的购物车列表salary = input("Input your salary:")  #用户输入工资if salary.isdigit():  #判断输入的是否为整数    salary = int(salary)   #转换为数字类型    while True:        ‘‘‘for item in product_list:            print(product_list.index(item),item)        ‘‘‘  #打印列表下标>>>方法一        for index,item in enumerate(product_list):  #方法二:用enumerate取出下标,取出元组            print(index,item)        user_choice = input("选择您需要的商品>>>:")        if user_choice.isdigit():  #判断输入的是否为整数            user_choice = int(user_choice)            if user_choice < len(product_list) and user_choice >=0:  #判断输入的数字是否符合列表,len()>>判断列表长度                price_item = product_list[user_choice]  #获取商品价格                if price_item[1] <= salary:   #价格小于用户工资>>>买得起的情况                    shoping_list.append(price_item)  #追加商品进入购物车列表                    salary -= price_item[1]                    print("Added %s into shoping cart,your current balance is \033[31;1m%s\033[0m" %(price_item,salary))                    #高亮写法 \033[31;1m%s\033[0m   31>>>红色 41>>>背景红色 32>>>绿色                else:                    print("\033[41;1m你的余额只剩%s,无法购买\033[0m" %salary)  #余额不足的情况            else:                print("product code [%s] is not exist!" %user_choice)  #输入的数字非列表数量        elif user_choice == "q":            print("-------shopping list-------")            for p in shoping_list:    #退出打印购物车列表                print(p)            print("Your current balance:",salary)     #打印余额            exit()  #退出else:    print("您的输入有误")

--------------------------------------------------------------------------------------------------------string用法
#字符串可查,修改后则为新的元素

name = "my \tname is {name},and i am {age} years old"  #\t tab键

print(name.capitalize())  #首字母大写print(name.count("n"))   #统计"n"的个数print(name.center(60,"-"))  #60个字符长度,中心为name其余用"-"补齐print(name.encode())  #转换为二进制print(name.endswith("d"))  #判断是否以"go"结尾print(name.expandtabs(tabsize=20))  #\t转换为20个空格print(name.find("s"))  #查找字符的索引print(name[name.find("is"):20])  #引申:字符的切片至:20结束>>>(:])切片至结尾print(name.format(name="mango",age=7))  #格式化输出print(name.format_map({"name":"mango","age":7}))  #格式化输出(字典写法)print("ab1122".isalnum())   #判断是否为阿拉伯字符(数字或字母,不含特殊字符)print("ab1122".isalpha())   #判断是否为英文字符print("123".isdecimal())  #判断是否为十进制print("1221.2".isdigit())   #判断是否为整数print("AC123".isidentifier())  #判断是否为一个合法的变量名print("ccS".islower())  #判断是否全为小写print("123".isnumeric())  #判断是否为纯数字print("12  3".isspace())   #判断是否全为空格print("I Am Mango".istitle())  #判断所有首字符是否大写print("123".isprintable())   #判断是否可以打印(用于tty、drive file)print("SSc".isupper())  #判断是否全为大写print("==".join(["1","a","1","b"]))  #join用法:用==分隔列表内字符print(name.ljust(55,"*"))   #55个字符长度,不足的用*向左(后)补齐print(name.rjust(55,"="))   #55个字符长度,不足的用=向右(前)补齐print("AAvv".lower())   #变小写print("ccTV".upper())   #变大写print("\n  == AADD  == \n".lstrip())  #去左边的空格和回车   引申:\n>>>换行print("\n  == AADD  == \n".rstrip())  #去右边的空格和回车print("\n  == AADD  == \n".strip())   #去两边的空格和回车

eg = str.maketrans("abcdefg","1234567")   #前后一一对应print("is orange".translate(eg)) #用对应值替换字符内容

print("a mango".replace("a","??",2))  #替换("原内容","新内容","替换数量")print("a mango".rfind("a"))   #从左开始查找,返回最右边"a"的下标print("i am mango".split("a"))   #按"需求"生成列表,分隔符会被替换print("1+2+3+4+5".split("+"))   #引申:常用与提取字符print("1+2\n3+4".splitlines())  #按换行符划分列表 等同于print("1+2\n3+4".split("\n")) 引申:根据不同系统识别换行?print("I Am Mango".swapcase())  #大小写相互替换print("i am mango".title())  #每个首字符大写print(name.zfill(50))   #长度50,不足用0补足  引申:十六进制补位
--------------------------------------------------------------------------------------------------------字典
#字典索引key-value#字典的特性:字典是无序的(没有下标)

info_a = {    "stu101":"ABC",    "stu102":"DEF",    "stu103":"GHI",}print(info_a)info_a["stu101"] = "柚子皮"  #修改信息print(info_a)info_a["stu104"] = "JKL"  #增加信息print(info_a)

#删除del info_a["stu104"]  #删除 字典全删>>>del info# info.pop("stu103")  删除方法二# info.popitem()  随机删除print(info_a)

#查找print(info_a["stu101"])   #通过k值取字典内的数据print(info_a.get("stu105"))  #安全获取数据的方法(有数据输出,无数据none)print("stu1104" in info_a)  #判断字典是否存在该数据

#其他用法print(info_a.values())  #打印所有值print(info_a.keys())   #打印所有索引print(info_a.items())   #把字典打印成列表

info_b = {    "stu102":"皮皮柚",    1:3,    2:7}info_a.update(info_b)    #交叉k值的替换,无交叉新建print(info_a)

#多级字典嵌套electronic_product = {    "HEA":{        "TV":["电视机","sony的最好"],        "AirC":["空调","夏天必备单品"],        "frige":["冰箱","四季必备"]    },    "phone":{        "iphone":["触屏手机","活人必备"]    },    "computer":{        "NoteBook":["笔记本电脑","携带方便"]    }

}   #k尽量避免写中文(或因编码不同导致无法读取)print(electronic_product)

#改electronic_product["computer"]["NoteBook"][1] = "轻薄本携带方便"print(electronic_product)

electronic_product.setdefault("peripheral",{"Keyboard":["键盘","中庸红轴"]})  #检索是否有存在k值>>>若无则新增k和value>>>若存在则不改变print(electronic_product)

a = dict.fromkeys([1,2,3],[9,{"name":"AA"},"GOOD"])   #初始化新的字典print(a)a[2][1]["name"] = "aa"   #fromkeys创建的字典一旦修改则全改,无法单独修改其中一个k值的数据print(a)

#循环写法info_c = {    "1":"A",    "2":"D",    "3":"G",}#方法一:推荐for i in info_c:    print(i)    #打印k写法for i in info_c:    print(i,info_c[i])    #打印value写法#方法二:少量可用for k,v in info_c.items():    print(k,v)
--------------------------------------------------------------------------------------------------------
三级菜单实例(字典用法)
menu = {    "亚洲":{        "东亚":{            "日本":{"东京","大阪"},            "韩国":{"首尔","釜山"},            "中国":{"北京","上海"}        },        "东南亚":{            "泰国":{"曼谷","清迈"},            "柬埔寨":{"吴哥窟","金边"},            "越南":{"胡志明","岘港"}        },        "西亚":{            "伊朗":{"德黑兰","马什哈德"},            "沙特":{"利雅得","吉达"},            "卡塔尔":{"多哈","姆塞义德"},        },    },    "美洲":{        "南美洲":{            "巴西":{"里约热内卢","巴西利亚"},            "阿根廷":{"布宜诺斯艾利斯","罗萨里奥"},            "乌拉圭":{"蒙得维的亚","梅洛"},        },        "北美洲":{            "加拿大":{"蒙特利尔","温哥华"},            "美国":{"华盛顿","洛杉矶"},            "古巴":{"哈瓦那","圣地亚哥"},        },    },    "欧洲":{        "北欧":{            "芬兰":{"坦佩雷","赫尔辛基"},            "冰岛":{"雷克雅未克","维克"},            "挪威":{"奥斯陆","卑尔根"},        },        "中欧":{            "捷克": {"布拉格", "布尔诺"},            "德国": {"不莱梅", "美因茨"},            "奥地利": {"维也纳", "林茨"},        },        "西欧":{            "英国": {"伦敦", "曼彻斯特"},            "荷兰": {"阿姆斯特丹", "莱顿"},            "法国": {"巴黎", "里昂"},        },    },}

exit_flag = Falsewhile not exit_flag:   #等同于while True    for i in menu:        print(i)    #第一层    choice = input("选择进入1>>>:")    if choice in menu:        while not exit_flag:            for i2 in menu[choice]:                print("\t",i2)   #第二层            choice2 = input("选择进入2(按b返回)>>>:")            if choice2 in menu[choice]:                while not exit_flag:                    for i3 in menu[choice][choice2]:                        print("\t\t",i3)  #第三层                    choice3 = input("选择进入4(按b返回)>>>:")                    if choice3 in menu[choice][choice2]:                        for i4 in menu[choice][choice2][choice3]:                            print("\t\t",i4)                        choice4 = input("最底层,按b返回<<<<")                        if choice4 == "b":                            pass  #什么都不做,占位符                        elif choice4 == "q":                            exit_flag = True  #退出                    if choice3 == "b":                        break                    elif choice3 == "q":                        exit_flag = True            if choice2 == "b":                break            elif choice2 == "q":                exit_flag = True

 

原文地址:https://www.cnblogs.com/mangoii/p/9281458.html

时间: 2024-11-02 13:54:14

知识点随笔 Week 3的相关文章

Objective-C知识点随笔

//判断对象是否实现某个方法 [对象名 responseToSelector:@selector(方法名)] //判断对象是否遵守某个协议 [对象名 conformsToProtocol:@protocol(方法名)]

知识点随笔001

//想弹出</script>标签字符串,浏览器会误解JS代码已结束<script type="text/javascript"> alert('</script>'); </script> //解决方法一:把字符串分成两个部分,通过连接符“+”来连接<script type="text/javascript">    alert('</scr'+'ipt>');</script> /

python-----变量和简单数据类型

变量一般用小写,官方建议下划线比如ljy_book,常量一般用大写 一.字符串语法 字符串可以用单引号或者双引号引用1.输出字符串message="sadfsdf"print(message.title()) #首字母大写print(message.upper()) #全部大写print(message.lower()) #全部小写 2.拼接字符串 message="go home"user="1223"name="lisan"

一些零碎小知识点积累随笔

工作学习期间的一些零碎小知识点积累 1.蜂鸣器 1)有源蜂鸣器,这里的有源不是指电源的"源",而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路,一通电就会发声: 2)无源蜂鸣器则没有自带震荡电路,必须外部提供 2~5Khz 左右的方波驱动,才能发声. 2.Altium Designer Winter 9 1)加载库 a.加载库,在Libraries面板上点击Libraries按钮或者选择菜单Design-->Add/Remove Library,这样可使用的库就显示在对话框中.

深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-01-CNN基础知识点

第一天<CNN基础知识点>From:Convolutional Neural Networks (LeNet) 神经认知机. CNN的灵感来源在诸多论文中已经讲得很全面了,就是伟大的生物发现Receptive Field(感受野细胞).根据这个概念提出了神经认知机.它的主要作用就是Recept部分图像信息(或特征),然后通过分层递交相连,将各个局部特征组合成整个图像特征. 需要仔细阅读的论文包括: (1) 第一篇关于感受野功能的论文Receptive fields and functional

linux知识点总结与随笔(关注linux爱好者公众号的一些笔记)

sysdig工具,可以有strace ,tcpdump,lsof的功能. 前台任务与后台任务,知识点:test.sh &,Ctrl+z,bg,shopt grep |huponexit,disown,nohup test.sh &,,screen与tmux, 或者用init(systemd,这是一个改进版本的init)来使这个进程来成为守护进程.

多线程随笔知识点总结3

pthread演练 1.基本概念 pthread是POSIX多线程开发框架,是跨平台的C语言框架,在苹果的头文件中并没有太多的注释 2.演练 #import <pthread.h> // 创建线程,并且在线程中执行 demo 函数 - (void)pthreadDemo { /** 参数: 1> 指向线程标识符的指针,C 语言中类型的结尾通常 _t/Ref,而且不需要使用 * 2> 用来设置线程属性 3> 新建立的线程执行代码的函数 4> 运行函数的参数 返回值: -

关于最近一些问题和知识点的回顾的随笔

1.看代码时发现了JQuery的end()方法:该方法能够结束JQuery命令链中当前的筛选操作,并将匹配元素集还原为原本的状态.JQuery文档中是这么定义的:JQuery回到最近的一个“破坏性”对象之前,即将匹配的元素列表还原为前一次的状态. 比如,$("p").find("span").end().css("border", "2px red solid"); 这里就是先找到p下的span元素,然后调用end(),再返回

多线程随笔知识点总结2

多线程原理 1.使用多线程目的:将耗时操作放在后台去执行,待执行完成后,通知主线程更新UI 2.原理: 单核CPU:同一时间,CPU只能处理一个线程,换而言之,在同一时间内只有一个线程在执行 多线程同时执行:CPU快速的在多个线程间的切换;CPU调度线程的时间足够快,就造成了多线程同时执行的效果 如果线程非常多的时候:CPU会在N个线程之间切换,消耗大量的CPU资源,每一条线程调度的次数会降低,线程的执行效率也会降低 3.多线程的优缺点 优点:可以适当提高程序的执行效率;提高资源的利用率(CPU