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
test
  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
Python基础 new
  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 '''
数据类型new

 

posted on 2018-10-07 21:57  sure_feng  阅读(548)  评论(0编辑  收藏  举报