1 #小部分老男孩pyton课程
2
3
4 #所有脚本第一句话都要写解释以下脚本是用什么解释器
5 #!/usr/bin/env python
6 #语言设置为:简体中文
7 #_*_coding:utf-8_*_
8
9 #############################################################################>>>
10 #
11 #变量定义的规则:
12
13 #变量名只能是 字母、数字或下划线的任意组合
14 #变量名的第一个字符不能是数字
15 #以下 关键字 不能声明为变量名
16 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif',
17 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if',
18 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise',
19 'return', 'try', 'while', 'with', 'yield']
20 #
21 #############################################################################>>>
22 #input <输入>
23 #print<打印>
24 username = input('用户名')
25 password = input('密码')
26 print(username,password)
27 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
28 #输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
29 #另存为 passwd.py到 c:usersalexpycharmprojectss14day1>python
30
31 import getpass
32
33 username = input('usernmae:')
34 password = getpass.getpass('password:')
35
36 print(username,password)
37
38 cd c:usersalexpycharmprojectss14day1>python passwd.py
39
40 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
41
42 # .format <格式>
43 # import <调用> getpass<py系统自带函数模块,密文输入>
44 # print <打印>
45 # if <条件成立执行>
46 # and <而且>
47 # else <if条件不成立时执行>
48
49 import getpass
50
51 name = 'alex'
52 word = 'as123'
53
54 username = input('名字:')
55 password = input('密码:')
56
57 if name == username and word == password:
58 print('欢迎 {N} 登录'.format(N=name))
59 else:
60 print('账号或者密码错误')
61
62 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
63
64 # i <变量名>
65 # range(10) <范围> (0,1,2,3,4,5,6,7,8,9)<0-9十个数>
66
67 for i in range(10):
68 print('loop',i)
69
70
71 # (0,10,3) <起始数,结束值,步长> <步长默认加1>
72 for i in range(0,10,3):
73 print('loop',i)
74
75
76 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
77
78 # continue <跳出本次循环,重新循环>
79
80 for h in range(0,10):
81 if h <3:
82 print('loop',h)
83 else:
84 print('kkkkkk...')
85 continue
86 print('yyyyyy...')
87 print('呵呵呵...')
88
89 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
90
91 # for t in range(9) <条件循环> <变量名> <在> <范围(参数)>
92 # print <打印>
93 # if <条件判断>
94 # break <中止程序>
95
96 for t in range(9):
97 print('______',t)
98 for j in range(11,50):
99 print(j)
100 if j >= 22:
101 break
102
103 #############################################################################>>>
104
105
106 #模块寻找路径先在当前目录下寻找,然后在全局环境变量目录里寻找
107
108 #'''你会发现,上面自己写的tab.py模块只能在当前目录下导入,
109 #如果想在系统的何何一个地方都使用怎么办呢? 此时你就要
110 #把这个tab.py放到python全局环境变量目录里啦,基本一般都
111 #放在一个叫 Python/2.7/site-packages 目录下,这个目录
112 #在不同的OS里放的位置不一样,用 print(sys.path) 可以查
113 #看python环境变量列表。'''
114 #系统自带模块在以下目录里为 XXX.py的文件
115 #C:UsersAdministratorAppDataLocalProgramsPythonPython36-32Lib
116
117 #默认第三方模块在以下目录里(即是全局环境变量目录)
118 #C:UsersAdministratorAppDataLocalProgramsPythonPython36-32Libsite-packages
119
120 import sys
121 print(sys.path) #打印环境变量
122 print('------我割割割-------')
123 print(sys.argv) #打印路径
124
125 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
126
127 import os
128
129 #cmd = os.system('dir')#执行命令,不保存结果
130
131 #print('查看1',cmd)
132
133 #直接输出到屏幕上
134
135 #cmd2 = os.popen('dir2').read()
136 #print('查看2',cmd2)
137
138 cmd3 = os.mkdir('查看3')
139 print('查看3',cmd3)
140
141 #############################################################################>>>
142
143 1、数字
144 int(整型)
145 -9223372036854775808~9223372036854775807
146
147 float(浮点型)
148 3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4
149 complex(复数)
150 (-5+4j)和(2.3-4.6j)是复数的例子,其中-5,4为实数,j为虚数
151
152 2、布尔值
153 真或假
154 1 或 0
155
156 3、字符串
157 "hello world"
158 #############################################################################>>>
159
160
161
162 #############################################################################>>>
163 #
164 # 字符串格式化符号含义
165 #
166 # 符号 说明
167 #
168 # %c <格式化字符及其ASCII码><a=97>
169 # >>> '%c %c %c %c %c' % (97,98,99,100,101)
170 # >>> 'a b c d e'
171 # %s <格式化字符串>
172 # >>> '%s' % 'I love fc'
173 # >>> 'I love fc'
174 # %d <格式化整数>
175 # >>> '%d + %d = %d' % (4,5,4+5)
176 # >>> '4 + 5 = 9'
177 # %o <格式化无符号八进制数>
178 # %x <格式化无符号十六进制数> <10=a,11=b>
179 # >>> '%x' % 160
180 # >>>'a0'
181 # %X <格式化无符号十六进制数(大写)> <10=A,11=B>
182 # %f <格式化定点数,可以指定小点后的精度>
183 # >>> '%F' % 27.986
184 # >>> '27.986000'
185 # %e <用科学计数法格式化定点数>
186 # >>> '%e' % 27.158
187 # >>> '2.715800e+01'
188 # %E <作用同%e,用科学计数法格式化定点数>
189 # %g <根据值的大小决定使用%f或%e>
190 # %G <作用同%g,根据值的大小决定使用%f或%E>
191 #
192 #############################################################################>>>
193 #print<打印>
194 #打印数据类型
195
196 name = input('名字:')
197 age = int(input('年龄:'))
198 print(type(age), type(str(age)))
199 job = input('行业:')
200 salaty = input('年薪:')
201
202
203 info = '''
204 --------info of %s -----
205 Name:%s
206 Age:%d
207 job:%s
208 salary:%s
209 ''' %(name,name,age,job,salaty)
210 print(info)
211 ============== RESTART: C:/Users/Administrator/Documents/学习.py ==============
212 名字:a
213 年龄:12
214 <class 'int'> <class 'str'>
215 行业:sdad
216 年薪:2555
217
218 --------info of a -----
219 Name:a
220 Age:12
221 job:sdad
222 salary:2555
223
224 >>>
225
226 #############################################################################>>>
227 #显式转换的多种类型
228 #
229 #int (x [,base]) ⇒ 将x转换为一个十进制的整数
230 #long(x [,base]) ⇒ 将x转换为一个十进制的长整数
231 #float(x) ⇒ 将x转换为一个浮点数
232 #str(object) ⇒ 转换为字符串
233 #repr(object) ⇒ 转换为表达式字符串
234 #eval(str) ⇒ 用来计算在字符串中的有效Python表达式,并返回一个对象
235 #tuple(seq) ⇒ 将序列seq转换为一个元组
236 #list(seq) ⇒ 将序列seq转换为一个列表
237 #chr(x ) ⇒ 将一个整数转换为一个字符
238 #unichr(x ) ⇒ 将一个整数转换为Unicode字符
239 #ord(x ) ⇒ 将一个字符转换为它的整数值
240 #hex(x ) ⇒ 将一个整数转换为一个十六进制字符串
241 #oct(x ) ⇒ 将一个整数转换为一个八进制字符串
242 #############################################################################>>>
243
244 #############################################################################>>>
245 # 当行注释:# 被注释内容
246 # 多行注释: ''' 被注释的内容 '''
247 #
248 #
249 info = '''
250
251
252
253 '''
254 #
255 #############################################################################>>>
256
257 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
258
259 #format<格式>
260
261 name = input('名字:')
262 age = int(input('年龄:'))
263 print(type(age), type(str(age)))
264 job = input('行业:')
265 salaty = input('年薪:')
266
267
268 info2 = '''
269 --------info of {N} --------
270 姓名:{N}
271 芳龄:{A}
272 职业:{J}
273 工资:{S}
274 '''.format(N=name,
275 A=age,
276 J=job,
277 S=salaty)
278
279 print(info2)
280
281 ============== RESTART: C:UsersAdministratorDocuments学习.py ==============
282 名字:yyy5
283 年龄:88
284 <class 'int'> <class 'str'>
285 行业:dgdgdg5dgdfg
286 年薪:9995121
287
288 --------info of yyy5 --------
289 姓名:yyy5
290 芳龄:88
291 职业:dgdgdg5dgdfg
292 工资:9995121
293
294 >>>
295 ###################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
296
297 #format<格式>
298
299 name = input('名字:')
300 age = int(input('年龄:'))
301 print(type(age), type(str(age)))
302 job = input('行业:')
303 salaty = input('年薪:')
304
305
306 info3 = '''
307 --------info of {0} --------
308 姓名:{0}
309 芳龄:{1}
310 职业:{2}
311 工资:{3}
312 '''.format(name,age,job,salaty)
313
314 print(info3)
315
316 >>>
317 ============== RESTART: C:UsersAdministratorDocuments学习.py ==============
318 名字:d5as6d5
319 年龄:56565
320 <class 'int'> <class 'str'>
321 行业:ad2a6sd6a
322 年薪:26s5d6s2d6s2
323
324 --------info of d5as6d5 --------
325 姓名:d5as6d5
326 芳龄:56565
327 职业:ad2a6sd6a
328 工资:26s5d6s2d6s2
329
330 >>>
331
332 #############################################################################>>>
333
334 #——————————数据运算——————
335 #
336 #——算数运算:——
337 #
338 # 运算符 描述 实例
339 #
340 # + 加-两个对象相加________________________________________________________________a+b 输出结果 30 15+15=30
341 # - 减-得到负数或者一个数减去另一个数______________________________________________a-b 输出结果-10 20-30=-10
342 # * 乘-两个数相乘或者返回一个被重复若干次的字符串__________________________________a*b 输出结果200 20*10=200
343 # / 除-X除以Y______________________________________________________________________b/a 输出结果2 4/2=2
344 # % 取模-返回除法的余数____________________________________________________________b%a 输出结果0
345 # ** 幂-返回X的Y次幂________________________________________________________________a**b 为10的20次方,输出结果100000000000000000000
346 # // 取整除-返回商的整数部分________________________________________________________9//2 输出结果 4 9.0//2.0 输出结果4.0
347 #
348 ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
349 #
350 #——比较运算:—— false<假0> true<真1>
351 #
352 # 运算符 描述 实例
353 #
354 # == 等于-比较对象是否相等__________________________________________________________(a==b)返回False
355 # != 不等于-比较两个对象是否不相等__________________________________________________(a!=b)返回true
356 # <> 不等于-比较两个对象是否不相等__________________________________________________(a<>b)返回true 这个运算符类似 !=
357 # > 大于-返回X是否大于Y____________________________________________________________(a>b)返回False
358 # < 小于-返回X是否小于y。所有比较运算符返回1表示真,返回0表示假____________________(a<b)返回true
359 # 这分别与特殊的变量True和False等价.注意,这些变量名的大写。
360 # >= 大于等于-返回x是否大于等于y____________________________________________________(a>=b)返回False
361 # <= 小于等于-返回x是否小于等于y____________________________________________________(a>=b)返回true
362 #
363 ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
364 #
365 #——赋值运算:——
366 #
367 # 运算符 描述 实例
368 #
369 # = 简单的赋值运算符_______________________________________________________________c = a + b 将 a + b 的运算结果赋值给 c
370 # += 加法赋值运算符_________________________________________________________________c += a 等效于 c = c + a
371 # -= 减法赋值运算符_________________________________________________________________c -= a 等效于 c = c - a
372 # *= 乘法赋值运算符_________________________________________________________________c *= a 等效于 c = c * a
373 # /= 除法赋值运算符_________________________________________________________________c /= a 等效于 c = c / a
374 # %= 取模赋值运算符_________________________________________________________________c %= a 等效于 c = c % a
375 # **= 幂赋值运算符___________________________________________________________________c **= a 等效于 c = c ** a
376 # //= 取整赋值运算符_________________________________________________________________c //= a 等效于 c = c // a _
377 #
378 ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
379 #
380 #——逻辑值运算:——
381 #
382 # 运算符 描述 实例
383 #
384 # and 布尔“与”-如果X为False, X and Y ,返回False,否则它返回Y的计算值_____________(K and J)返回true
385 # or 布尔“或”-如果X为True, 它返回True,否则它返回Y的计算值_________________________(K or J)返回true
386 # not 布尔“非”-如果X为True,返回False,如果X为False,它返回True______________________not(K and J)返回true
387 #
388 ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
389 #
390 #——成员运算:——
391 #
392 # 运算符 描述 实例
393 #
394 # in 如果在指定的序列中找到值返回True,否则返回False,________________________________x在y序列中,如果x在y序列中返回True
395 # not in 如果在指定的序列中没有找到值返回True,否则返回False,____________________________x不在y序列中,如果x在y序列中返回True
396 #
397 ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
398 #
399 #——身份运算:——
400 #
401 # 运算符 描述 实例
402 #
403 # is is是判断两个标识符是不是引用自一个对象__________________________________________x is y ,如果 id(x) 等于 id(y) ,is 返回结果1
404 # is not is not是判断两个标识符是不是引用自不同对象______________________________________x is not y ,如果 id(x) 不等于 id(y) ,is not 返回结果1
405 #
406 ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
407 #
408 #——位运算:——
409 #
410 # 运算符 描述 实例
411 #
412 # & 按位与运算符_________________________________________________________________(a&b) 输出结果 12 ,二进制解释: 0000 1100
413 # | 按位或运算符_________________________________________________________________(a|b) 输出结果 61 ,二进制解释: 0011 1100
414 # ^ 按位异或运算符_______________________________________________________________(a^b) 输出结果 49 ,二进制解释: 0011 0001
415 # ~ 按位取反算符_________________________________________________________________(~a) 输出结果 -61 ,二进制解释: 1100 0011 ,在一个有符号二进制数的补码形式。
416 # << 左移动运算符_________________________________________________________________a<<2 输出结果 240 ,二进制解释: 1111 0000
417 # >> 右移动运算符_________________________________________________________________a>>2 输出结果 15 ,二进制解释: 0000 1111
418 #
419 ###>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
420 # 按位取反运算规则(按位取反再加1)
421 #!/usr/bin/python
422
423 a = 60 # 60 = 0011 1100
424 b = 13 # 13 = 0000 1101
425 c = 0
426
427 c = a & b; # 12 = 0000 1100
428 print "Line 1 - Value of c is ", c
429
430 c = a | b; # 61 = 0011 1101
431 print "Line 2 - Value of c is ", c
432
433 c = a ^ b; # 49 = 0011 0001 #相同为0,不同为1
434 print "Line 3 - Value of c is ", c
435
436 c = ~a; # -61 = 1100 0011
437 print "Line 4 - Value of c is ", c
438
439 c = a << 2; # 240 = 1111 0000
440 print "Line 5 - Value of c is ", c
441
442 c = a >> 2; # 15 = 0000 1111
443 print "Line 6 - Value of c is ", c
444
445
446 ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
447 #
448 #——运算符优先级:——
449 #
450 # 运算符 描述
451 #
452 # ** ___指数(最高优先级)
453 # ~ + - ___按位翻转,一元加号和减耗(最后两个的方法名为+@和-@)
454 # * / % // ___乘,除,取模和取整数
455 # + - ___加法减法
456 # >> << ___右移,左移运算符
457 # & ___位 'AND'
458 # ^ | ___位运算符
459 # <= < > >= ___比较运算符
460 # < > == != ___等于运算符
461 # = %= /= //= -= += *= **= ___赋值运算符
462 # is is not ___身份运算符
463 # in not in ___成员运算符
464 # not or and ___逻辑运算符
465 #
466 ######>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
467 # * / + - <一元操作符>
468 # %[百分比,取余数] **[幂运算操作符,比一元操作符左边高比一元操作符右边低]
469 # //[地板除法]
470 #
471 #运算符优先级
472 # 幂运算 **
473 # 正负号 +* -*
474 # 算术操作符 * / // + -
475 # 比较操作符 < <= > >= == !=
476 # 逻辑运算符 not and or
477 #
478 #比较操作符 < <= > >= == != <根据表示的值进行比较>
479 #
480 #true <1,真> false <0,假>
481 #逻辑符 and <左右都为true执行> or <左右 或者为true执行> not<相反执行>
482
483 ###>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
484
485 #三元操作符 语法: x if 条件 else y
486 #x,y = 4, 5
487 #if x < y:
488 # small=x
489 #else:
490 # small=y
491 #改进为
492 #small = x if x < y else y
493 #
494 #assert<断言,关键字,AssertionError,程序检查点>
495
496 #true <1,真> false <0,假>
497 #while<而,循环体,为true时执行>
498 #
499 #for<为,循环体> in<在>
500 #
501 #for 目标 in 表达式
502 # 循环体
503
504 ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
505
506 三元运算
507
508 result = 值1 if 条件 else 值2
509 如果条件为真:result = 值1
510 如果条件为假:result = 值2
511
512 三、进制
513
514 二进制,01
515 八进制,01234567
516 十进制,0123456789
517 十六进制,0123456789ABCDEF 二进制到16进制转换http://jingyan.baidu.com/album/47a29f24292608c0142399cb.html?picindex=1
518 计算机内存地址和为什么用16进制?
519
520 为什么用16进制
521 1、计算机硬件是0101二进制的,16进制刚好是2的倍数,更容易表达一个命令或者数据。十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数,也就是一个字节(8位进制可以用两个16进制表示)
522 2、最早规定ASCII字符集采用的就是8bit(后期扩展了,但是基础单位还是8bit),8bit用2个16进制直接就能表达出来,不管阅读还是存储都比其他进制要方便
523 3、计算机中CPU运算也是遵照ASCII字符集,以16、32、64的这样的方式在发展,因此数据交换的时候16进制也显得更好
524 4、为了统一规范,CPU、内存、硬盘我们看到都是采用的16进制计算
525
526 16进制用在哪里
527 1、网络编程,数据交换的时候需要对字节进行解析都是一个byte一个byte的处理,1个byte可以用0xFF两个16进制来表达。通过网络抓包,可以看到数据是通过16进制传输的。
528 2、数据存储,存储到硬件中是0101的方式,存储到系统中的表达方式都是byte方式
529
530 3、一些常用值的定义,比如:我们经常用到的html中color表达,就是用的16进制方式,4个16进制位可以表达好几百万的颜色信息。
531
532 ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
533
534 ################################################################################
535 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
536 #字符串的操作特性:不可修改
537 #
538 #常用变量演示
539 name = 'my name is alex'
540 print(name.capitalize())
541 print(name.count('a'))
542 print(name.center(50,'-'))
543 print(name.endswith('ex'))
544 print(name.expandtabs(tabsize=30))
545 print(name[name.find('name'):])
546 print(name.format(name='alex',year=23))
547 print(name.format_map( {'name':'alex','year':12} ))
548 print('ab23'.isalnum())
549 print('abA'.isalpha())
550 print('1A'.isdecimal())
551 print('1A'.isdigit())
552 print('a 1A'.isidentifier())#判断是否合法的标识符
553 print('33'.isnumeric())
554 print('33'.isspace())
555 print('My Name IS '.istitle())
556 print('My Name IS '.isprintable())#设备终端使用
557 print('My Name IS '.isupper())
558 print('+'.join(['1','2','3']))
559 print( name.ljust(23,'*'))
560 print( name.rjust(25,'-'))
561 print( 'Alex'.lower())
562 print( 'Alex'.upper())
563 print( '
Alex'.lstrip())
564 print( 'Alex
'.rstrip())
565 print( ' Alex
'.strip())
566
567 print('---随机密码----')
568 h = str.maketrans('abcdefli','123$@456')#随机密码
569 print('alex li'.translate(h))
570 print(' ')
571
572 print('---替换----')
573 print('alex li lllll'.replace('l','L',4))
574 print(' ')
575
576 print('---寻找下标号----')
577 print('alex li'.rfind('l'))
578 print(' ')
579
580 print('---按字符串分割----')
581 print('al ex lil'.split('l'))
582 print(' ')
583
584 print('---按换行
分割----不同系统的换行')
585 print('1+2
+3+4'.splitlines())
586 print(' ')
587
588 print('---按换行
分割----')
589 print('Alex Li'.swapcase())
590 print(' ')
591
592 print('---第一字母大写----')
593 print('llex Li'.title())
594 print(' ')
595
596 print('---前边用0填充----')
597 print('lex Li'.zfill(26))
598 print(' ')
599
600
601
602 ####>>>>>>>>>>>>>>>>>>>>>>>>>>>>
603 #变量名.capitalize()
604 #
605 #capitalize() <把字符串的第一个字符改为大写>
606 #casefold() <把整个字符串的所有的字符变成小写>
607 #center(width) <将字符串居中,并使用空格填充至长度width的新字符串>
608 #count(sub[,start[,end]]) <返回sub在字符串里边出现的次数,start和end参数表示范围,可选>
609 #encode(encoding='utf-8',errors='strict') <以encoding指定的编码格式对字符串进行编码>
610 #endswith(sub[,start[,end]]) <检查字符串是否sub字符串结束,如果是返回true,否则返回false,
611 # start和end参数表示范围,可选 >
612 #expandtabs([tabsize=8]) <把字符串的tab符号( )转换为空格,字符默认的空格数是tabsize=8>
613 #find(sub[,start[end]]) <检测sub是否包含在字符串中,如果有返回索引值,否则返回-1,
614 # start和end参数表示范围,可选>
615 #index(sub[,start[,end]]) <跟find方法一样,不过如果sub不在string中会产生异常>
616 #isalunum() <如果字符串至少有一个字符都是字母或数字则返回true,否则返回false>
617 #isalpha() <如果字符串至少有一个字符并且所有字符都是字母则返回true,否则返回false>
618 #isdecimal() <如果字符串只包含十进制数字则返回true,否则返回false>
619 #isdingt() <如果字符串中只包含数字,则返回true,否则返回false>
620 #islower() <如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,
621 # 则返回ttue,否则返回false>
622 #isnumeric() <如果字符串中只包含数字字符,则返回true,否则返回false>
623 #isspace() <如果字符串中只包含空格,则返回true,否则返回false>
624 #istile() <如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写)
625 # 则返回ttue,否则返回false>
626 #isupper() <如果字符串至少包含一个区分大小写的字符,并且这些字符都是大写,
627 # 则返回ttue,否则返回false>
628 #join(sub) <以字符串作为分隔符,插入到sub中所有的字符之间>
629 #ljust(width) <返回一个左对齐的字符串,并且使用空格填充至长度为width的新字符串>
630 #lower() <转换字符串中所有大写字符为小写>
631 #lstrip() <去掉字符串左边的所有空格>
632 #partition(sub) <找到子字符串sub,把字符串分成一个3元组(pre_sub,sub,fol_sub),
633 # 如果字符串中不包含sub则返回('原字符串','','')>
634 #replace(old,new[,count]) <把字符串中的old子字符串替换成new子字符串,
635 # 如果count指定,则替换不超过count次>
636 #rfind(sub[,start[,end]]) <类似于find()方法,不过是从右边开始查找>
637 #rindex(sub[start[,end]]) <类似于index()方法,不过是从右边开始>
638 #rjust(width) <返回一个右对齐的字符串,并且使用空格填充至长度为width的新字符串>
639 #rpartion(sub) <类似于partion()方法,不过是从右边开始查找>
640 #rstrip() <删除字符串末尾的空格>
641 #splis(sep=none,maxsplit=-1) <不带参数默认是以空格为分隔符切片字符串,如果maxsplit参数有设置,
642 # 则仅分隔maxsplit个子字符串,返回切片后的子字符串拼接列表>
643 #splitlines(([keepends])) <按照'
'分隔,返回一个包含各行作为元素的列表,
644 # 如果keepends参数指定,则返回前keepends行>
645 #startswith(prefix[,start[,end]])<检查字符串是否以prefix开头,是则返回true,否则返回false,
646 # start和end参数可以指定范围检查,可选>
647 #strip([chars]) <删除字符串前边和后边所有的空格,chars参数可以指定删除的字符,可选>
648 #swapcase() <翻转字符串中的大小写>
649 #title() <返回标题化(所有的单词都以大写开始,其余字母均小写)>
650 #####>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
651 #translate(table) <根据table的规则(可以由str.maketrans('a','b')定制)转换字符串只的字符>
652 # >>> str1 = 'ssssssaaaaasssss'
653 # >>> str1.translate(str.maketrans('s','b'))
654 # 'bbbbbbaaaaabbbbb'
655 ######>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
656 #upper() <转换字符串中的所有小写字符为大写>
657 #zfill(width) <返回长度为width的字符串,原字符串右对齐,前边用0填充>
658 #############################################################################################################
659
660 ###########################################################################>>>
661 #
662 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
663 #
664 #列表、元组操作
665 # ' ' 在python里 ' ' 里的内容为 '字符串' 。不加 ' ' 为变量名
666 #print()打印
667
668 # 英文名字大全 http://ename.dict.cn/list/all/M
669
670 names = ['Cahill','Teenglan','Eric','Peggie','Aalto','Baal','Sadie',
671 'Gage','Hagan','Jack','Kaley','Mabel','Lacy','Nadine','Pace','Amy']
672
673 #通过下标访问列表中的元素,下标从0开始计数
674 print('---通过下标访问列表中的元素----')
675
676 print(names[0])
677 print(names[1],names[3],names[4])
678 print(names[-1])
679 print(names[-2]) #还可以倒着取
680 print(' ')
681
682 print('---切片:取多个元素---')
683 print(names[1:4]) #取下标1至下标4之间的数字,包括1,不包括4
684 print(names[1:-1]) #取下标1至-1的值,不包括-1
685 print(' ')
686
687 print('---切片:取下标1至-1的值,不包括-1---')
688 print(names[0:3]) #取下标1至-1的值,不包括-1
689 print(names[:3]) #如果是从头开始取,0可以忽略,跟上句效果一样
690 print(' ')
691
692 print('---参数默认是0,-1就是倒数第1个----')
693 print(names[:3]) #如果想取最后一个,必须不能写-1,只能这么写
694 print(names[3:-1]) #这样-1(最后一个)就不会被包含了
695 print(' ')
696
697 print('---参数默认是0----')
698 print(names[0:5:2]) #后面的2是代表,每隔一个元素,就取一个,默认是1
699 print(names[::3]) #参数默认是0,所以可以不写
700 print(' ')
701
702 print(' ')
703 print('---追加names.append('')---每次只能追加一个')
704 names.append('我是新来的',)
705 print(names)
706 print(' ')
707
708
709 print(' ')
710 print('---插入names.insert(下标号,名字)---每次只能插入一个')
711 names.insert(3,'强行插队到下标位置3')
712 print(names)
713 print(' ')
714
715 print(' ')
716 print('---修改names[下标号]---')
717 names[5] = '修改换人了'
718 print(names)
719 print(' ')
720
721 print(' ')
722 print('---删除names.remove('')---')
723 print(names)
724 names.remove('Eric')#删除指定元素名字
725 print(names)
726 print(' ')
727
728 print('---删除names.pop(下标号)---')
729 print(names)
730 names.pop(2)#删除指定列表中下标的值,默认-1
731 print(names)
732 print(' ')
733
734 print(' ')
735 print('---拷贝names.copy()---')
736 print(names)
737 name_copy = names.copy()
738 print(name_copy)
739 print(' ')
740
741 print(' ')
742 print('---排序names.sort()和翻转names.reverse()---')
743 print('3.0里不同数据类型不能放在一起排序了')
744 print(names)
745 names.sort()
746 print(' ')
747 print(names)
748 names.reverse()
749 print(' ')
750 print(names)
751
752 print(' ')
753 print('---扩展names.extend(下标号)---')
754 print('---数字默认为字符串""可以不加,但是数据类型却是整数--')
755 print(names)
756 b = ['3',9,'Amy','Amy','b的扩展']
757 names.extend(b)
758 print(names)
759 print(' ')
760
761
762 print(' ')
763 print('---统计names.count(' ')---')
764 print(names)
765 cut = names.count('Amy')
766 print(' ')
767 print(cut)
768 print(' ')
769
770
771 print(' ')
772 print('---获取下标names.index(' ')---')
773 print(names)
774 idx = names.index('Amy')
775 print(' ')
776 print(idx)
777 print(' ')
778
779 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
780 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
781 #元组
782 #元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
783 #它只有2个方法,一个是count,一个是index,完毕。
784
785 #列表的写法
786 name = ['Cahill','Teenglan','Eric','Amy','Amy','Amy','5','8']
787
788 #元组的写法
789 names = ('Cahill','Teenglan','Eric','Amy','Amy','Amy','Amy','Amy')
790
791 print(' ')
792 print('---统计names.count(' ')---')
793 print(names)
794 cut = names.count('Amy')
795 print(' ')
796 print(cut)
797 print(' ')
798
799
800 print(' ')
801 print('---获取下标names.index(' ')---')
802 print(names)
803 idx = names.index('Amy')
804 print(' ')
805 print(idx)
806 print(' ')
807
808 #元组不能追加等操作,会报错。
809 names.append('新加')
810
811
812 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
813 #
814 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎交流py
815
816 #列表、元组操作浅copy(复制文件的快捷方式)和深copy(复制文件)
817
818 # names<变量名> print()<打印>
819
820 names = ['Cahill','Teenglan','Eric','Peggie','Aalto','Baal','Sadie',
821 'Gage','Hagan','Jack','Kaley','Mabel','Lacy','Nadine','Pace','Amy']
822
823 print('---原来列表的内容---')
824 print(names)
825 print(' ')
826 name2 = names.copy()
827
828 print('---拷贝后列表的内容---')
829 print(name2)
830 print(' ')
831
832 print('---修改拷贝后列表里的内容---')
833 names[2] =['修改了']
834 print(names)
835 print(' ')
836 print('---对比两个文件的内容---')
837 print(name2)
838
839 print(' ')
840 print('---列表打印-----------------------------------------------------')
841 print(' ')
842
843 print('----跳跃打印不写默认值---- ')
844 print(names[:])
845
846 print(' ')
847 print('---跳跃打印---起始默认0:终止默认-1:跳跃默认1,默认值可以不写')
848 print(names[1:-3:2])
849
850 print(' ')
851 print('---列表循环打印---for i in names:--- ')
852 print(' ')
853 for i in names:
854 print (i)
855
856 print(' ')
857 print(' ')
858 print('---新的实验浅pocy的用法----------------------------------------------------------------------------------------------------------------------------------------')
859 print(' ')
860 print('---重新定义列表,在列表里添加列表---')
861 name = ['Cahill','Peggie',['Ursula','Val',['Zena','Babb','Eric'],'Teenglan',],'Amy']
862
863 print(name)
864 print(' ')
865
866 print(' ')
867 name3 = name.copy()
868 print('---拷贝后列表的内容---')
869 print(name3)
870 print(' ')
871
872 print('---修改拷贝后列表里的内容---')
873 name[1] =['改第一层']
874 name[2][1] =['第二层']
875 name[2][2][0] =['列表里第三层']
876 print(name)
877 print(' ')
878 print('---对比两个文件的内容---')
879 print(name3)
880 print(' ')
881
882 print('浅pocy 只复制第一层内容,第二层开始只复制其快捷方式')
883 print(' ')
884
885 print(' ')
886 print('---深copy的使用---copy.deepcopy(namett)------完全多层复制---尽量不用------------------')
887 print(' ')
888
889 import copy
890 namett = ['Cahill','Peggie',['Ursula','Val',['Zena','Babb','Eric'],'Teenglan',],'Amy']
891 print('---重新定义列表---')
892 print(namett)
893 nameff = copy.deepcopy(namett)
894 print('---拷贝后列表的内容---')
895 print(nameff)
896 print(' ')
897
898 print(' ')
899 print('---修改拷贝后列表里的内容---')
900 namett[1] =['改第一层']
901 namett[2][1] =['第二层']
902 namett[2][2][0] =['列表里第三层']
903 print(namett)
904 print('---对比两个文件的内容---连第二第三层都没有跟着修改---')
905 print(nameff)
906 print(' ')
907
908 print(' ')
909 print('---深copy的使用---完全多层复制-------尽量不用----------------------------------')
910 print(' ')
911
912 print(' ')
913 print('---新的实验-数值的pocy------------------------------------------------------------')
914 print('数值的pocy---------------------------------------------------------')
915 a = 1
916 b = a
917 print(a)
918 print(' ')
919 print(b)
920 print(' ')
921
922 print('重新定义a后的对比')
923 a = 2
924 print(a)
925 print(' ')
926 print(b)
927 print(' ')
928
929 print(' ')
930 print(' ')
931 print('---浅copy的用法-----------------------------------------------------------')
932 print(' ')
933 #import<调用> copy<函数拷贝模块> list()<列表> print()<打印>
934
935 import copy
936 person=['name',['saving',100]]
937
938 p1=copy.copy(person)
939 p2=person[:]
940 p3=list(person)
941
942 print(p1)
943 print(' ')
944 print(p2)
945 print(' ')
946 print(p3)
947 print('-----------------------------------------------------------------------------------')
948
949 #
950 #列表、元组操作
951 #
952 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
953
954
955 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
956 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
957 #<字典>
958 #help(dict)
959 #
960 #
961 #字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。
962 #
963 #字典的特性:dict是无序的,key必须是唯一的,所以天生去重。字典里没有下标
964 #
965 #key-value
966 #号码(下标):内容(可以重复)
967 #
968
969 print (' ')
970 print ('-------------创建字典的方法壹-------------------')
971 dict1 = {'num2': 'LongZe', 'num3': 'XiaoZe','num4':'Maliy','num5':'Jack','num6':'Hagan','num7':'Cahill'}
972 print(dict1)
973
974 print (' ')
975 print ('-------------创建字典的方法二-------------------')
976 dict2 = dict(鱼='让编程改变',书='读嘟嘟',笔='写写写')
977 print(dict2)
978
979 print (' ')
980 print ('-------------创建字典的方法三-------------------')
981 dict3 =dict((('f',70),('i',50),('s',111),('h',104)))
982 print(dict3)
983
984
985 print(' ')
986 print('------------------------字典增加-----------------')
987 dict1['yyy'] = '追加字典'
988 print(dict1)
989
990 print(' ')
991 print('------------------------字典修改-----------------')
992 dict2['鱼'] = '修改字典'
993 print(dict2)
994
995 print(' ')
996 print('------------------------字典删除方法壹-----------')
997 dict1.pop('num3')
998 print(dict1)
999
1000 print(' ')
1001 print('-----------py通用方法---字典删除方法二-----------')
1002 del dict1['num4']
1003 print(dict1)
1004
1005 print(' ')
1006 print('------------字典删除方法三随机删除一个---------')
1007 dict1.popitem()
1008 print(dict1)
1009
1010
1011 print(' ')
1012 print('------------------字典查找方法壹返回True---------')
1013 'num2' in dict1
1014 print('num2' in dict1)
1015
1016 print(' ')
1017 print('---------------字典查找方法二----安全获取的方法--')
1018 cz = dict1.get("num2")
1019 print(cz)
1020
1021 print(' ')
1022 print('------------------字典查找方法三-----------------')
1023 dict1["num2"]
1024 print(dict1["num2"])
1025
1026 print ('如果一个key不存在,就报错,get不会,不存在只返回None')
1027
1028 print(' ')
1029 print(' ')
1030
1031 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
1032 #多级字典嵌套及操作
1033 av_catalog = {
1034 "欧美":{
1035 "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
1036 "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
1037 "letmedothis.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
1038 "x-aryrtyrtt.com": ["质量很高,真的很高","全部收费,屌比请绕过"]
1039 },
1040 "日韩":{
1041 "tokyo-hottuiyui": ["质量怎样不清楚","听说是收费的"]
1042 },
1043 "大陆":{
1044 "1024hkhkhkhkhkh": ["全部免费,真好,好人一生平安","服务器在国外,慢"]
1045 }
1046 }
1047
1048 av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"
1049
1050 print(av_catalog["大陆"]["1024"])
1051 #ouput
1052 ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']
1053
1054 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
1055 #字典的其它姿势
1056
1057 #values 打印不包括keys所有的值
1058 info.values()
1059 dict_values(['LongZe Luola', 'XiaoZe Maliya'])
1060
1061 #keys 打印所有keys的值
1062 info.keys()
1063 dict_keys(['stu1102', 'stu1103'])
1064
1065 #setdefault 创建一个新的值,寻找某值,寻找不到创建
1066 info.setdefault("stu1106","Alex")
1067 'Alex'
1068 info
1069 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
1070 info.setdefault("stu1102","龙泽萝拉")
1071 'LongZe Luola'
1072 info
1073 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
1074
1075 #update 合并两字典,交叉就覆盖,没有就添加。
1076 info
1077 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
1078 b = {1:2,3:4, "stu1102":"龙泽萝拉"}
1079 info.update(b)
1080 info
1081 {'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
1082
1083 #items 字典转成列表
1084 info.items()
1085 dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')])
1086
1087 #通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个
1088 #初始一个新的字典,每个KEY用同一个值<值等于浅COPY,类似快捷方式>
1089 dict.fromkeys([1,2,3],'testd')
1090 {1: 'testd', 2: 'testd', 3: 'testd'}
1091
1092
1093 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
1094 #循环dict<字典>
1095
1096 #方法1 #通过key寻找打印
1097 for key in info:
1098 print(key,info[key])
1099
1100 #方法2 #把字典转成列表,然后打印列表里的('k','v')
1101 for k,v in info.items(): #会先把dict转成list,数据大时莫用
1102 print(k,v)
1103
1104 ##################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1105
1106
1107 #############################################################################>>>
1108 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
1109 #
1110 menu = {
1111 '北京':{
1112 '海淀':{
1113 '五道口':{
1114 'soho':{},
1115 '网易':{},
1116 'google':{}
1117 },
1118 '中关村':{
1119 '爱奇艺':{},
1120 '汽车之家':{},
1121 'youku':{},
1122 },
1123 '上地':{
1124 '百度':{},
1125 },
1126 },
1127 '昌平':{
1128 '沙河':{
1129 '老男孩':{},
1130 '北航':{},
1131 },
1132 '天通苑':{},
1133 '回龙观':{},
1134 },
1135 '朝阳':{},
1136 '东城':{},
1137 },
1138 '上海':{
1139 '闵行':{
1140 "人民广场":{
1141 '炸鸡店':{}
1142 }
1143 },
1144 '闸北':{
1145 '火车战':{
1146 '携程':{}
1147 }
1148 },
1149 '浦东':{},
1150 },
1151 '山东':{},
1152 }
1153
1154 # while not exit_flag <如果条件为假执行循环>
1155 # for k in current_layer <条件循环>
1156 # print(k) <打印>
1157 # input<输入>
1158 # .strip()#strip([chars]) <删除字符串前边和后边所有的空格,chars参数可以指定删除的字符,可选>
1159 # if <条件判断>
1160 # layers.pop() <删除>
1161 # elif choice not in <条件判断>
1162 # continue <跳出本次循环,重新循环>
1163 # else <否则,当if条件不成立时执行>
1164 # .append<附加>
1165 # choice<选择>
1166
1167 exit_flag = False
1168 current_layer = menu
1169
1170 layers = [menu]
1171
1172 while not exit_flag:
1173 for k in current_layer:
1174 print(k)
1175 choice = input(">>:").strip()
1176 if choice == "b":
1177 current_layer = layers[-1]
1178 #print("change to laster", current_layer)
1179 layers.pop()
1180 elif choice not in current_layer:continue
1181 else:
1182 layers.append(current_layer)
1183 current_layer = current_layer[choice]
1184 #
1185 #############################################################################>>>