1 # -*- coding:utf-8 -*- 2 # Author:Sure Feng 3 4 # print(-6 or 2 > 1) # -6 5 # print(6 and 2 > 1) # True 6 # print(not 9) # False 7 # 8 # while -9.8: 9 # print("9") 10 # break 11 12 13 # print("====练习5、求1-2+3-4+5 ... 99中除88之外的所有数的和====") 14 # t9 = 0 15 # count = 0 16 # while t9 < 99: 17 # t9 += 1 18 # if t9 == 88: 19 # continue 20 # elif t9 % 2 == 0: 21 # count = count - t9 22 # else: 23 # count = count + t9 24 # else: 25 # print(count) 26 27 # v = 8 28 # d = v.bit_length() 29 # print(d) 30 31 32 # if -9: 33 # print("ok") 34 # else: 35 # print("NG") 36 37 38 # str = "我爱北京天安门" 39 # print(str[0]) 40 # print(str[1]) 41 # print(str[2]) 42 # print(str[3]) 43 # print(str[4]) 44 # a1="dqsddsfs" 45 # ret2 = a1.center(20,"*") 46 # print(ret2) 47 48 # #split 以什么分割,最终形成一个列表此列表不含有这个分割的元素。 49 # ret9 = 'title,Tilte,atre,'.split('t',1) 50 # print(ret9) 51 # ret91 = 'title,Tilte,atre,'.rsplit('t',1) 52 # print(ret91) 53 54 # msg="abc DEF ghI" 55 # print(msg.title()) 56 57 # #format的三种玩法 格式化输出 58 # print('{} {} {}'.format('egon',18,'male')) 59 # print('{1} {0} {1}'.format('egon',18,'male')) 60 # print('{name} {age} {sex}'.format(sex='male',name='egon',age=18)) 61 62 # res='{} {} {}'.format('egon',18,'male') 63 # res='{1} {0} {1}'.format('egon',18,'male') 64 # res='{name} {age} {sex}'.format(sex='male',name='egon',age=18) 65 66 67 # #strip 68 # name='*egon**' 69 # print(name.strip('*')) 70 # print(name.lstrip('*')) 71 # print(name.rstrip('*')) 72 73 74 #replace 75 # name='alex say :i have onealex tesla,my name is alex' 76 # print(name.replace('alex','SB',2)) 77 78 # name='abcafjjdaabcjdfajaabcjejiafj' 79 # print(name.replace('abc','***',2)) 80 81 # li = [1,'a','b',2,3,'a'] 82 # li.insert(0,55) #按照索引去增加 83 # print(li) 84 # 85 # li.append('aaa') #增加到最后 86 # li.append([1,2,3]) #增加到最后 87 # print(li) 88 # 89 # li.extend(['q,a,w']) #迭代的去增 90 # print(li) 91 # li.extend(['q,a,w','aaa']) 92 # print(li) 93 # li.extend('a') 94 # print(li) 95 # li.extend('abc') 96 # print(li) 97 # li.extend('a,b,c') 98 # print(li) 99 100 li = [1,'m','b',2,3,'a'] 101 # l1 = li.pop(1) #按照位置去删除,返回去除成功的值 102 # print(l1) 103 # 104 # del li[1:3] #按照位置去删除,也可切片删除,没有返回值。 105 # print(li) 106 107 # li.remove(1) #按照元素去删除一个 108 # print(li) 109 110 # li.clear() #清空列表 111 112 # # 改 113 # li = [1,'a','b',2,3,'a'] 114 # li[1] = 'dfasdfas' 115 # print(li) 116 # li[1:4] = ['a','b'] 117 # print(li) 118 119 # #增 120 # d = {} 121 # d['s'] = [1,2,3] # dic[key] = value , key一定是不可变对象 122 # print(d) #{'s': [1, 2, 3]} 123 # d.setdefault('o') #在字典中添加键值对,如果只有键那对应的值是none 124 # print(d) #{'s': [1, 2, 3], 'o': None} 125 # d.setdefault(4,'s') #在字典中添加键值对 126 # print(d) #{'s': [1, 2, 3], 'o': None, 4: 's'} 127 # d.setdefault(4,'ww')#如果原字典中存在设置的键值对,则他不会更改或者覆盖 128 # print(d) #{'s': [1, 2, 3], 'o': None, 4: 's'} 129 130 131 # dic['li'] = ["a","b","c"] 132 # print(dic) 133 # # setdefault 在字典中添加键值对,如果只有键那对应的值是none,但是如果原字典中存在设置的键值对,则他不会更改或者覆盖。 134 # dic.setdefault('k','v') 135 # print(dic) # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'} 136 # dic.setdefault('k','v1') # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'} 137 # print(dic) 138 139 # d = {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'} 140 # dic_pop = d.pop('a','没有时的返回值') # pop根据key删除键值对,并返回对应的值,如果没有key则返回默认返回值 141 # print(dic_pop) 142 # del d["name"] # 没有返回值。 143 # print(d) 144 # 145 # dic_pop1 = d.popitem() # 随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回 146 # print(dic_pop1) # ('name','jin') 147 # print(d) 148 # 149 # dic_clear = d.clear() # 清空字典,返回值为None 150 # print(d,dic_clear) # {} None 151 152 # d = {} 153 # d['s'] = [1,2,3] # dic[key] = value , key一定是不可变对象 154 # print(d) 155 # d['s'][1]='ut' 156 # print(d) 157 158 159 # dic = {"name":"jin","age":18,"sex":"male", 'k':[1,2,3]} 160 # dic2 = {"name":"alex","weight":75} 161 # dic.update(dic2)# 将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中 162 # print(dic) #{'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75} 163 # dic['name'] = 'sure' 164 # dic['l'][1] = 'dfa' 165 # print(dic) #{'name': 'sure', 'age': 18, 'sex': 'male', 'weight': 75} 166 167 168 # item = dic.items() 169 # print(item,type(item)) # dict_items([('name', 'jin'), ('sex', 'male'), ('age', 18)]) <class 'dict_items'> 170 # # 这个类型就是dict_items类型,可迭代的 171 # 172 # keys = dic.keys() 173 # print(keys,type(keys)) # dict_keys(['sex', 'age', 'name']) <class 'dict_keys'> 174 # 175 # values = dic.values() 176 # print(values,type(values)) # dict_values(['male', 18, 'jin']) <class 'dict_values'> 同上 177 178 # for i in enumerate('fjalfjadlfjla'): 179 # print(i) #(0, 'f') (1, 'j') ... 180 # for i, j in enumerate('fjalfjadlfjla',4): 181 # print(i,j) #4 f 5 j ... 182 183 # for i in range(2, 10, 2): 184 # print(i) # 2 4 6 8 185 186 name = input("name:") 187 password = int(input("password:")) 188 dic = {'s':[1, 3]} 189 190 while True: 191 if name in dic: 192 my_password = dic[name][0] 193 count = dic[name][1] 194 # password = int(input("password:")) 195 if password == my_password: 196 print("登录成功!") 197 dic[name][1] = 3 198 break 199 else: 200 if count >1: 201 print(count) 202 count -= 1 203 dic[name][1] = count # 调了很久的bug,没赋值啊 204 print(count) 205 print("密码错误,您还可尝试%d次" % count) 206 password = int(input("password:")) 207 else: 208 print("密码错误次数超3次,账户已被锁定") 209 break 210 else: 211 dic[name] = password 212 print("登录成功") 213 break
1 # Author:Sure Feng 2 3 4 ''' 5 从新出发,希望这次能一学到底~~ 6 把吸收到的、当时的理解定时输出,不怕失误,持续改进 7 8 9 计算机基础小知识: 10 CPU:运行机器码文件,相当于人类大脑,用于计算 11 内存:暂存数据的地方,成本高断电数据即消失。如2G(公司的电脑)、4G(现在的电脑)、8G、16G、32G 12 硬盘:永久存储数据的地方 13 操作系统:运行程序时,把相应机器码放入内存,CPU执行 14 应用程序,就是应用程序 15 16 17 一、Python的初步了解 18 Python他爹: 19 吉多·范罗苏姆(Guido van Rossum),中文名龟叔。Python这门语言是他在一个无聊的 20 圣诞节打发时间写出来的。(不禁感叹,天才啊~~自能能在半年学会就感谢上苍了)。 21 22 Python定位:优美、清晰、简单。2017年7月的TIOBE排行榜第四 23 24 Python的主要应用: 25 数据爬虫&分析、金融量化(前两项是学习Python的动力,投资的利器)、人工智能&科学运算、WEB开发、 26 图形GUI、系统运维。全球各大网站的应用(知乎、豆瓣、谷歌等) 27 Python发展史中的重要节点2008,同时推出Python2.6和Python3.0。November 2014宣布Python2.7版本将刚在 28 2020年停止支持。(当初还纠结是学2.7还是3.5。。。) 29 30 为什么推出Python3? 31 Python2源码重复率高,不规范,与Python当初定位不相符(优美、清晰、简单),顾创建了Python3。 32 33 Python2和3是不兼容的,体现在很多方面: 34 1、默认编码:Python2是ascii码,Python3是utf-8。(解释器在加载 .py 文件中的代码时,会对内容进行编码) 35 编码乱码问题:在首行注明:-*- coding:utf-8 -*- 36 ASCII码:最早的一套基于拉丁字母的电脑编码,用8位来表示(一个字节),最多能表示2**8 = 256个符号 37 Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。最少由16位来表示(2个字节),即:2^16 = 65536 38 UTF-8,Unicode的压缩和优化,ascii码(1个字节)、欧洲(2个字节),东亚(3个字节) 39 2、(后续补上) 40 41 Python是一种动态的解释型强类型语言。在命令行下运行python就是启动CPython解释器。 42 人类与机器间语言不一样,人类的语言()中文、英文等),机器CPU执行的语言(二进制文件)。 43 编译型语言(开发效率低,不能跨平台,运行速度快),c、c++ 44 人能读懂的代码→编译,获的机器码(如xxx.exe文件)→CPU运行。 45 解析型语言(开发效率高,能跨平台,运行速度相对慢,但是对用户而言并没差别),如Python、JavaScript、PHP 46 人能读懂的代码→解析器解析.py文件(默认CPython,C语言写的)→获得相应的字节码→通过虚拟机边执行边翻译→CPU运行。 47 动态语言:编程时不需要指定数据类型,在运行期间才去做数据类型的检查。 48 静态语言:编程时需要指定数据类型,在编译时会做数据类型的检查。 49 强类型定义语言:变量被指定了某个数据类型,如果不经过强制转换,就永远是这个数据类型 50 弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值 51 Python运行:终端→命令行(cmd、PowerShell)→cd切换到目标路径, Python 文件名.py 52 53 注释: 54 当行注释:# ctrl+/ 55 多行注释:''' ''' """ """ 56 ''' 57 58 ''' 59 报错收集: 60 1、TypeError: can only concatenate str (not "list") to str 61 2、TypeError: not enough arguments for format string ,字符串占位符写少了 62 3、SyntaxError: invalid syntax , Python3不支持<>,改用!= 63 4、ValueError: unsupported format character '%' (0x25) at index 2 使用占位符时,若想打印%,需写%%转义 64 65 ''' 66 67 68 ''' 69 变量:声明变量,数据的门牌号,代指内存里某个地址中保存的内容 70 命名规则: 71 允许:有可描述性,由字母、数字、下划线组成 72 不允许:第一个字符不能是数字、关键字 73 不好的:变量名过长、带中文、拼音、词不达意 74 ''' 75 #推荐一:驼峰体 76 AgeOfOldboy = 56 77 #推荐二:下划线 78 age_of_oldboy = 56 79 80 81 # 变量的赋值: 82 # 实验一,变量名指向数字、字符串时,c通过b找到对象1,随后无论ab怎么变,均不改变c的指向,c=1 83 a = 1 84 b = a 85 a = "hello,python" 86 c = b 87 b = 5 88 print("a=", a, ", b=", b, ", c=", c) # a= hello,python , b= 5 , c= 1 89 90 # 实验二,d通过l找到列表对象,实际为一存储地址,不涉及内部数据,所以仅当内部数据改变时,打印的数据相应改变。 91 # e指向列表中的字符串1,实际是通过列表l找到对象“1”,之后就与列表没关系了,所以不会随列表而改变 92 l = ["1", 2, "python"] 93 d = l 94 e = l[0] 95 print("l=", l, ", d=", d, ", e=", e) # l= ['1', 2, 'python'] , d= ['1', 2, 'python'] , e= 1 96 l[0] = 56 97 print("l=", l, ", d=", d, ", e=", e) # l= [56, 2, 'python'] , d= [56, 2, 'python'] , e= 1 98 99 100 ''' 101 常量:指不会变或过程中不会改变的量 102 命名方式:全大写 103 注意:Python中没有机制强制规定不能改,更改也不会报错 104 ''' 105 MY_AGE = 18 106 107 108 # 程序交互:用户有参与感的操作,会适当进行一些数据输入 109 # input接收的所有输入默认都是字符串格式,可适当使用int(str)、str( yourStr ) 110 # age = input("how old are you >>>") # how old are you >>>18 111 # print("oh,%d is wonderful" % int(age)) # oh,18 is wonderful 112 113 114 # 计算机的运算:算术运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算(后三个以后学) 115 # 算术运算:+、 -、 *、 /、 %、 //、 **(即^) 116 print(10%3) # 1 117 print(10//3) # 3 118 print(2**2) # 4 119 120 # 比较运算:<, <=, >, >=, =, ==, !=或<> 121 t1 = 'hello' 122 t2 = 3 123 print(t1 == "hello") # True 124 # print(3 <> 3) # SyntaxError: invalid syntax ,不支持 125 print(3 != "hello") # True 126 127 # 赋值运算:=, +=, -=, *=, /=, %=, **=, //= 128 t3 = 2 129 t4 = 10 130 t3 += t4 # t3 = t3 + t4 = 2+10 131 print(t3) # 12 132 t3 -= t4 # t3 = t3 - t4 = 12-10 133 print(t3) # 2 134 t3 *= t4 # t3 = t3 * t4 = 2*10 135 print(t3) # 20 136 t3 /= t4 # t3 = t3 / t4 = 20/10 137 print(t3) # 2.0 138 t3 **= t4 # t3 = t3 ** t4 = 2**10 139 print(t3) # 1024.0 140 t3 %= t4 # t3 = t3 % t4 = 1024%10 141 print(t3) # 4.0 142 143 # 逻辑运算:and, or, not, 先级关系为( )>not>and>or 144 print(3>4 or 4<3 and 1==1) #False 145 print(1 < 2 and 3 < 4 or 1>2) #True 146 print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1) #True 147 print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8) #False 148 print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) #False 149 print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) #False 150 # x or y , x为真,值就是x,x为假,值是y; 151 # x and y, x为真,值是y,x为假,值是x 152 # 非0数字 == True, 0 == False 153 print(8 or 4) # 8 154 print(0 and 3) # 0 155 print(0 or 4 and 3 or 7 or 9 and 6) # 3 156 print(-6 or 2 > 1) # -6 157 print(6 and 2 > 1) # True 158 print(not 9) # False 159 # ,not in :判断子元素是否在原字符串(字典,列表,集合)中: 160 print('喜欢' in 'dkfljadklf喜欢hfjdkas') #True 161 print('a' in 'bcvd') #False 162 print('y' not in 'ofkjdslaf') #True 163 164 165 ''' 166 流程控制(if语句、while语句):在程序中预设判断语句,让程序往满足相应条件的方向执行 167 强制缩进:让程序知道每段代码依赖的条件,确定相应的代码块区域 168 缩进原则: 169 1、顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进 170 2、同一级别的代码,缩进必须一致 171 3、官方建议缩进用4个空格,当然你也可以用2个(但不规范) 172 ''' 173 174 ''' 175 流程控制之if 语句:满足条件,就往下走 176 练习:匹配成绩的小程序,成绩有ABCDE5个等级,与分数的对应关系如下 177 A 90-100 178 B 80-89 179 C 60-79 180 D 40-59 181 E 0-39 182 要求用户输入0-100的数字后,你能正确打印他的对应成绩 183 ''' 184 # score_info = input("How many points do you have >>> ") 185 # # "负数".isdigit 为False 186 # if score_info.isdigit(): 187 # score = int(score_info) 188 # if score > 100: 189 # print("天才了,最高才100分。。。") 190 # elif score >= 90: 191 # print("A") 192 # elif score >= 80: 193 # print("B") 194 # elif score >= 60: 195 # print("C") 196 # elif score >= 40: 197 # print("D") 198 # else: 199 # print("E") 200 # else: 201 # print("请输入0~100分") 202 203 204 ''' 205 流程控制之while语句:只要满足条件,就不断循环 206 无限循环:while True: 或者 while 1: 207 结束循环: 208 1、终结当次循环 continue 209 2、终结while循环 break 210 ''' 211 # 练习:在0~30间,打印0~20间的能被3整除的数 212 count = 0 213 while count <= 30: 214 count += 1 215 if count % 3 != 0: 216 continue # 终结当次循环 continue 217 elif count > 20: 218 print("已超出范围 0~20,不玩了") 219 break # 终结while循环 break 220 else: 221 print("count:",count) 222 223 ''' 224 while else语句:while执行完成后,就执行else的内容。当被break中断,就不执行else内容。 225 练习:电影后,用户自行选择是否想展示彩蛋 226 ''' 227 # choice = input("电影结束还有5秒,想看彩蛋吗?(Y/N)>>>") 228 # date = 5 229 # while date > 0: 230 # print("结束倒数:",date) 231 # date -= 1 232 # if date == 0: 233 # if choice == "N": 234 # print("电影结束") 235 # break 236 # else: 237 # print("电影结束,彩蛋来啦~") 238 239 240 ''' 241 for循环:按顺序循环遍历可迭代对象(string/tuple/list/dict) 242 enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串) 243 range(start, end, args) 244 ''' 245 for i in range(2, 10, 2): 246 print(i) # 2 4 6 8 247 for i in enumerate('fjalfjadlfjla'): 248 print(i) #(0, 'f') (1, 'j') ... 249 for i, j in enumerate('fjalfjadlfjla',4): 250 print(i,j) #4 f 5 j ... 251 252 print(''' 253 相关练习题 254 ====练习1、使用while循环输入 1 2 3 4 5 6 8 9 10====''') 255 t5 = 0 256 while t5 < 10: 257 t5 += 1 # 一定要在(t5 == 7)判断前,否则出现死循环 258 if t5 == 7: 259 print(" ") 260 continue 261 print(t5) 262 263 print("====练习2、求1-100的所有数的和====") 264 t6 = 1 265 count = 0 266 while t6 <= 100: 267 count = count + t6 268 t6 += 1 269 else: 270 print(count) 271 272 print("====练习3、输出 1-100 内的所有奇数====") 273 t7 = 0 274 while t7 <100: 275 t7 += 1 276 if t7 % 2 == 0: 277 continue 278 print(t7) 279 280 print("====练习4、输出 1-100 内的所有偶数====") 281 t8 = 0 282 while t8 < 100: 283 t8 += 1 284 if t8 % 2 == 0: 285 print(t8) 286 287 print("====练习5、求1-2+3-4+5 ... 99中除88之外的所有数的和====") 288 t9 = 0 289 count = 0 290 while t9 < 99: 291 t9 += 1 292 if t9 == 88: 293 continue 294 elif t9 % 2 == 0: 295 count = count - t9 296 else: 297 count = count + t9 298 else: 299 print(count) 300 301 print("====练习6、用户登陆(三次机会重试)====") 302 name = input("name:") 303 password = int(input("password:")) 304 dic = {'s':[1, 3]} 305 306 while True: 307 if name in dic: 308 my_password = dic[name][0] 309 count = dic[name][1] 310 # password = int(input("password:")) 311 if password == my_password: 312 print("登录成功!") 313 dic[name][1] = 3 314 break 315 else: 316 if count >1: 317 print(count) 318 count -= 1 319 dic[name][1] = count # 调了很久的bug,没赋值啊 320 print(count) 321 print("密码错误,您还可尝试%d次" % count) 322 password = int(input("password:")) 323 else: 324 print("密码错误次数超3次,账户已被锁定") 325 break 326 else: 327 dic[name] = password 328 print("登录成功") 329 break
1 # -*- coding:utf-8 -*- 2 # Author:Sure Feng 3 4 ''' 5 Python的数据类型: 6 1、整数类型:32位、64位代表的字符数量,bit_length() 7 2、浮点类型:带小数的 8 3、字符串类型:单行/多行打印,字符串的加法/乘法,格式化输出(%s/%d),索引,切片,常用方法 9 4、布尔类型:正规写法:1 == True, 0 == False | 实际上,非0数字 == True, 0 == False 10 5、列表list:类似于其他语言中的数组 11 6、字典dict 12 7、元组tuple:只读列表,可被查询,使用切片 13 14 总结: 15 按存储空间的占用分(从低到高) 16 数字 17 字符串 18 集合:无序,即无序存索引相关信息 19 元组:有序,需要存索引相关信息,不可变 20 列表:有序,需要存索引相关信息,可变,需要处理数据的增删改 21 字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改 22 23 按存值个数区分 24 标量/原子类型:数字,字符串 25 容器类型:列表,元组,字典 26 27 按可变不可变区分 28 可变:列表,字典 29 不可变:数字,字符串,元组,布尔值 30 31 按访问顺序区分 32 直接访问:数字 33 顺序访问(序列类型):字符串,列表,元组 34 key值访问(映射类型):字典 35 ''' 36 37 38 ''' 39 1、数据类型--整数类型 40 在32位机器上,整数的位数为32位(-2**31~2**31-1), 41 在64位系统上,整数的位数为64位(-2**63~2**63-1),减一是为了减0 42 ''' 43 v = 8 # 0000 1000 44 d = v.bit_length() # 十进制用二进制表示时,所需要的最小位数 45 print(d) # 4 46 print(type(23)) #<class 'int'>,没有长整型long,均为int 47 48 49 ''' 50 2、数据类型--浮点类型 51 ''' 52 print(type(23.6)) #<class 'float'> 53 54 55 ''' 56 3、数据类型--字符串类型 57 主要应用:索引、切片、常用方法、格式化输出 58 ''' 59 print(type("23")) #<class 'str'> 60 print("I'm sure,单双号注意") 61 print("字"+"符"+"拼"+"接") # 字符间可拼接 62 print("字符" + "~"*2) # 字符数值间可乘积, 字符~~ 63 print(''' 64 多行打印 65 多行打印 66 多行打印 67 ''') 68 69 # 索引,依据角标,获取相应的字符 70 str = "我爱北京" 71 print(str[0]) # 我 72 print(str[1]) # 爱 73 print(str[2]) # 北 74 print(str[3]) # 京 75 76 # 切片,字符串[索引:索引:步长],原则:顾头不顾尾 77 s2 = "abcdefghijk" 78 print(s2[:3]) # abc, 开头默认0开始 79 print(s2[1:]) # bcdefghijk, 默认取到尾部 80 print(s2[0:-1]) # abcdefghij, -1表示末尾 81 print(s2[-3:-1]) # ij 82 print(s2[2:10:3]) # cfi 83 print(s2[10:0:-3]) # kheb 84 85 # 字符串常用方法 86 s3 = "abc DEF ghI" 87 # 大小写转换 88 print(s3.capitalize()) # 首字母大写 Abc def ghi 89 print(s3.swapcase()) # 大小写翻转 ABC def GHi 90 print(s3.title()) # 每个单词的首字母大写,其余小写 Abc Def Ghi 91 # 调整填充格式 92 print(s3.center(20,"-")) #内容居中,设定总长度,在空白处填充指定字符 ----abc DEF ghI----- 93 s5 = "dsd a\t" 94 #默认将一个tab键变成8个空格,如果tab前面的字符8个唯一单位,长度不足则补全8个 95 print(s5.expandtabs()) # 若指定长度(需要大于字符串长度),则按指定长度补全 96 #strip 删除指定字符 97 name='*egon**' 98 print(name.strip('*')) # 全部 99 print(name.lstrip('*')) 100 print(name.rstrip('*')) 101 #split 分割指定字符。以什么分割,最终形成一个列表此列表不含有这个分割的元素。 102 ret9 = 'title,Tilte,atre,'.split('t',1) # 从左边开始,替换1个 ['', 'itle,Tilte,atre,'] 103 print(ret9) 104 ret91 = 'title,Tilte,atre,'.rsplit('t',2)# 从右边开始,替换2个 ['title,Til', 'e,a', 're,'] 105 print(ret91) 106 #replace 替换指定字符,可选择替换个数 107 name='abcafjjdaabcjdfajaabcjejiafj' 108 print(name.replace('abc','***',2)) # ***afjjda***jdfajaabcjejiafj 109 # 长度统计 110 s4 = "aaasdfvddradghsa" 111 print(s4.count("a",0,2)) #数字符串中的元素出现的个数,可切片,也是顾头不顾尾 2 112 # 逻辑判断类的方法 113 s6 = "werasdfvddradghpa" 114 print(s6.startswith("wer",2,9)) #判断是否以...开头 可切片,顾头不顾尾 False 115 print(s6.endswith("hp", 0,-1)) #判断是否以...结尾 True 116 print(s6.find("m",2,6)) # 返回的找到的元素的索引,如果找不到返回-1 117 print(s6.index("r")) #返回的找到的元素的索引,找不到报错 ValueError: substring not found 118 #format的三种玩法 格式化输出 119 print('{} {} {}'.format('a',"b","c")) # a b c 120 print('{2} {0} {1}'.format('a',"b","c")) #c a b 121 print('{name} {age} {sex}'.format(sex='male',name='egon',age=18)) #egon 18 male 122 #####is系列 123 name='jinxin123' 124 print(name.isalnum()) #字符串由字母或数字组成 125 print(name.isalpha()) #字符串只由字母组成 126 print(name.isdigit()) #字符串只由数字组成 127 128 129 130 ''' 131 格式化输出:%s就是代表字符串占位符,除此之外,还有%d,是数字占位符 132 使用事项:若想输出%,需加%转义,即%%,否则报错 133 练习:问用户的姓名、年龄、工作、爱好 ,然后打印成以下格式 134 ------------ info of surefeng ----------- 135 Name : surefeng 136 Age : 18 137 job : student 138 Hobbie: cosmic 139 ------------- end ----------------- 140 ''' 141 # name = input("what's your name>>>") 142 # age = input("what's your age>>>") 143 # job = input("what's your job>>>") 144 # hobbie = input("what's your hobbie>>>") 145 # # 不能直接多行打印print(''' ''')的形式,内部的%s会被当做字符串处理 146 # info = ''' 147 # ------------ info of %s ----------- 148 # Name : %s 149 # Age : %s 150 # job : %s 151 # Hobbie: %s 152 # ------------- end ----------------- 153 # ''' % (name, name, age, job, hobbie) 154 # print(info) 155 156 157 ''' 158 4、数据类型--布尔类型 159 正规写法:1 == True, 0 == False | 实际上,非0数字 == True, 0 == False 160 ''' 161 print(type(2 > 5)) # <class 'bool'>, True,False 162 163 164 ''' 165 5、列表list: 166 大量储存数据的地方,同一列表中可存放不同类型的数据,有索引、切片 167 ''' 168 l = [1, 'e', 't', 1, 'c'] 169 # 增 170 l.append([1,3,5]) # 末尾添加 171 print(l) 172 l.insert(2,'y') # 指定位置增加 173 print(l) 174 l.extend('sfjj') #迭代增加 175 print(l) 176 # 删 177 del l[1:3] #切片删除,没有返回值 178 print(l) 179 l.pop(7)#删除指定索引的数据 180 print(l) 181 l.remove(1) #删除第一个找到的数据 182 print(l) 183 # l.clear() #清除列表,慎用 184 print(l) 185 #改 186 l[2] = [2,'t,5',0] 187 print(l) #['t', 1, [2, 't,5', 0], [1, 3, 5], 's', 'f', 'j'] 188 l[1:4] = ['s','b']# 赋值不够就默认删除了 189 print(l) #['t', 's', 'b', 's', 'f', 'j'] 190 # 查 191 # 切片或遍历去查找 192 #其他操作 193 print(l.count('v')) #统计某个元素在列表中出现的次数,没有就返回0 194 print(l.index('s',1,5)) #从列表中找出某个值第一个匹配项的索引位置,可切片查找,没有就返回0,没有会报错 195 #正向排序 196 l.sort() 197 print(l) # ['b', 'f', 'j', 's', 's', 't'] 198 #反向排序 199 l.reverse() 200 print(l) #['t', 's', 's', 'j', 'f', 'b'] 201 202 203 ''' 204 6、字典dict:python中唯一的映射类型,键值对(key-value)储存 205 特点:无序储存、key必须是不可变类型(数字、字符串、元组)、哈希函数计算储存地址 206 ''' 207 #增 208 d = {} 209 d['s'] = [1,2,3] # dic[key] = value , key一定是不可变对象 210 print(d) #{'s': [1, 2, 3]} 211 d.setdefault('o') #在字典中添加键值对,如果只有键那对应的值是none 212 print(d) #{'s': [1, 2, 3], 'o': None} 213 d.setdefault(4,'s') #在字典中添加键值对 214 print(d) #{'s': [1, 2, 3], 'o': None, 4: 's'} 215 d.setdefault('o','ww')#如果原字典中存在设置的键值对,则他不会更改或者覆盖 216 print(d) #{'s': [1, 2, 3], 'o': None, 4: 's'} 217 218 #删 219 print(d.pop('age','没有该数据')) # pop根据key删除键值对,并返回对应的值,如果没有key则返回默认返回值 220 print(d.popitem()) # 随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回 (4, 's') 221 del d['s'] # 没有返回值。 222 print(d, d.clear()) #{} None 223 224 # 改 225 dic = {"name":"jin","age":18,"sex":"male", 'l':[1,2,3]} 226 dic2 = {"name":"alex","weight":75} 227 dic.update(dic2)# 将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中 228 print(dic) #{'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75} 229 dic['name'] = 'sure' 230 dic['l'][1] = 'dfa' 231 print(dic) #{'name': 'sure', 'age': 18, 'sex': 'male', 'l': [1, 'dfa', 3], 'weight': 75} 232 233 # 查 234 v1 = dic['l'] #没有会报错 235 v2 = dic.get('s', '没有该数据') 236 print(v1, v2) # [1, 'dfa', 3] 没有该数据 237 238 # 其他操作 239 item = dic.items() 240 print(item, type(item)) 241 #dict_items([('name', 'sure'), ('age', 18), ('sex', 'male'), ('l', [1, 'dfa', 3]), ('weight', 75)]) 242 # <class 'dict_items'> 可迭代的类型 243 keys = dic.keys() 244 print(keys, type(keys)) 245 #dict_keys(['name', 'age', 'sex', 'l', 'weight']) <class 'dict_keys'> 246 values = dic.values() 247 print(values, type(values)) 248 #dict_values(['sure', 18, 'male', [1, 'dfa', 3], 75]) <class 'dict_values'> 249 250 # 字典的循环 251 print("=========遍历key=========") 252 for key in dic: 253 print(key) 254 print("=========遍历key-value=========") 255 for key in dic: 256 # print(key) 257 print(key, ":", dic[key]) 258 print("=========遍历key-value=========") 259 for key in dic.keys(): 260 print(key, ":", dic[key]) 261 print("=========遍历key-value=========") 262 for key, value in dic.items(): 263 print(key, ":", value) 264 print("=========遍历key-value=========") 265 for item in dic.items(): 266 print(item) 267 268 269 ''' 270 7、元组tuple:只读列表,可被查询,使用切片 271 c = (1,2,3) 272 '''