本周学习简单的购物车、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