运算符:
算数运算:
+ 加号 % 取余数
- 减号 ** 幂
* 乘号 / 除号
比较运算:
== 等于 != 不等于
<> 不等于 > 大于 >= 大于等于 < <=
赋值运算:
= 简单的赋值符号
+= 加法赋值符号 例:c+=a ==> c=c+a
-= 减法赋值符号 例:c-=a ==> c=c-a
*= 乘法赋值符号
/= 除法赋值符号
%= (取模)取余数赋值符号
**= 幂赋值符号
//= 取整数赋值符号
逻辑运算:
And
Or
not
成员运算:
in
Not in
身份运算:
is
Is not
二进制运算:
& and运算(逢二进一) 60 & 13 = 12
| or运算 60 | 13 = 61
^ 按位异或运算(与or相反,不同为1,相同为0) 60 ^ 13 = 49
~ 按位取反(0变1,1变0,有特殊算法,不用知道)
<< 左移
>> 右移
转换字符
\’ 输出’
\” 输出”
\a 响一声
\b 退格
\f 换页(在打印时)
\n 回车,在光标下一行
\r 换行,在光标上一行
\t 八个空格
\\ 输出\
三元运算
1 while True: 2 c = a if count>5 else b # 三元运算 3 count += 1 4 if count == 10: 5 break 6 print("c:",c)
列表
切片
1 names=["xiaoming","xiaohong","xiaolv","xiaozi"] 2 print(names[0:4]) #(左闭右开)包括0号,不包括4号 3 print(names[-1]) #倒着取、 4 print(names[0:-1]) 5 print(names[0:]) #全取 6 print(names[:4]) 7 print(names[0:-1:2]) #相隔切片,类似range 8 print(names[::2]) #全选可胜率0
追加
1 names=["xiaoming","xiaohong","xiaolv","xiaozi"] 2 names.append("xiaohei") #直接插在末尾 3 print(names) 4 names.insert(2,"xiaobai") #插在指定位置 5 print(names) 6 names[2] = "xiao blue" #替换原值 7 print(names)
删除
1 names=["xiaoming","xiaohong","xiaolv","xiaozi","xiaored","xiaoblue"] 2 3 names.remove("xiao blue") #按名字删除 4 5 del names[4] #删除指定位置 6 7 names.pop() #默认删除最后一个,输入数值既等同DEL
其他
1 names=["xiaoming","xiaohong","xiaolv","xiaozi","xiaohei","xiaobai","xiaoblue"] 2 3 names.index("xiaohong") #索引,查找目标位置 4 5 names.count("xiaoming") #查找数量 6 7 names.clear() #清空列表
1 names=["xiaoming","xiaohong","xiaolv","xiaozi"] 2 3 names.reverse() #反转 4 5 names.sort() #排序(特殊符号、数字、大写、小写)
1 names1=["xiaohong","xiaoli","xiaohei"] 2 3 names2=["##@","!!!","4444"] 4 5 names.extend(names2) #合并 6 7 del names2 #删除变量
浅copy与深copy
1 import copy 2 3 names=["xiaoming","xiaohong","xiaolv","xiaozi"] 4 5 names.insert(2,["O","X","L","g"]) #列表中可包含子列表 6 7 names2=copy.copy(names) #浅copy,最内层会被后面的变化所影响 8 9 names3=copy.deepcopy(names) #深copy只会copy之前的数据,不会被后来的变化所影响
字符串操作
1 name ="xing\t{plg}ptao" #\t默认空格数是8 2 3 name.capitalize() #首字母大写 4 5 name.count("x") #查询某字符数量 6 7 name.center(30,"-") 8 #一共打印30个字符,中间为name,不够的用-补上 9 10 name.ljust(50,"*") 11 #一共打印50个字符,不够在结尾用*补上 12 13 name.rjust(50,"_") 14 #一共答应50个字符,不够再开头加上 15 16 name.zfill(50) 17 #位数不够前头补0,一般用于16进制补0用 18 19 name.encode(encoding="utf-8") #转换成二进制 20 21 name.endswith("tao") #判断字符串以什么结尾 22 23 name.find("g") #索引,找不到字符会输出-1 24 25 name.rfind("p") #索引,找到最右边值的下标 26 27 name[7:8] #切片 28 29 name.format(plg="OXMLG") #格式化 30 31 name.format_map({'plg':'OXMLG'}) #字典形式的格式化 32 33 name.index("g") #索引,找不到字符会报错 34 35 "ma12".isalnum() #是否为阿拉伯字符(数字和字母) 36 37 "name".isalpha() #纯英文 38 39 "123".isdecimal() #十进制 40 41 "12".isdigit() #整数 42 43 "name".isidentifier() 44 #判断是不是一和合法的标识符(是不是合法的变量名字) 45 46 name.islower() #是不是小写 47 48 " ".isspace() #是不是空格 49 50 "My Name Is".istitle() #字符首字母都大写 51 52 "UUSSW".isupper() #是否都为大写 53 54 '+'.join(("1","2","3")) 55 #将字符串插在元组或列表中所有每两和值的中间 56 57 "ADDS".lower() #大写变小写 58 59 name.upper() #小写变大写 60 61 name.replace("n","7",10) #替换,第三个数字代表只替换前X个 62 63 "1+2+3+7".split('+') #把某个字符或空格当成分隔符,并形成列表 64 65 "1+2\n3+4".splitlines() #把换行当成分隔符,形成列表 66 67 name.startswith("i",1,10) #检测字符串开头字母是否正确,可切片 68 69 "sdaDSA111".swapcase() #大写变小写 70 71 "xing tao o x Lg".title() #开头字母大写
字典
1 info={ 2 "student1":"xingtao", 3 "student2":"suiqiaoli", 4 "student3":"fangfayong", 5 "student4":"lidongshen" 6 } 7 8 info["student1"] #查找 9 10 info.get("student5") #查找,没有不会报错 11 12 info["student1"]="tao xing" #替换值 13 14 info["student5"]="666" #添加键及值 15 16 del info["student5"] #删除 17 18 info.pop("student5") #删除 19 20 info.popitem() #随机删除一项 21 22 "student3" in info #判断是否存在键值
1 info={ 2 "student1":"xingtao", 3 "student2":"suiqiaoli", 4 "student3":"fangfayong", 5 "student4":"lidongshen" 6 } 7 8 b={"student1":"tao xing", 9 "student(5)":"123", 10 "student(6)":"567" 11 } 12 13 info.update(b) #合并,若建值交叉则更新,不交叉直接合并 14 15 info.items() #把字典变成列表
1 name ={ 2 "xingtao":{ 3 "xing":["x","i","n","g"], 4 "tao":["t","a","o"] 5 }, 6 "suiqiaoli":{ 7 "sui":["s","u","i"], 8 "qiao":["q","i","a","o"], 9 "li":["l","i"] 10 } 11 } 12 13 name["suiqiaoli"]["qiao"][3]="OOOOO" 14 #添加,若键值已存在,则顶替 15 16 name.values() 17 #输出所有值,不输出键 18 19 name.setdefault("fangfayong",{"fang":["f","a","n","g"],"fa":["f","a"],"yong":["y","o","n","g"]}) 20 #创建一个字典
低级购物车
商品列表
用户信息
1 #购物车 2 #1、商品信息存在文件里,想办法读出来变成列表形式 3 #2、可以添加、修改商品价格 4 #3、把商家的权限写成一个单独的程序 5 #4、信息被存储,已购商品、余额记录信息长时间留存、只有第一次启动需#要输入金额,之后自动检测金额还剩多少,买的东西都已经记录 6 with open("商品列表.txt","r",encoding="utf-8")as goods_file,\ 7 open("用户信息.txt","r+",encoding="utf-8")as user_file: 8 while True: 9 user_lists = [] # 用户清单 10 goods_lists = [] # 商品列表 11 12 13 def user_list(): # 生成用户清单 14 m = user_file.readline().strip("\n").split(',') 15 if not m == [""]: 16 user_lists.append(m) 17 return user_list() 18 19 20 user_list() 21 print(user_lists) 22 if user_lists == []: 23 user_money = input("please write your money:")#第一次输入钱 24 if not user_money.isdigit(): 25 print("money is wrong") 26 continue 27 user_money = int(user_money) 28 user_lists.insert(0, ["money:", user_money]) 29 user_file.write("money:,%s"%user_money) 30 else: 31 user_money=int(user_lists[0][1]) 32 33 def goods_list(): # 生成商品列表 34 a = goods_file.readline().strip('\n').split(',') 35 if not a == [""]: 36 goods_lists.append(a) 37 38 return goods_list() 39 40 41 goods_list() 42 43 for n, goods in enumerate(goods_lists): 44 print(n, goods[0], "price:", goods[1]) 45 choose = input("请输入要购买的商品编号:") # 输入商品编号 46 if choose.isdigit(): 47 choose = int(choose) 48 if choose > goods_lists.index(goods_lists[-1]) and choose < 0: 49 print("没有该商品") 50 continue 51 else: 52 print("请输入正确商品编号") 53 continue 54 55 if int(user_lists[0][1]) >= int(goods_lists[choose][1]): # 扣钱 56 user_money -= int(goods_lists[choose][1]) 57 user_lists[0][1]= user_money 58 user_lists.append(goods_lists[choose]) #写入列表中 59 print(user_lists) 60 break 61 62 else: 63 print("余额不足") 64 exit() 65 print(user_lists) 66 67 with open("用户信息.txt","w+",encoding="utf-8") as user_file: 68 for nember,user_goods in enumerate(user_lists): 69 if nember == 0: 70 user_file.write("%s,%s" % (user_goods[0], user_goods[1])) # 写入已购买 71 else: 72 user_file.write("\n%s,%s" % (user_goods[0], user_goods[1]))
1 with open("商品列表.txt","r",encoding="utf-8") as goods_file1: 2 goods_lists=[] #商品列表 3 while True: 4 def goods(): 5 goods_list = goods_file1.readline().strip("\n").split(",") 6 if not goods_list == [""]: 7 goods_lists.append(goods_list) 8 return goods() 9 10 11 goods() 12 print("------商品列表:------") 13 for nember, good in enumerate(goods_lists): 14 print(nember, good[0], "price:", good[1]) # 打印商品列表 15 user_do = input("修改、添加还是删除?") 16 if user_do == "修改": 17 user_do_x1 = input("修改商品名字还是价格?") 18 if user_do_x1 == "名字": 19 user_do_x1_1 = input("请输入商品序号:") 20 21 if user_do_x1_1.isdigit() and int(user_do_x1_1) >= 0 and \ 22 int(user_do_x1_1) <= goods_lists.index(goods_lists[-1]): 23 user_do_x1_1 = int(user_do_x1_1) 24 user_do_x1_2 = input("修改后名字:") 25 goods_lists[user_do_x1_1][0] = user_do_x1_2 26 break 27 else: 28 print("商品错误") 29 continue 30 elif user_do_x1 == "价格": 31 user_do_x1_1 = input("请输入商品序号:") 32 33 if user_do_x1_1.isdigit() and int(user_do_x1_1) >= 0 and \ 34 int(user_do_x1_1) <= goods_lists.index(goods_lists[-1]): 35 user_do_x1_1 = int(user_do_x1_1) 36 user_do_x1_2 = input("修改后价格:") 37 goods_lists[user_do_x1_1][1]=user_do_x1_2 38 break 39 else: 40 print("商品错误") 41 else: 42 print("执行错误") 43 continue 44 elif user_do == "添加": 45 user_do_t1 = input("请输入商品名称:") 46 user_do_t2 = input("请输入商品价格:") 47 if user_do_t2.isdigit: 48 goods_lists.append([user_do_t1,user_do_t2]) 49 break 50 else: 51 print("请输入正确的商品价格") 52 continue 53 elif user_do == "删除": 54 user_do_s1=input("请输入商品序号") 55 if user_do_s1.isdigit(): 56 user_do_s1=int(user_do_s1) 57 del goods_lists[user_do_s1] 58 break 59 else: 60 print("请输入正确的商品序号") 61 continue 62 else: 63 print("操作错误") 64 continue 65 print(goods_lists) 66 with open("商品列表.txt","w+",encoding="utf-8") as goods_file2: #写入文件 67 for good_2 in goods_lists: 68 if good_2 == goods_lists[-1]: 69 goods_file2.write("%s,%s"%(good_2[0],good_2[1])) #最后一件不换行 70 else: 71 goods_file2.write("%s,%s\n"%(good_2[0],good_2[1]))