码迷,mamicode.com
首页 > 其他好文 > 详细

知识点随笔 Week 3

时间:2018-07-08 23:16:07      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:新建   join   取数据   北京   pca   ==   orm   挪威   tle   

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


 

知识点随笔 Week 3

标签:新建   join   取数据   北京   pca   ==   orm   挪威   tle   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!