运算符
一、结果为值
1)算数运算
a = 10 b = 20 print("a + b = %d" % (a + b)) print("a - b = %d" % (a - b)) print("a * b = %d" % (a * b)) print("a / b = %d" % (a / b)) print("a %% b = %d" % (a % b)) print("a ** b = %d" % (a ** b)) print("a // b = %d" % (a // b))
需要注意的是,在print百分号时,需要输入“%%”。
2)赋值运算
赋值运算与算数运算一一对应。
二、结果为布尔值
1)比较运算
2)逻辑运算
逻辑运算的顺序为:1、先执行()内的操作;2、之后从前往后进行逻辑运算。
3)成员运算
判断某一元素是否在元素集合中,一般与if、for、while用
数据类型
一、数字(int)
在Python3中只有整型(int),而在Python2中有整型(int)、长整型(long)等。
1、int():将字符串转换为数字
print(type(int("123")))
2、bit_length:当前数字以至少几位二进制表示
data = 9
print(data.bit_length())
二、字符串 str " "
1、capitalize():将首字母转换为大写,其余转换为小写,呈现为title的格式
2、casefold()、lower():将所有字母变小写,casefold()功能更强,可以将许多未知的元素变小写
3、center()、ljust()、rjust、zfill:设置字符串参数
4、count():统计子序列出现的次数
5、startwith()、endwith():判断是否以...结尾,返回True或False
s = "hello World " print(s.capitalize()) #>>>Hello world print(s.casefold()) #>>>hello world print(s.lower()) #>>>hello world print(s.center(20)) #>>> hello World print(s.zfill(8)) #>>>hello World print(s.count("o")) #>>>2 print(s.startswith("h")) #>>>True print(s.endswith("h")) #>>>False
6、find():从前往后找,找到第一个后返回索引值,未找到返回-1
7、format():格式化,将字符串中的占位符替换为指定目标
8、format_map():格式化,字典
9、index():同find(),未找到时报错
10、isalnum():判断字符串是否只包含数字和字母
s = "hello World123" print(s.find("o")) #>>>4 print("i am {}".format("Grace")) #>>>i am Grace print("i am {name}".format_map({"name":"Grace"})) #>>>i am Grace print(s.index("o")) #>>>4 print(s.isalnum()) #>>>False
11、expandtabs():断句
12、isalpha():是否只包含字母和汉字
13、isdecimal()、isdigit()、isnumeric():是否只包含数字
14、isprintable():是否存在不可显示的字符(e.g.\n、\t)
15、isspace():判断是否全为空格
s = "email\taddress\tworkpalce" print(s.expandtabs(20)) #>>>email address workpalce print(s.isalpha()) #>>>False print(s.isdecimal()) #>>>False print(s.isprintable()) #>>>False print(s.isspace()) #>>>False
expandtabs()与\t连用时可用于制表
16、istitle():判断是否符合title格式
17、join():将字符串中的每一个元素按照指定分隔符进行拼接
18、islower()、isupper():判断是都全部为小写/大写
19:strip()、lstrip()、rstrip():去除空格
20、maketrans()、translate():对应关系转换
s = "Helloworld " print(s.istitle()) #>>>True print(" ".join(s)) #>>>H e l l o w o r l d print(s.islower()) #>>>False print(s.strip()) #>>>Helloworld v = str.maketrans("o","1") print(s.translate(v)) #>>>Hell1w1rld
21、partition():按照分隔元素分割成3份
22、split()、rsplit():切割
23、splitlines():根据布尔值判断是否保留换行符
24:swapcase():大小写转换
25、isidentifier():判断字符串是否符合数字、字母、下划线的标准
26、replcce():替换
s = "Helloworld \n" print(s.partition("o")) #>>>('Hell', 'o', 'world \n') print(s.split("l")) #>>>['He', '', 'owor', 'd \n'] print(s.splitlines()) #>>>['Helloworld '] print(s.swapcase()) #>>>hELLOWORLD print(s.isidentifier()) #>>>False print(s.replace("l","L")) #>>>HeLLoworLd
三、列表 list [ ]
列表可以被修改,列表的元素可以为任意类型。
1、append():在原先列表的最后追加
2、clear():清除
3、copy():浅拷贝
4、count():计数
5、extend():扩展,通过内部循环把元素加到列表中
s = [1,4,6,3,2] s.append("abc") print(s) #>>>[1, 4, 6, 3, 2, 'abc'] s.clear() print(s) #>>>[] s = [1,4,6,3,2] print(s.copy()) #>>>[1, 4, 6, 3, 2] s.extend("abc") print(s) #>>>[1, 4, 6, 3, 2, 'a', 'b', 'c']
append和extend的区别在于:append将()内作为一个整体添加,而extend将()中每个元素用for循环添加
6、index():查找
7、insert():指定索引位插入
8、pop():默认删除最后一个元素,并返回删除值,可通过指定索引删除
9、remove():删除指定值,左边优先
10、reverse():将当前列表反转
11:、sort():从小到大排序
s = [1,4,6,3,2,6] s.insert(0,"abc") print(s) #>>>['abc', 1, 4, 6, 3, 2, 6] print(s.pop(0)) #>>>abc print(s) #>>>[1, 4, 6, 3, 2, 6] s.remove(6) print(s) #>>>[1, 4, 3, 2, 6] s.sort(reverse=True) print(s) #>>>[6, 4, 3, 2, 1]
三、元组 tuple ( )
元组为不可修改的列表,具体方法与列表相似。
一般写元组时,在最后多加一个",",便于区分。
四、字典 dict { }
{key1:value1,key2:value2...}
字典是无序的,value可以为任意类型的元素。
取值:根据key值找value,相当于索引
删除:del
for循环:keys()、values()、items()
1、clear():
2、copy():
3、fromkeys():根据序列创造字典,并指定统一值
4、get():根据key取value值
5、keys()、values()、items():取出所有的key/value/键值对
6、pop():根据key删除,并返回value值
7、setdefault():设置值,非重点,忽略
8、update():更新。若已存在,则覆盖,若不存在,则更新
dic = dict.fromkeys(["k1","k2","k3"],123) print(dic) #>>>{'k1': 123, 'k2': 123, 'k3': 123} print(dic.items()) #>>>dict_items([('k1', 123), ('k2', 123), ('k3', 123)]) print(dic.get("k1")) #>>>123 print(dic.pop("k1")) #>>>123 print(dic) #>>>{'k2': 123, 'k3': 123} dic.update({"k4":4}) print(dic) #>>>{'k2': 123, 'k3': 123, 'k4': 4}
补充
enumerate:为一个可迭代的对象添加序号。默认编号从0开始,可以设置从1开始。
li = ["手机", "电脑", '鼠标垫', '游艇'] for k, i in enumerate(li,1): print(k,i) 1 手机 2 电脑 3 鼠标垫 4 游艇
课后习题
一、元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
li = [11,22,33,44,55,66,77,88,99,90,100] li1 = [] li2 = [] dic = {} for i in li: if i <= 66: li1.append(i) else: li2.append(i) dic.update({'k1':li1,'k2':li2}) print(dic)
二、查找
查找元素,移动空格,并查找以 a或A开头 并且以 c 结尾的所有元素。
li = ["alec", " aric", "Alex", "Tony", "rain"]
tu = ("alec", " aric", "Alex", "Tony", "rain")
dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"}
li = ["alec", " aric", "Alex", "Tony", "rain"] tu = ("alec", " aric", "Alex", "Tony", "rain") dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"} li1=[] tu1=[] dic1=[] for i in li: if i.strip().capitalize().startswith('A') and i.strip().endswith('c'): li1.append(i) print(li1) for i in tu: if i.strip().capitalize().startswith('A') and i.strip().endswith('c'): tu1.append(i) print(tu1) for i in dic: if dic[i].strip().capitalize().startswith('A') and dic[i].strip().endswith('c'): dic1.append(dic[i]) print(dic1)
三、输出商品列表,用户输入序号,显示用户选中的商品
商品 li = ["手机", "电脑", '鼠标垫', '游艇']
li = ["手机", "电脑", '鼠标垫', '游艇'] for i,v in enumerate(li,1): print (i,v) num = input("请输入商品序号:") if num.isdigit(): if int(num) - 1 < len(li): print("您选择的商品为%s" % li[int(num)-1]) else: print("不存在该商品序号") else: print("请输入数字!")
四、购物车
功能要求:
-
-
要求用户输入总资产,例如:2000
-
显示商品列表,让用户根据序号选择商品,加入购物车
-
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
-
附加:可充值、某商品移除购物车
-
具体分析如下:
资产输入
显示商品列表
购买商品过程:
1、选择商品(加入购物车)
1)继续添加
2)返回上一级
2、购买
1)余额充足,购买成功
2)余额不足
a)充值
b)移除商品
c)返回上一级
3、取消,返回上一级
goods_name = ["手机", "电脑", '鼠标垫', '游艇'] goods = [ {'手机': 1000}, {'电脑': 1500}, {'鼠标垫': 50}, {'游艇': 5000} ] shopping_cart = [ {'手机': 0}, {'电脑': 0}, {'鼠标垫': 0}, {'游艇': 0} ] cost = 0 total = int(input("请输入您的总资产:")) while True: opration = int(input("请选择您的操作:\n1、选择商品加入购物车\n2、购买\n3、离开\n>>>")) if opration == 1: # 商品加入购物车 for i, v in enumerate(goods_name, 1): print(i, v) No = input("请输入您选择的商品序号:") num = int(input("请输入您选择的商品数量:")) if No.isdigit(): if int(No) - 1 < len(goods_name): shopping_cart[int(No) - 1][goods_name[int(No) - 1]] += num for i in range(len(goods_name)): cost += goods[i][goods_name[i]] * shopping_cart[i][goods_name[i]] print("您已成功将%s添加进购物车" % goods_name[int(No) - 1]) else: print("不存在该商品序号") else: print("请输入数字!") continue elif opration == 2: if cost <= total: total = total - cost cost = 0 for i in range(len(goods_name)): shopping_cart[i][goods_name[i]] = 0 print("购买成功,您的余额为%s" % total) else: print("余额不足,请充值或移除某商品!") choice = int(input("1、充值\n2、移除商品\n3、离开\n>>>")) if choice == 1: # 充值 while True: recharge = input("您充值的金额为:") if recharge.isdigit(): total += int(recharge) print("您充值后的余额为%s" % total) break else: print("请输入数字!") elif choice ==2: # 移除商品 while True: No_remove = input("请输入您要删除的商品序号:") num_remove = int(input("请输入要删除的商品数量:")) if No.isdigit(): if num_remove <= shopping_cart[int(No_remove)-1][goods_name[int(No_remove)-1]]: shopping_cart[int(No_remove)-1][goods_name[int(No_remove)-1]] -= num_remove print("您已成功将%s移除" % goods_name[int(No) - 1]) cost = 0 for i in range(len(goods_name)): cost += goods[i][goods_name[i]] * shopping_cart[i][goods_name[i]] break else: print("您的购物车中没有这么多的商品数量,请重新输入!") else: print("请输入数字!") continue elif choice == 3: continue else: print("输入错误,请重新输入!") elif opration == 3: break else: print("输入错误,请重新输入!")
五、用户交互,显示省市县三级联动的选择
具体分析如下:
省(一级):
1)市(二级)
a)县(三级)
b)返回上一级
2)返回上一级
dic = { "浙江": { "杭州": ["建德", "桐庐", "淳安"], "绍兴": ["越城", "柯桥", "嵊州"], }, "湖南": { "长沙":["a","b","c"], "株洲":["d","e","f"] }, "湖北": { "武汉":["g","h","i"], "黄石":["j","k","l"] } } Flag = 1 Flag1 = 1 while Flag == 1: for i in dic.keys(): print(i) province = input("您选择的省份为:") if province in dic.keys(): #获得省的信息 print("您选择的省份为:%s" % province) choice1 = int(input("\n1、查看市级信息\n2、返回\n>>>")) while Flag1 == 1: if choice1 == 1: for i in dic[province].keys(): print(i) city = input("您选择的市为:") if city in dic[province].keys(): print("您选择的市为:%s" % city) choice2 = int(input("\n1、查看县级信息\n2、返回\n>>>")) while True: if choice2 == 1: for i in dic[province][city]: print(i) county = input("您选择的县为:") if county in dic[province][city]: print("您最终的位置为:%s省%s市%s县" % (province,city,county)) Flag = -1 Flag1 = -1 break else: print("您的输入内容不符,请重新输入!") continue elif choice2 == 2: break else: print("您的输入内容不符,请重新输入!") continue elif choice1 == 2: break else: print("您的输入内容不符,请重新输入!") continue else: print("你所输入的省份不存在,请重新输入!") continue