[其他]一些笔记(较乱未整理)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[其他]一些笔记(较乱未整理)相关的知识,希望对你有一定的参考价值。
1 # type(xx) 意思为判断xx 的类型为什么, 整数为int,浮点数为float,字符为str,布尔为bool 2 3 # isinstance(xx,cc) 意思为你来判断xx是否为cc类型, 如果是则返回True 不是则返回False 4 5 # help(xx) 意思是请求帮助,查看xx的用法 6 7 # dir(__builtins__) 查看所有的内置函数 8 # dir(xxx)查看某某内置函数的用法 如dir(list) 查看列表的用法 9 # import xx 调用什么模块 10 # import os 调用操作模块 11 # import pickle 把字符串转换数据,pickle是泡菜的意思 12 13 # import timeit 14 # timeit.__doc__ 查看doc属性 15 # dir(timeit) 如果有__all__ 就说明有哪些函数是作者希望我们能调用的 16 # timeit.__all__ 查看可以在外调用的函数 17 # form timeit import * 这样能调用的函数 只有__all__里面的函数 18 # timeit.__file__ 查看源代码所在的文件位置,以便浏览 19 # help(timeit) 比doc详细一点,比帮助文档简单一点。 20 21 # import random 22 # secret = random.randint(1,10) 创建1 - 10 的随机数 23 # a = r.choice([1, 2, -1, -2]) 在其中随机选一个数字 24 # locals() 以字典形式弹出当前所有局部变量 25 # globals() 以字典形式弹出当前所有全局变量 26 27 # >>> import easygui 28 # >>> easygui.msgbox("我我我") 这个调用代码比较长,不推荐 29 # ‘OK‘ 30 # >>> from easygui import* 这个调用代码有覆盖其他函数的可能,慎用 31 # >>> msgbox("shishieryi") 32 # ‘OK‘ 33 # >>> import easygui as c 这个推荐使用 34 # >>> c.msgbox("gag") 35 # ‘OK‘ 36 # import math as m m.sqrt(ab) 开方 37 38 # a.copy() 浅拷贝, 只能拷贝到浅层,如果拷贝字典,字典里有列表,列表里的内容就无法拷贝到。所以修改列表,拷贝项也会相应改变 39 40 # import copy 41 # dict2 = copy.deepcopy(dict1) 深拷贝,能拷贝到字典里的列表。 就是能细分拷贝 42 43 # >>> import sys 44 # >>> sys.path 模块存放文件夹 ,模块放在里面可以查询到 45 # [‘‘, ‘F:\\python3.3.2\\Lib\\idlelib‘, ‘C:\\Windows\\SYSTEM32\\python33.zip‘, ‘F:\\python3.3.2\\DLLs‘, ‘F:\\python3.3.2\\lib‘, ‘F:\\python3.3.2‘, ‘F:\\python3.3.2\\lib\\site-packages‘] 46 # >>> 47 # >>> sys.path.append("F:\\py") 可以添加其他路径 48 49 50 51 52 53 54 55 56 #--------------------------------python爬虫相关内容--------------- 57 #----------------------------------------------------------- 58 # >>> import urllib.request 网络模块 59 # >>> urllib.request.urlopen("http://www.fishc.com") 打开制定网站,返回对象 60 # <http.client.HTTPResponse object at 0x0000000002EBA4E0> 61 # >>> response = urllib.request.urlopen("http://www.fishc.com") 62 # >>> html = response.read() 读网页对象 63 # >>> print(html) 64 # b‘<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML....................... 65 # .......... 特别乱,要解码才能顺序,才能按网页照搬 66 # ....... 67 # .... 68 # . 69 # >>> html = html.decode("utf-8") 解码。 70 # >>> print(html) 71 # <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 72 73 # "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 74 # ........ 75 76 # .......... 77 # ....... 78 # .... 79 # . 80 # -----------------------获取解码 81 # import urllib.request as r 82 # import chardet as c 83 # 84 # a = input("请输入URL:") 85 # response = r.urlopen(a).read() 86 # b = c.detect(response) 这是一个获取解码的模块 87 # c = b["encoding"] 88 # print("该网页使用的编码是:",c) 89 90 # -----------------------爬一张网络图片 91 # import urllib.request as r 92 # 93 # response = r.urlopen("http://placekitten.com/400/600") 94 # cat_img = response.read() 95 # 96 # 97 # with open("cat_400_600.jpg","wb") as f: 因为图片也是二进制组成,所以用w读写,d二进制读写来创建 98 # f.write(cat_img) 把获取的内容 写入到上面的文件 99 # 100 # >>> response.geturl() 可以用geturl来获取url,网址 101 # ‘http://placekitten.com/400/600‘ 102 # >>> response.info() 返回的是一个服务器信息 103 # <http.client.HTTPMessage object at 0x0000000002CEA2B0> 104 # >>> print(response.info()) 105 # Date: Wed, 22 Feb 2017 01:19:43 GMT 106 # Content-Type: text/plain 107 # Content-Length: 0 108 # Connection: close 109 # Set-Cookie: __cfduid=d3b173113a2894991cc087573526acf711487726383; expires=Thu, 22-Feb-18 01:19:43 GMT; path=/; domain=.placekitten.com; HttpOnly 110 # Accept-Ranges: bytes 111 # X-Powered-By: PleskLin 112 # Access-Control-Allow-Origin: * 113 # Cache-Control: public 114 # Expires: Thu, 31 Dec 2020 20:00:00 GMT 115 # Server: cloudflare-nginx 这是网站使用的服务器信息 116 # CF-RAY: 334e9c8af3a72894-SJC 117 # >>> response.getcode() 获取http的状态 ,返回200 就是正常工作 118 # 200 119 120 #--------------------------------模块内测试的方法--------------- 121 #----------------------------------------------------------- 122 # if __name__=="__main__"因为main是正在运行的程序自身,只有在模块自运行的时候,才能显示执行的内容,如果在调用这个模块的时候就不会运行 123 # xxxx 执行的内容 124 #--------------------------------迭代器的创建--------------- 125 #----------------------------------------------------------- 126 # iter() next() __next__() 127 # __iter__(self) return self, 只要有iter 那就是一个迭代器,它本身就是迭代器,所以返回本身 128 129 #--------------------------------生成器的创建--------------- 130 #----------------------------------------------------------- 131 # 在函数中写入yield .. 就是一个生成器,其作用可以中断函数。如果有下一个yield 则从下一个yield开始函数剩余部分。 132 # >>> def myGen(): 133 # print("生成器被执行!") 134 # yield 1 135 # yield 2 136 # 137 # 138 # >>> myG = myGen() 139 # >>> next(myG) 140 # 生成器被执行! 141 # 1 142 # >>> next(myG) 143 # 2 144 # >>> next(myG) 145 # Traceback (most recent call last): 146 # File "<pyshell#10>", line 1, in <module> 147 # next(myG) 148 # StopIteration 149 150 # >>> for i in myGen(): 151 # print(i) 152 # 153 # 154 # 生成器被执行! 155 # 1 156 # 2 157 158 159 # >>> def libs(): 160 # a = 0 161 # b = 1 162 # while True: 163 # a,b = b , a + b 164 # yield a 相当于终止返回。 所以不会一直循环。 165 # 166 # >>> for each in libs(): 167 # if each > 100: 168 # break 169 # print(each,end=" ") 170 # 171 # 172 # 1 1 2 3 5 8 13 21 34 55 89 173 174 # >>> e = (i for i in range(10)) 生成器推倒式 175 # >>> e 176 # <generator object <genexpr> at 0x0000000002E1A2D0> 177 # >>> next(e) 178 # 0 179 # >>> next(e) 180 # 1 181 # >>> next(e) 182 # 2 183 # >>> for each in e: 184 # print(each) 185 # 186 # 187 # 3 188 # 4 189 # 5 190 # 6 191 # 7 192 # 8 193 # 9 194 # >>> sum((i for i in range(100) if i % 2)) 生成器推倒式 195 # 2500 196 # >>> sum(i for i in range(100) if i % 2 ) 197 # 2500 198 # >>> 199 200 #--------------------------------创建类class--------------- 201 #----------------------------------------------------------- 202 203 # class One1: # 类名 必须大写开头 204 # 205 # # 属性 206 # color = "green" 207 # weight = 10 208 # legs = 4 209 # shell = True 210 # mouth = "大嘴" 211 # 212 # # 方法 213 # def d1(xx): 214 # print("您调用了d1") 215 # 216 # def d2(xx): 217 # print("您调用了d2") 218 # 219 # def d3(xx): 220 # print("您调用了d3") 221 # 222 # def d4(xx): 223 # print("您调用了d4") 224 # 225 # def d5(xx): 226 # print("您调用了d5") 227 228 # >>> a = One1() 调用类 229 # >>> a.d1() 230 # 您调用了d1 231 232 233 # >>> class MyLsit(list): 继承list的方法 234 # pass 235 # 236 # >>> list2 = MyLsit() 相当于 list() 237 # >>> list2 238 # [] 239 240 # >>> list1 = list() 241 # >>> list1 242 # [] 243 244 245 # >>> class A: 246 # def fun(self): 247 # print("我是A") 248 # 249 # 250 # >>> class B: 251 # def fun(self): 252 # print("我是B") 253 # 254 # 255 # >>> a = A() 256 # >>> b = B() 257 # >>> a.fun() 多态的。 258 # 我是A 259 # >>> b.fun() 260 # 我是B 261 262 263 # class Name: 264 # na = "小甲鱼" 265 # 266 # def pr(ba): 267 # print(ba.na) 要用ba.na 才能引用 268 269 270 # class Ball: 271 # def setName(b,x): 272 # b.c= x 273 # 274 # def kick(b): 275 # print("我叫%s,该死的,谁踢我..." % b.c) 276 # 277 # # >>> a = Ball() 278 # >>> a.setName("球A") 279 # >>> a.kick() 280 # 我叫球A,该死的,谁踢我... 281 282 283 # class Ball: 284 # def __init__(b,x): 285 # b.c= x 286 # 287 # def kick(b): 288 # print("我叫%s,该死的,谁踢我..." % b.c) 289 # 290 # >>> a = Ball("土豆") 291 # >>> a.kick() 292 # 我叫土豆,该死的,谁踢我... 293 294 #-----------------------属性的公有和私有 295 296 # class Ball(): 297 # __name = "我是私有的" 加了双下划线就是私有属性,只有在类里面才能访问 298 # name1 = "我是公有的" 这个是公有属性, 在类外面一样可有访问 299 # 300 # def kick(b): 301 # return b.__name 302 # >>> a = Ball() 303 # >>> a.name1 304 # ‘我是公有的‘ 305 # >>> a.__name 306 # Traceback (most recent call last): 报错了 307 # File "<pyshell#2>", line 1, in <module> 308 # a.__name 309 # AttributeError: ‘Ball‘ object has no attribute ‘__name‘ 310 # >>> a.kick() 311 # ‘我是私有的‘ 312 # >>> a._Ball__name 访问方法。 313 # ‘我是私有的‘ 314 315 # >>> class A: 316 # def hello(self): 317 # print("正在调用父类的方法...") 318 # 319 # >>> class C(A): 类的继承,如果有同名的属性或者方法,继承的时候子类会覆盖父类。 320 # pass 321 # >>> p = A() 322 # >>> p.hello() 323 # 正在调用父类的方法... 324 # >>> c = A() 325 # >>> c.hello() 326 # 正在调用父类的方法... 327 #----------------------- 328 # import random as r 329 # 330 # class Fish: 331 # def __init__(self): 332 # self.x = r.randint(0,10) 333 # self.y = r.randint(0,10) 334 # 335 # def move(self): 336 # self.x -= 1 337 # print("我的位置是",self.x,self.y) 338 # 339 # class G(Fish): 340 # pass 341 # 342 # class C(Fish): 343 # pass 344 # 345 # class S(Fish): 346 # pass 347 # 348 # class Sa(Fish): 349 # def __init__(b): 因为父类也有init 所以子类会覆盖父类,所以要调用父类的init方法 350 # #Fish.__init__(b) 两个作用一样 351 # super().__init__() 两个作用一样 352 # b.e = True 353 # 354 # def eat(b): 355 # if b.e: 356 # print("吃吃吃") 357 # b.e = False 358 # 359 # else: 360 # print("不吃了") 361 # ---------------------------- 多样继承 362 # >>> class B: 363 # def b(b): 364 # print("我是b,我为大B代言") 365 # 366 # 367 # >>> class C: 368 # def c(c): 369 # print("我是c,我为大C代言") 370 # 371 # 372 # >>> class D: 373 # def d(d): 374 # print("我是d,我为大d代言") 375 # 376 # 377 # >>> class F(B,C,D): 378 # pass 379 # 380 # >>> f = F() 381 # >>> f.b() 382 # 我是b,我为大B代言 383 # >>> f.c() 384 # 我是c,我为大C代言 385 # >>> f.d() 386 # 我是d,我为大d代言 387 388 #------------------类的组合 389 # class Turle: 390 # def __init__(self,x): 391 # self.num = x 392 # 393 # class Fish: 394 # def __init__(self,x): 395 # self.num = x 396 # 397 # class Pool: 398 # def __init__(self,x,y): 399 # self.turtle = Turtle(x) 400 # self.fish = Fish(y) 401 # 402 # def print_num(self): 403 # print("水池里总共有乌龟 %d 只,小鱼 %d 条!" % (self.turtle.num,self.fish.num) 404 405 #--------------------类属性和实例属性 406 # class C: 407 # num = 0 num和C.count是类属性,其他是实例属性。self其实就是绑定 408 # def __init__(self): 409 # self.x = 4 410 # self.y = 5 411 # C.count = 6 412 413 414 # class C: 415 # def x(self): 416 # print(‘Xman‘) 417 # 418 # >>> c = C() 如果对象的属性跟方法名字相同,属性会覆盖方法 419 # >>> c.x() 420 # Xman 421 # >>> c.x = 1 422 # >>> c.x 423 # 1 424 # >>> c.x() 425 # Traceback (most recent call last): 426 # File "<pyshell#20>", line 1, in <module> 427 # c.x() 428 # TypeError: ‘int‘ object is not callable 429 430 #--------------------跟踪绑定数量,查看有多少个实例对象参数和删除 431 # class L: 432 # count = 0 433 # def __init__(self): 434 # L.count += 1 435 # 436 # def __del__(self): 437 # L.count -= 1 438 439 #--------------------判断继承关系,是否继承 440 # >>> class A: 441 # pass 442 # 443 # >>> class B(A): 444 # pass 445 # 446 # >>> issubclass(B,A) B继承A 447 # True 448 # >>> issubclass(B,B) 449 # True 450 # >>> issubclass(B,object) 451 # True 452 # >>> class C: 453 # pass 454 # 455 # >>> issubclass(B,C) 456 # False 457 # >>> 458 459 #--------------------判断实例对象关系,是否是它的实例对象 460 # >>> b1 = B() 461 # >>> isinstance(b1,B) b1 是 B的实例对象 462 # True 463 # >>> isinstance(b1,A) b1 也是 A的实例对象,因为上题可以看出B继承A 464 # True 465 # >>> isinstance(b1,C) 466 # False 467 # >>> isinstance(b1,(A,B,C)) 468 # True 469 # >>> 470 471 #--------------------判断属性是否在类里面 472 # >>> class C: 473 # def __init__(self,x=0): 474 # self.x=x 475 # 476 # 477 # >>> c1 = C() 478 # >>> hasattr(c1,"x") 479 # True 480 481 #--------------------访问类属性的值,def的值 482 # >>> getattr(c1,"x") 483 # 0 484 # >>> getattr(c1,"y") 485 # Traceback (most recent call last): 486 # File "<pyshell#26>", line 1, in <module> 487 # getattr(c1,"y") 488 # AttributeError: ‘C‘ object has no attribute ‘y‘ 489 # >>> getattr(c1,"y","您所访问的属性不存在") 490 # ‘您所访问的属性不存在‘ 491 #--------------------访问类属性的值,不存在就创建 492 # >>> setattr(c1,"y","FishC") 493 # >>> getattr(c1,"y","您所访问的属性不存在") 494 # ‘FishC‘ 495 #--------------------删除属性,不存在就报错 496 # >>> delattr(c1,"y") 497 # >>> delattr(c1,"y") 498 # Traceback (most recent call last): 499 # File "<pyshell#31>", line 1, in <module> 500 # delattr(c1,"y") 501 # AttributeError: y 502 503 #--------------------属性定义属性,property的用法 504 # >>> class C: 505 # def __init__(self,size = 10): 506 # self.size = size 507 # def getSize(self): 508 # return self.size 509 # def setSize(self,value): 510 # self.size = value 511 # def delSize(self): 512 # del self.size 513 # x = property(getSize,setSize,delSize) 第一个参数,得到属性的值,第二个参数修改参数的值,第三个属性删除值 514 # 515 # 516 # >>> c1 = C() 517 # >>> c1.getSize() 518 # 10 519 # >>> c1.x 有 . 符号出现,就调用第一个 得到属性的值 520 # 10 521 # >>> c1.x = 18 有=符号出现,就调用第二个 修改属性的值 522 # >>> c1.x 523 # 18 524 # >>> c1.size 为什么要有这个bif函数存在,就是因为如果里面的属性有修改,一样可以用x来调用,用户体验会好一些 525 # 18 526 # >>> c1.getSize() 527 # 18 528 # >>> del c1.x 有del 出现 ,就调用第三个 删除属性的值 529 # >>> c1.size 530 # Traceback (most recent call last): 531 # File "<pyshell#64>", line 1, in <module> 532 # c1.size 533 # AttributeError: ‘C‘ object has no attribute ‘size‘ 534 # >>> 535 536 #--------------------三个内置函数修饰符 537 # staticmethoh、classmethod、property 作用分别是静态方法、类方法、类属性 538 # http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318435599930270c0381a3b44db991cd6d858064ac0000 539 # 装饰器的相关内容,打开网址 540 541 # ----------------------------魔法方法的相关内容-------------------- 542 543 # __new__重写(一般不用到)传入一个初始值,传给__init__这是第一个接收参数的魔法方法 544 # >>> class C(str): 重写str 因为str是不能修改的,所以要用new 新的方法 545 # def __new__(cls,string): 重写的内容 cls是自身的类,只有string会传给init 546 # string = string.upper() 转换大写 547 # return str.__new__(cls,string) 用重写的str.__new__函数来处理括号内的内容 548 # 549 # >>> a = C("I love FishC.") 550 # >>> a 551 # ‘I LOVE FISHC.‘ 552 # >>> 553 554 # __init__方法 555 # class A: 556 # def __init__(self,x,y) 传入一个初始值 557 558 # __del__方法, 当函数没在被任何参数调用的时候,del方法就生效,也就是删除自身 559 # >>> class C: 560 # def __init__(self): 561 # print("我是__init__方法,我被调用了...") 562 # def __del__(self): 563 # print("我是__del__方法,我被调用了...") 564 # 565 # 566 # >>> c1 = C() 567 # 我是__init__方法,我被调用了... 568 # >>> c2 = c1 569 # >>> c3 = c2 570 # >>> del c3 571 # >>> del c2 572 # >>> del c1 只有全部删除了,才会启动删除方法,删除自身函数所在的内存 573 # 我是__del__方法,我被调用了... 574 575 576 # >>> class New_int(int): 我们定义一下对象加和减时,会进行的操作 577 # def __add__(self,other): 如果执行加数操作,则进行这一行的方法 self是自身,b是被加数, 如a+b, a是self b是other 578 # return int.__sub__(self,other) 返回两数相减 579 # def __sub__(self,other): 580 # return int.__add__(self,other) 581 # 582 # 583 # >>> a = New_int(3) 584 # >>> b = New_int(5) 585 # >>> a + b 586 # -2 587 # ----------------------------python一些内置函数的说明 588 # 像int() float()str() list() tuple()这些bif 其实都是类,当调用它们的时候,事实上就是创建了一个相应的实例对象 589 # a 和 b 是工厂函数(类对象) int 的实例对象 590 # >>> a = int(‘123‘) 591 # >>> b = int(‘345‘) 592 # >>> a + b 593 # 468 594 595 # >>> class N(int): 596 # def __radd__(self,other): 反运算方法, 597 # return int.__sub__(self,other) self是b,other是1 , 这个要注意顺序,self是自身 598 # 599 # 600 # >>> b = N(3) 601 # >>> 1 + b 因为1是数值,没有add方法,所以就调用b的反运算方法 602 # 2 603 604 # BaseAlias = BaseClass # 为基类取别名 如果是动态基类就用这个方法 605 # 606 # class Derived(BaseAlias): 607 # def meth(self): 608 # BaseAlias.meth(self) # 通过别名访问基类 609 # ... 610 611 # ----------------------------GUI的相关内容------------------------ 612 613 #--------------------------------按钮相关组件--------------- 614 #----------------------------------------------------------- 615 616 # >>> import easygui as g 617 # >>> g.msgbox("Hello, world!") 618 # ‘OK‘ 619 # >>> g.msgbox("Hello, world!","标题") 第二栏是标题 620 621 #------------msgbox消息框内容---------- 622 623 # msgbox(msg内容,title消息框标题,ok_button"ok"按钮,imgae插入图片,root尺寸) 624 625 # import easygui as g 626 # import sys 627 # g.msgbox("我一定要学会编程!", ok_button="加油!") 628 629 #------------ccbox对话选择框---------- 630 631 # ccbox(msg选择框内容,title选择框标题,choices=("Continue确认","Cancel取消"),imgae插入图片) 632 633 # 选择第一个返回1 或 其他返回0 , 不是True 或 False 634 # import easygui as g 635 # import sys 636 # 637 # while 1: 638 # if g.ccbox(‘要再来一次吗?‘, choices=(‘要啊要啊^_^‘, ‘算了吧T_T‘)): 639 # g.msgbox(‘行吧,那继续‘) 640 # pass 641 # else: 642 # g.msgbox(‘不玩了,再玩就玩坏了......‘) 643 # sys.exit(0) 记得先 import sys 哈 "0"是正常退出 644 645 #------------yngbox对话选择框---------- 646 647 # yngbox(msg选择框内容,title选择框标题,choices=("Yes是","No否"),imgae插入图片) 648 649 # 选择第一个返回1 或 其他返回0 , 不是True 或 False 650 # import easygui as g 651 # import sys 652 # 653 # while 1: 654 # if g.ynbox(‘要再来一次吗?‘, choices=(‘要啊要啊^_^‘, ‘算了吧T_T‘)): 655 # g.msgbox(‘行吧,那继续‘) 656 # pass 657 # else: 658 # g.msgbox(‘不玩了,再玩就玩坏了......‘) 659 # sys.exit(0) # 记得先 import sys 哈 660 661 # imgae只能是 gif格式 662 663 #------------button按钮内容---------- 664 665 # buttonbox(msg按钮内容,title按钮标题,choices=("Button1按钮1","Button2按钮2","Button3按钮3"),imgae插入图片) 666 667 # 返回相应的按钮文本 668 # import easygui as g 669 # import sys 670 # 671 # a = g.buttonbox("你喜欢一下哪一种水果?","请选择水果",choices=("草莓","西瓜","芒果")) 672 # if a == "草莓": 返回选项 673 # g.msgbox("草莓太红了,不好看",ok_button="我同意") 674 # elif a == "西瓜": 675 # g.msgbox("西瓜太绿,不好看",ok_button="我同意") 676 # else : 677 # g.msgbox("芒果太黄,不好看",ok_button="我同意") 678 679 #------------indexbox对话选择框---------- 680 681 # indexbox(msg选择框内容,title选择框标题,choices=("Yes是","No否"),imgae插入图片) 682 683 # 选择第一个返回0 或 其他返回1 , 不是True 或 False 684 # a = g.indexbox("选择确认还是取消?","请选择",choices=("确认","取消","不知道")) 685 # print(a) 686 # 选择1则打印0 , 选择2则打印1 687 688 #------------boolbox对话选择框---------- 689 690 # boolbox(msg选择框内容,title选择框标题,choices=("Yes是","No否"),imgae插入图片) 691 692 # 选择第一个返回1 或 其他返回0 , 不是True 或 False 693 # import easygui as g 694 # import sys 695 # a = g.boolbox("选择确认还是取消?","请选择",choices=("确认","取消","不知道")) 696 # print(a) 697 698 699 #--------------------------------为用户提供选项--------------- 700 #----------------------------------------------------------- 701 702 703 #------------choicebox选择列表框(单选)---------- 704 705 # choicebox(msg选择列表内容,title选择列表标题,choices=("选项1","选项2",....)) 706 707 # 选择 返回 选项 708 # import easygui as g 709 # import sys 710 # a = g.choicebox("请选择","这是标题",choices=("选项1","选项2","选项3")) 711 # print(a) 712 713 714 # b = ["选项1","选项2","选项3"] 715 # a = g.choicebox("请选择","这是标题",choices=(b)) 716 # print(a) 717 718 #------------multchoicebox选择列表框(多选)---------- 719 720 # multchoicebox(msg选择列表内容,title选择列表标题,choices=("选项1","选项2",....,**kwargs)) 721 722 # 以列表类型返回,单个参数或者多个参数 723 # import easygui as g 724 # import sys 725 726 # b = ["g1","g2","g3"] 727 # a = g.multchoicebox("请选择","这是标题",choices=(b)) 选项可多选,新增全选和全取消选项 728 # print(a) 729 730 731 #--------------------------------让用户输入消息--------------- 732 #----------------------------------------------------------- 733 734 #----------------enterbox输入框------------- 735 736 # enterbox(msg输入框内容,title输入框标题,default=""输入内容默认为空,strip=True去除首尾空格,image插入图片) 737 738 # 返回用户输入的内容,如果strip = True 将去掉首尾空格, 否则 将空格一起返回 739 # a = g.enterbox("请输入内容","这是标题") 740 # print(a) 741 742 #------------------integerbox输入框(范围)---------- 743 744 # integerbox(msg输入框内容,title输入框标题,default=""输入内容默认为空,lowerbound=0范围最小值,upperbound=99范围最大值,image=None,root=None,**invalidKeywordArguments) 745 746 # 返回范围内的值,超过则重新输入 747 # a = g.integerbox("请输入内容","这是标题",upperbound=10) 只能输入0-10的数值 748 # print(a) 749 750 #------------------multenterbox输入框(多项)---------- 751 752 # multenterbox(msg输入框内容,title输入框标题,fields=()输入框选项,values()选项对应内容) 753 754 # 以列表形式返回选项内的值,没输入的选项用空字符代替。多的话直接截断为选项数量 755 # a = g.multenterbox("请输入内容","这是标题",fields=("1","2","3"),values=("4","5","6")) 756 # print(a) 757 758 #--------------------------------让用户输入密码--------------- 759 #----------------------------------------------------------- 760 761 #------------------passwordbox密码输入框----------- 762 763 # passwordbox(msg输入框内容,title输入框标题,default=""输入框默认值,image图片,root尺寸) 764 765 # 返回输入的内容(密码) 766 # a = g.passwordbox("请输入内容","这是标题") 767 # print(a) 768 769 #------------------multpasswordbox账户密码输入框----------- 770 771 # multpasswordbox(msg输入框内容,title输入框标题,fields=()输入框选项,values()选项对应内容) 772 773 # 返回输入的账户和密码,未输入则返回空值 774 # a = g.multpasswordbox("请输入内容","这是标题",fields=("账户","密码")) 775 # print(a) 776 777 #--------------------------------显示文本内容--------------- 778 #----------------------------------------------------------- 779 780 #------------------textbox文本显示框----------- 781 782 # textbox(msg输入框内容,title标题,text=""文本内容,codebox=0文字比例) 783 784 # 返回文本内的内容,text的内容可以是字符串类型,列表类型,或者元组类型 785 # c = open("record.txt") 786 # a = g.textbox("请输入内容","这是标题",text=c,codebox=0) 787 # print(a) 788 789 #------------------codebox文本显示框----------- 790 791 # codebox(msg输入框内容,title标题,text=""文本内容) 792 793 # 返回文本内的内容,text的内容可以是字符串类型,列表类型,或者元组类型,但是codebox=1,其他用法同上 794 # c = open("record.txt") 795 # a = g.codebox("请输入内容","这是标题",text=c,) 796 # print(a) 797 798 #--------------------------------目录与文件--------------- 799 #----------------------------------------------------------- 800 801 #------------------diropenbox路径选择----------- 802 803 # diropenbox(msg路径框内容,title标题,default=None设置默认路径) 804 805 # 返回选择的路径,点取消则返回空 806 # a = g.diropenbox("请选择打开的目录","这是标题") 807 # print(a) 808 809 #------------------fileopenbox文件打开选择----------- 810 811 # fileopenbox(msg路径框内容,title标题,default="*"默认路径的所有(*)文件,filetypes=None文件类型) 812 813 # 返回选择打开的文件,点取消则返回空,filetypes = ["*.txt"],default="c:\A\*.py" 则显示c:\A文件夹下所有的py文件 814 # a = g.fileopenbox("请选择打开的文件","这是标题",filetypes=("*.py","*.exe")) 815 # print(a) 816 817 #------------------filesavebox保存路径选择----------- 818 819 # filesavebox(msg路径框内容,title标题,default=""设置默认路径,filetypes=None文件类型) 820 821 # 返回选择保存的路径,点取消则返回空 822 # a = g.filesavebox("请选择保存的目录","这是标题",filetypes=("*.py","*.exe")) 823 # print(a) 824 825 #--------------------------------捕获异常--------------- 826 #----------------------------------------------------------- 827 828 # import easygui as g 829 # 830 # try: 831 # print(‘I Love FishC.com!‘) 832 # int(‘FISHC‘) # 这里会产生异常 833 # except: 834 # g.exceptionbox() 把异常显示在文本框里面 835 836 #----------------------------with的相关内容------------------------ 837 # try: 838 # f = open("data.txt","w") 839 # for i in f: 840 # print(i) 841 # except OSError as b: 842 # print("出错啦:"+str(b)) "报错的原因是 文本内不存在内容" 843 # finally: 844 # f.close() 845 846 # ↓↓↓↓↓上面的内容等于下面的内容↓↓↓↓↓↓↓↓ 847 848 # try: 849 # with open("data.txt","w") as f: f = open("data.txt","w") 时刻关注这个文件什么时候没用用到,就自动调用close() 850 # for i in f: with主要是省去关闭文件的麻烦,或者忘记关闭文件 851 # print(i) 852 # except OSError as b: 853 # print("出错啦:"+str(b)) 854 855 # with A() as a: 856 # with B() as b: 857 # suite 858 859 # 等于 860 861 # with A() as a, B() as b: 862 # suite 863 864 865 866 #----------------------------else相关内容------------------------ 867 # if xx : 如果不是这样 就那样 868 # else xx : 869 870 # while xx : 循环完成 执行else的内容 871 # else xx : 872 873 # for xx in xx 循环完成 执行else的内容 874 # else xx : 875 876 # try: 检测错误 877 # xx 878 # except xx : 如果出现错误,执行xx 879 # xx : 880 # else: 如果没出现错误,执行xx。 有出现错误 就不会执行else里的内容 881 # print("没有任何异常") : 882 #----------------------------pickle模块相关内容------------------------ 883 # >>> import pickle 调用pickle 模块 884 # >>> list1 = [123,3.1415,"小甲鱼",["这是一个列表"]] 885 # >>> file = open("list1.pkl","wb") 以二进制写入一个列表 因为列表不是字符串,所以用二进制,永久保存 886 # >>> pickle.dump(list1,file) 把list1放到file里面。这就是dump(倒入) 887 # >>> file.close() 最后要关闭文件 888 # >>> file = open("list1.pkl","rb") 以二进制读取,因为列表不是字符串,所以用二进制 889 # >>> list2 = pickle.load(file) load读括号里的内容。 890 # >>> list2 891 # [123, 3.1415, ‘小甲鱼‘, [‘这是一个列表‘]] 892 # >>> 893 894 #----------------------------出现报错、异常处理------------------------ 895 # try: 检测下面的内容 只要一出现错误,就在错误处直接中断代码 896 # f = open("我为什么是一个文件.txt") 这个文件根本不存在工作目录内 897 # print(f.read()) 打开这个不存在的文件 898 # f.close() "关闭"这个不存在的文件 899 # except OSError: 如果OS,操作系统出错,则返回下面内容 900 # print("文件出错啦") 901 # >>> 902 # 文件出错啦 903 904 # try: 905 # f = open("我为什么是一个文件.txt") 906 # print(f.read()) 907 # f.close() 908 # except OSError as i: 如果是os出错,也就是操作系统出错,i是错误原因 909 # print("文件出错啦\n错误的原因是:" + str(i)) 答应错误原因 910 # >>> 911 # 文件出错啦 912 # 错误的原因是:[Errno 2] No such file or directory: ‘我为什么是一个文件.txt‘ 913 914 915 # try: 916 # sum = 1+"1" 917 # f = open("我为什么是一个文件.txt") 918 # print(f.read()) 919 # f.close() 920 # except OSError as i: 921 # print("文件出错啦\n错误的原因是:" + str(i)) 922 # except TypeError as a: 如果类型出错 返回 923 # print("类型出错啦\n错误的原因是:" + str(a)) 924 # >>> 925 # 类型出错啦 因为sum在第一个,所以sum出错弹出相应内容 然后终止,不进行下面的代码 926 # 错误的原因是:unsupported operand type(s) for +: ‘int‘ and ‘str‘ 927 928 # try: 929 # int("abc") 这个是Value错误, 也就是值错误, 因为abc不能转换成整数 930 # sum = 1+"1" 931 # f = open("我为什么是一个文件.txt") 932 # print(f.read()) 933 # f.close() 934 # except OSError as i: 935 # print("文件出错啦\n错误的原因是:" + str(i)) 936 # except TypeError as a: 937 # print("类型出错啦\n错误的原因是:" + str(a)) 938 # 如果没有定义检测 int("abc")的出错类型,也就是ValueError, 就会报错。 939 # 解决方法有, 但是这个方法会有一些隐藏的错误被屏蔽。 如ctrl+c 强制终止程序,会失效。 940 # except: 用这个代码, 遇到错误直接返回下面的内容 941 # print("不管什么错误,只要有错误,我就会弹出这个窗口") 942 943 944 # try: 945 # sum = 1+"1" 946 # f = open("我为什么是一个文件.txt") 947 # print(f.read()) 948 # f.close() 949 # except (OSError,TypeError): 整合错误 950 # print("出错啦") 951 952 953 # try: 954 # f = open("我为什么是一个文件.txt","w") 955 # print(f.write("我存在了!")) 956 # sum = 1+"1" 957 # except (OSError,TypeError): 958 # print("出错啦") 959 # 960 # finally: 这个语句是,如果前面有出错,不管怎样继续执行finnlly里面的内容 961 # f.close() 这样做的好处就是,如果你写了内容到文件,但是还没关闭的时候出现了一个错误 962 # 这些内容就会丢失, 这时候需要一个出现错误,执行finally里面的内容。 963 # 即使没有错误,也是这个顺序, try检测代码区的内容,然后执行finally里的内容 964 # finally相当于收尾了 965 966 967 # >>> raise raise 引出一个异常 968 # Traceback (most recent call last): 969 # File "<pyshell#1>", line 1, in <module> 970 # raise 971 # RuntimeError: No active exception to reraise 972 # >>> raise ZeroDivisionError("除数为零的异常") raise 引出一个异常,异常的内容就是括号里的内容 973 # Traceback (most recent call last): 974 # File "<pyshell#2>", line 1, in <module> 975 # raise ZeroDivisionError("除数为零的异常") 976 # ZeroDivisionError: 除数为零的异常 977 #----------------------------字符串相关内容------------------------ 978 # >>> "{0} love {1}.{2}".format("i","fis","com") format格式化 979 # ‘i love fis.com‘ 980 981 # >>> "{a} love {b}.{c}".format(a="i",b="fis",c="com") format格式化 982 # ‘i love fis.com‘ 983 984 # >>> "{{0}}".format("不打印") 985 # ‘{0}‘ 986 # >>> "{{0}}" 987 # ‘{{0}}‘ 988 # >>> "{0}".format("不打印") 989 # ‘不打印‘ 990 # >>> 991 992 # >>> "%c" % 97 993 # ‘a‘ 994 995 # >>> "%c %c %c" % (97,98,99) 996 # ‘a b c‘ 997 998 # q = True 999 # while q: 1000 # num = input(‘请输入一个整数(输入Q结束程序):‘) 1001 # if num != ‘Q‘: 1002 # num = int(num) 1003 # print(‘十进制 -> 十六进制 : %d -> 0x%x‘ % (num, num)) 1004 # print(‘十进制 -> 八进制 : %d -> 0o%o‘ % (num, num)) 1005 # print(‘十进制 -> 二进制 : %d -> ‘ % num, bin(num)) print打印会自动屏蔽逗号 1006 # else: 1007 # q = False 1008 #----------------------------变量的相关内容------------------------- 1009 # Local 局部变量 Global 全局变量 1010 # 局部变量不能 1011 1012 1013 #----------------------------闭包函数的相关内容------------------------- 1014 1015 # >>> def a(x): 1016 # def b(y): 1017 # return x * y 1018 # return b 1019 # >>> i = a(8) 1020 # >>> i(5) 1021 # 40 1022 # >>> a(6)(8) 1023 # 48 1024 # >>> 1025 1026 # 会报错的原因是 因为x的变量是放在容器里面的,x属于a()里面, 不属于b()里面, 所以b里面的x没有参数,所以报错 1027 # >>> def a(): 1028 # x = 5 1029 # def b(): 1030 # x *= x 1031 # return x 1032 # return b() 1033 1034 # >>> a() 1035 # Traceback (most recent call last): 1036 # File "<pyshell#34>", line 1, in <module> 1037 # a() 1038 # File "<pyshell#33>", line 6, in a 1039 # return b() 1040 # File "<pyshell#33>", line 4, in b 1041 # x *= x 1042 # UnboundLocalError: local variable ‘x‘ referenced before assignment 1043 1044 1045 # >>> def a(): 1046 # x = 5 1047 # def b(): 1048 # nonlocal x 1049 # x *= x 1050 # return x 1051 # return b() 1052 1053 # >>> a() 1054 # 25 1055 1056 1057 # 列表不是放在容器里面的, 所以在b()里面不会报错 1058 # >>> def a(): 1059 # x = [5] 1060 # def b(): 1061 # x[0] *= x[0] 1062 # return x[0] 1063 # return b() 1064 1065 # >>> a() 1066 # 25 1067 1068 # 局部变量和全局变量 1069 # >>> c = 5 1070 # >>> def b(): 1071 # c = 10 1072 # print(c) 1073 1074 # >>> b() 1075 # 10 1076 # >>> print(c) 1077 # 5 1078 # >>> def b(): 1079 # global c 1080 # c = 10 1081 # print(c) 1082 # >>> b() 1083 # 10 1084 # >>> print(c) 1085 # 10 1086 1087 1088 # def funX(): 1089 # x = 5 1090 # def funY(): 1091 # nonlocal x x一直没有被释放 所以一直叠加 1092 # x += 1 1093 # print("x是",x) 1094 # return x 1095 # return funY 1096 # a = funX() 1097 # print(a()) 一直访问funY() 1098 # print(a())一直访问funY() 1099 # print(a())一直访问funY() 1100 1101 #----------------------------函数的相关内容------------------------- 1102 # def add(a,b): 定义函数 1103 # return(a+b) 1104 # print(add(4,5)) 1105 # 11 1106 1107 # >>> def ba(name): 1108 # ‘参数的内容‘ 1109 # print("xxxx"+name+"cccc") 1110 1111 # >>> ba.__doc__ 1112 # ‘参数的内容‘ 1113 1114 # >>> def cc(x,y): 1115 # print(x+"-"+y) 1116 1117 # >>> cc("20","1")定义参数标签,防止混淆 1118 # 20-1 1119 # >>> cc(y="1",x="20") 1120 # 20-1 1121 1122 # >>> def cc(x="x",y="y"): 定义默认参数 1123 # print(x+"-"+y) 1124 # >>> cc() 1125 # x-y 1126 # >>> cc("1","2") 1127 # 1-2 1128 # >>> 1129 1130 # >>> def oo(*c): 收集参数 1131 # print("参数的长度是:",len(c)); 1132 # print("第二个参数是:",c[1]); 1133 1134 # >>> oo(1,2,3,4) 1135 # 参数的长度是: 4 1136 # 第二个参数是: 2 1137 1138 1139 # >>> def oo(*c,a=1): 收集参数函数里再添加参数 1140 # print("参数的长度是:",len(c),a); 1141 # print("第二个参数是:",c[1],a); 1142 1143 1144 # >>> oo(7,8,9,10) 1145 # 参数的长度是: 4 1 1146 # 第二个参数是: 8 1 1147 1148 #------------------匿名函数------------------------------ 1149 # >>> g = lambda x: x * 2+1 1150 # >>> g(5) 1151 # 11 1152 # >>> g = lambda x,y:x+y 1153 # >>> g(5,6) 1154 # 11 1155 # >>> 1156 1157 1158 # c=list(map(lambda x, y : [x, y], (1, 3, 5, 7,9), (2, 4, 6, 8, 10))) 1159 # print(c) 1160 # >>> 1161 # [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]] 1162 1163 #------------------递归函数------------------------------ 1164 # def cc(x): 1165 # a = x 1166 # print("这个a是",a) 1167 # for i in range(1,x): 1168 # print("i是",i) 1169 # a *= i 1170 # print("a是",a) 1171 # print("最后的a是",a) 1172 # return a 1173 # 1174 # b = int(input("输入一个数字:")) 1175 # ff = cc(b) 1176 # print("%d 的阶层是 %d"% (b,ff)) 1177 1178 1179 # def cc(n): 1180 # print("cc(n)是",n) 1181 # if n == 1: 1182 # return n 1183 # else: 1184 # print("n是",n) 1185 # return n * cc(n-1) 1186 # c = int(input("请输入一个正整数:")) 1187 # b = cc(c) 1188 # print("%d 的阶层是: %d" % (c,b)) 1189 # 解析 1190 # cc(5) = 5 * cc(4) ↑ 1191 # cc(4) = 5 * cc(3) ↑ 1192 # cc(3) = 5 * cc(2) ↑ 1193 # cc(2) = 5 * cc(1) ↑ 1194 # cc(1) = 1 ↑ 1195 1196 # def power(x, y): 求x的y次方 1197 # if y: 1198 # return x * power(x, y-1) 1199 # else: 1200 # return 1 1201 # 1202 # print(power(3, 3)) 1203 # 解析 1204 # def power(x, y): 1205 # if y: 1206 # return x =3 * power(3, 2) = 9 1207 # x =3 * power(3, 1) = 3 1208 # x=3 * power(3, 0) = 1 这个1是下面那个return返回的1 1209 # else: 1210 # return 1 1211 1212 1213 #------------------递归函数 汉诺塔-------------------- 1214 # def cc(n,a,b,c): 1215 # if n == 1: 1216 # print(a,"->",c) 1217 # return 1218 # else: 1219 # cc(n-1,a,c,b) cc(1,a,b,c) 1220 # cc(1,a,b,c) cc(1,a,c,b) 1221 # cc(n-1,b,a,c) cc(1,c,a,b) 1222 # b = int(input("请输入盘数:")) 1223 # cc(b,"1杆","2杆","3杆") 1224 1225 #------------------过滤器------------------------------ 1226 # >>> list(filter(None,[1,0,False,True])) 1227 # [1, True] 1228 1229 1230 # >>> def odd(x): 筛选奇数 1231 # return x % 2 1232 # >>> temp = range(10) 1233 # >>> show = filter(odd,temp) 1234 # >>> list(show) 1235 # [1, 3, 5, 7, 9] 1236 # >>> 1237 1238 # >>> list(filter(lambda x:x%2,temp)) 和匿名函数结合使用 更简洁 1239 # [1, 3, 5, 7, 9] 1240 1241 #------------------map映射------------------------------ 1242 # >>> list(map(lambda x:x*2,temp)) 对每个可迭代元素加工计算,然后返回 1243 # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 1244 1245 #----------------------------循环相关内容--------------------------- 1246 1247 # while 条件: while循环, 如果条件为真, 将一直循环 1248 # for 目标 in 表达式: 表达式可以是 数组,字符串, 目标 依次循环 表达式 1249 # print(xx) 表示打印显示xx内容 ,print(xx , end = " ") print每次打印 默认换行,end表示结尾做什么,end = " "就表示结尾不换行,用空格代替 len(xx)表示取文本长度" 1250 # range(开始数 , 结束数 , 每次递增) 跟for搭配 如: for i in range(1,10,2): 1251 # list(range(5)) 表示把参数生产列表,输出[0,1,2,3,4] 1252 # 循环体 里 输入 break 可以跳出循环 1253 # 循环体 里 输入 continue 可以跳出本局循环,进行下一组循环 1254 1255 #----------------------------字典相关内容----------------------------- 1256 # >>> list3={‘李宁‘:‘一切皆有可能‘,‘耐克‘:‘Just do It‘} 1257 # >>> print("耐克的口号是:",list3["耐克"]) 1258 # 耐克的口号是: Just do It 1259 1260 1261 1262 # 也可以是数字 1263 # >>> list4={1:"one",2:"two",3:"three"} 1264 # >>> list4 1265 # {1: ‘one‘, 2: ‘two‘, 3: ‘three‘} 1266 # >>> list4[1] 1267 # ‘one‘ 1268 1269 # 创建字典的两个方法 1270 # >>> dict3 = dict((("F",70),("i",105),("s",115),("h",104),("c",67))) 1271 # >>> dict3 1272 # {‘F‘: 70, ‘c‘: 67, ‘s‘: 115, ‘h‘: 104, ‘i‘: 105} 1273 # >>> dict4 = dict(小甲鱼="让变成改变世界",耐克="Just do It") 1274 # >>> dict4 1275 # {‘耐克‘: ‘Just do It‘, ‘小甲鱼‘: ‘让变成改变世界‘} 1276 1277 # 改变字典的内容 1278 # >>> dict4["耐克"]="改变一下" 1279 # >>> dict4 1280 # {‘耐克‘: ‘改变一下‘, ‘小甲鱼‘: ‘让变成改变世界‘} 1281 1282 # 添加字典的内容 1283 # >>> dict4["添加"]="添加的内容" 1284 # >>> dict4 1285 # {‘耐克‘: ‘改变一下‘, ‘添加‘: ‘添加的内容‘, ‘小甲鱼‘: ‘让变成改变世界‘} 1286 1287 # 字典的fromkeys 批量添加 1288 # >>> dict1 = {} 1289 # >>> dict1.fromkeys((1,2,3)) 1290 # {1: None, 2: None, 3: None} 没有内容 1291 # >>> dict1.fromkeys((1,2,3),(4,5,6)) 1292 # {1: (4, 5, 6), 2: (4, 5, 6), 3: (4, 5, 6)} 添加内容 1293 # >>> dict1.fromkeys((1,2,3),"cc") 1294 # {1: ‘cc‘, 2: ‘cc‘, 3: ‘cc‘} 1295 # >>> dict1.fromkeys((1,3),"cc") 不能改某个键的值,这样写只能重新创建一个新的字典 1296 # {1: ‘cc‘, 3: ‘cc‘} 1297 1298 #----------------字典的 keys和values和items-------------- 1299 1300 # 创建字典的几种方法 1301 # >>> a = dict(one=1, two=2, three=3) 1302 # >>> b = {‘one‘: 1, ‘two‘: 2, ‘three‘: 3} 1303 # >>> c = dict(zip([‘one‘, ‘two‘, ‘three‘], [1, 2, 3])) 1304 # >>> d = dict([(‘two‘, 2), (‘one‘, 1), (‘three‘, 3)]) 1305 # >>> e = dict({‘three‘: 3, ‘one‘: 1, ‘two‘: 2}) 1306 1307 1308 1309 1310 # >>> dict3 = {} 1311 # >>> dict3=dict3.fromkeys(range(3),"赞") 1312 # >>> dict3 1313 # {0: ‘赞‘, 1: ‘赞‘, 2: ‘赞‘} 1314 # >>> for i in dict3.keys(): 1315 # print(i) 1316 1317 1318 # 0 1319 # 1 1320 # 2 1321 1322 1323 1324 # >>> for i in dict3.values(): 1325 # print(i) 1326 1327 1328 # 赞 1329 # 赞 1330 # 赞 1331 1332 # >>> for i in dict3.items(): 1333 # print(i) 1334 1335 1336 # (0, ‘赞‘) 1337 # (1, ‘赞‘) 1338 # (2, ‘赞‘) 1339 1340 #-----------判断值是否在字典中------------ 1341 # >>> dict3.get(3,"木有!") 判断有没有在字典中, 没有就回复 “木有” 有就回复键对应的值 1342 # ‘木有!‘ 1343 # >>> dict3.get(2,"木有!") 1344 # ‘赞‘ 1345 1346 # >>> 2 in dict3 1347 # True 1348 # >>> 3 in dict3 1349 # False 1350 #----------------清空字典------------ 1351 # >>> dict3 1352 # {0: ‘赞‘, 1: ‘赞‘, 2: ‘赞‘} 1353 # >>> dict3.clear() 1354 # >>> dict3 1355 # {} 1356 1357 # >>> a = {"a":"b"} 1358 # >>> a 1359 # {‘a‘: ‘b‘} 1360 # >>> b = a 1361 # >>> b 1362 # {‘a‘: ‘b‘} 1363 # >>> a={} 这个a = {}也能清空,但是不严谨。但是字典还存在内存中 1364 # >>> a 1365 # {} 1366 # >>> b 1367 # {‘a‘: ‘b‘} 1368 1369 1370 # >>> b 1371 # {‘a‘: ‘b‘} 1372 # >>> a = b 1373 # >>> 1374 # >>> a 1375 # {‘a‘: ‘b‘} 1376 # >>> a.clear() 这个a.clear() 才会把字典清除 1377 # >>> a 1378 # {} 1379 # >>> b 1380 # {} 1381 1382 #----------------拷贝字典------------ 1383 # >>> a = {1:"one",2:"two",3:"three"} 1384 # >>> b = a.copy() 1385 # >>> c = a 1386 # >>> a 1387 # {1: ‘one‘, 2: ‘two‘, 3: ‘three‘} 1388 # >>> b 1389 # {1: ‘one‘, 2: ‘two‘, 3: ‘three‘} a = c 其实只是给 字典贴了两个便签而已 1390 # >>> c 1391 # {1: ‘one‘, 2: ‘two‘, 3: ‘three‘} 1392 # >>> id(a) 1393 # 48073992 1394 # >>> id(b) 1395 # 48191112 1396 # >>> id(c) 1397 # 48073992 1398 1399 1400 # >>> a 1401 # {1: ‘one‘, 2: ‘two‘, 3: ‘three‘} 1402 # >>> a.popitem() 随机删除 1403 # (1, ‘one‘) 1404 # >>> a 1405 # {2: ‘two‘, 3: ‘three‘} 1406 # >>> a.setdefault(5,"小白") 相当于添加 1407 # ‘小白‘ 1408 # >>> a 1409 # {2: ‘two‘, 3: ‘three‘, 5: ‘小白‘} 1410 # >>> a.pop(5) 指定删除并返回 1411 # ‘小白‘ 1412 # >>> a 1413 # {2: ‘two‘, 3: ‘three‘} 1414 # >>> 1415 1416 1417 # 把一个字典添加到另一个字典 1418 # >>> a = {1: ‘one‘, 2: ‘two‘, 3: ‘three‘} 1419 # >>> a.setdefault("小白") 1420 # >>> a 1421 # {1: ‘one‘, 2: ‘two‘, 3: ‘three‘, ‘小白‘: None} 1422 # >>> b = {"小白":"狗"} 1423 # >>> a.update(b) 把一个字典添加到另一个字典 1424 # >>> a 1425 # {1: ‘one‘, 2: ‘two‘, 3: ‘three‘, ‘小白‘: ‘狗‘} 1426 # >>> 1427 #----------------------------集合的相关内容------------------------------ 1428 # 创建集合,集合里每个元素都是唯一的。 没办法索引。 1429 # >>> set1 = set([1,2,3,4,5,5]) 1430 # >>> set1 1431 # {1, 2, 3, 4, 5} 自动去除重复的元素,留下唯一的值 1432 # >>> 1 in set1 用in / not in 判断某个元素 是否在集合中 1433 # True 1434 # >>> "1" in set1 1435 # False 1436 # >>> set1.add(6) 用add增加某个元素到集合中 1437 # >>> set1 1438 # {1, 2, 3, 4, 5, 6} 1439 # >>> set1.remove(5) 用remove集合中的某个值 1440 # >>> set1 1441 # {1, 2, 3, 4, 6} 1442 1443 # >>> a = frozenset([1,2,3,4,5]) frozenset集合是不可修改的, 修改将报错 1444 # >>> a 1445 # frozenset({1, 2, 3, 4, 5}) 1446 # >>> a.add(0) 修改将报错 1447 # Traceback (most recent call last): 1448 # File "<pyshell#10>", line 1, in <module> 1449 # a.add(0) 1450 # AttributeError: ‘frozenset‘ object has no attribute ‘add‘ 1451 # >>> 1452 1453 # 查看集合数量用len(a) 1454 #----------------------------数组相关内容----------------------------- 1455 1456 # 创建列表 如 a = [1,2,3,4,5] 1457 # 添加元素到列表 如a.append("xxxx") 1458 # 添加列表到列表 如a.extend(["xxx","xxx"]) 1459 # 添加元素并且选择加入的位置 如a.insert(0,"xxx") 1460 # 取数组,如a[0]表示取数组的第一个元素 1461 # 删除元素, 如a.remove("xxx") 1462 # 删除元素, 如del member[1] 指删除数组第一个 1463 # 删除元素, 如member.pop(1) 指删除数组第一个,并且能给剔除的元素命名 1464 # 取区间元素, 如a[1:3] 就取1、2的元素。 1465 # 取区间元素,设置步长 如a[0:8:2]的意思是。取0 、 2 、 4 、 6 、 8 元素对应的内容 1466 # 对列表进行排序 如a.sort(x) 1467 # 取列表内某元素的个数, 如a.count(1),查看1在a里面有多少个 1468 # 查看列表内某元素索引位置, 如a.index(1,3,10),查看1在a里面的位置,范围是3-10 1469 # 翻转列表,a.reverse() 1470 # d.sort(),从小到大排序 d.sort(reverse=True) ,反向排序 1471 # 清空列表 a.clerr() 1472 # 替换元素list1 = [1, [1, 2, [‘小甲鱼‘]], 3, 5, 8, 13, 18] 1473 # list1[1][2][0] = ‘小鱿鱼‘ 这就把"小甲鱼"替换成"小鱿鱼" 1474 # copy()拷贝一个副本 1475 1476 # 列表间可以判断大小,如a = [123,456] b = [234,123] 则输入a < b 返回True,只判断第一个元素大小 1477 # 如果a + b 则输出[123,456,234,123] 1478 # 如果a * 3 则输出[123,456,123,456,123,456] 1479 # 另一个表达 d *= 3 1480 # 判断某个元素 是否在列表中 ,如123 in a 返回True, 还有123 not in a返回False 1481 # 创建一个元组,如a = (1,2,3) 元组是没办法修改里面的元素。如果要修改,有其他方法 1482 # 如:a = (1,2,3) 1483 # 如:a = a[:1]+("xx",)+a[1:] ,元素后面要加逗号,不然python会判断为整数或者其他非元素类型 1484 # 字符串同, 如:b="I love me" b = b[:6]+"插入的内容" + b[6:] 1485 # 删除整个元组,del a 这就把a这个元组删除 1486 # sorted(xx) 对xx列表进行排序 1487 # list(reversed(xx)) 对xx列表进行翻转 1488 # list(enumerate(xx)) 输出[(0,1),(1,2),(2,5)] 1489 1490 # a = [1,2,3,4] 1491 # b = [7,6,5] 1492 # list(zip(a,b)) 1493 # 输出 [(1,7),(2,6),(3,5)] 1494 1495 # list1=[‘1.Just do It‘,‘2.一切皆有可能‘] 1496 # >>> list2=[‘2.李宁‘,‘1.耐克‘] name、slogan是列表里的变量,name、和slogan会遍历所有列表里的内容。name(0)指遍历所有元素的开头字符串。 1497 # >>> list3 = [name + ‘:‘ + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]] 1498 # >>> for each in list3: 1499 # print(each) 1500 1501 # >>> list1=[‘李宁‘,‘耐克‘] 1502 # >>> list2=[‘Just do It‘,‘一切皆有可能‘] 1503 # >>> print("李宁的口号是:",list2[list1.index("李宁")]) 1504 # 李宁的口号是: Just do It 1505 1506 # >>> e = [123,["wc","qq"],456] 1507 # >>> "wc" in e 1508 # False 1509 # >>> "wc" in e[1] 访问列表中的元素中的元素 1510 # True 1511 # >>> 1512 # >>> e[1][1] 访问列表中的元素的元素 第几项 1513 # ‘qq‘ 1514 1515 # >>> list1 = [1,3,2,9,7,8] 1516 # >>> list2 = list1[:] 仅仅是复制文本,list2不会因为list1的变化而变化 1517 # >>> list3 = list1 这个list3会完全复制list1。随着list1的变化而变化 1518 # >>> list1.sort() sort排序 1519 # >>> list1 1520 # [1,2,3,7,8,9] 1521 # >>> list2 1522 # [1,3,2,9,7,8] 1523 # >>> list3 1524 # [1,2,3,7,8,9] 1525 1526 # >>> list2 = list1.copy() 1527 # >>> list2 1528 # [1, [1, 2, [‘小甲鱼‘]], 3, 5, 8, 13, 18] 1529 1530 # >>> name = member.pop(1) 1531 # >>> name 1532 # "XXX" 1533 1534 # >>> f=list() 1535 # >>> f 1536 # [] 1537 # >>> b = "I XXX XXX" 1538 # >>> b = list(b) 1539 # >>> b 1540 # [‘I‘, ‘ ‘, ‘X‘, ‘X‘, ‘X‘, ‘ ‘, ‘X‘, ‘X‘, ‘X‘] 1541 # >>> 1542 1543 # >>> max(1,2,3,4,5) 取参数最大值 1544 # 5 1545 1546 # >>> min(1,2,3,4,5) 取参数最小值 1547 # 1 1548 1549 # >>> c = (1.1,2.2,3.3) 1550 # >>> sum(c) 1551 # 6.6 1552 1553 # >>> c = (1,2,3) 1554 # >>> sum(c,8) 1555 # 14 1556 #-------------------------------------------------------------------------------- 1557 #--------------------------------- 系统文件的先关内容 ------------------------------- 1558 #-------------------------------------------------------------------------------- 1559 # >>> f = open("E:\\record.txt") 1560 # >>> f 1561 # <_io.TextIOWrapper name=‘E:\\record.txt‘ mode=‘r‘ encoding=‘cp936‘> 1562 # >>> f.read() 这里开始输出read.txt里面的内容 1563 #‘小客服:.............................‘ 1564 # >>> f.read() read就像一个标签一样 1565 # ‘‘ 再次调用就从文本末尾输出,前面的read没有设置末尾参数,所以直接到末尾。所以到后面的read就什么都读取不到。 1566 1567 # >>> f.close() 1568 # >>> f = open("E:\\record.txt") 1569 # >>> f.read(5) 读取5个字符 1570 # ‘小客服:小‘ 1571 # >>> f.tell() tell相当于标签,读取到哪里在哪里, tell的意思是读取字节, 因为一个中文相当于2个字节,所以返回9 1572 # 9 1573 1574 # >>> f.seek(2,0) 意思是把只能指到2字节的位置,如果第一是文字,选1字节会报错 1575 # 2 1576 # >>> f.readline() 返回一行到指针的位置。 1577 # ‘客服:小甲鱼,今天有客户问你有没有女朋友?\n‘ 这里从第二个字节开始到一行,所以“小”没有了 1578 # >>> f.seek(45,0) 1579 # 45 1580 # >>> f.readline() 1581 # ‘小甲鱼:咦??\n‘ 1582 1583 1584 # >>> for i in f: 迭代每一行,官方推荐的方法。 1585 # print(i) 1586 1587 1588 # 小客服:小甲鱼,今天有客户问你有没有女朋友? 1589 1590 # 小甲鱼:咦?? 1591 1592 # 小客服:我跟她说你有女朋友了! 1593 1594 # ....... 1595 1596 # ....... 1597 1598 #------------------------写入文本------------------- 1599 1600 # >>> f=open("E:\\yi.txt","w") 写入用w。 1601 # >>> f.write("python文件操作命令") write写入内容,返回写入的字节 1602 # 12 1603 # >>> f.close() 写入后要关闭, 不然等于未更新状态 1604 # >>> 1605 1606 # >>> (c,b) = [1,2] 1607 # >>> c 1608 # 1 1609 # >>> b 1610 # 2 1611 1612 # >>> i ="小甲鱼:我靠你的呀" 用split来分割字符串 1613 # >>> (c,b) = i.split(":",1) 1614 # >>> c 1615 # ‘小甲鱼‘ 1616 # >>> b 1617 # ‘我靠你的呀‘ 1618 #--------------------------------------------------------- 1619 1620 # >>> name = "小甲鱼" 1621 # >>> ‘鱼‘ in name 1622 # True 1623 # >>> ‘肥鱼‘ in name 1624 # False 1625 1626 # i = i + 1 这个等于 i += 1 1627 1628 # s为字符串 1629 1630 # s.isalnum() 所有字符都是数字或者字母,为真返回True,否则返回False 1631 1632 # s.isalpha() 所有字符都是字母,为真返回True,否则返回False 1633 1634 # s.isdigit() 所有字符都是数字,为真返回True,否则返回False 1635 1636 # s.islower() 所有字符都是小写,为真返回True,否则返回False 1637 1638 # s.isupper() 所有字符都是大写,为真返回True,否则返回False 1639 1640 # s.istitle() 所有单词都是首字母大写,为真返回True,否则返回False 1641 1642 # s.isspace() 所有字符都是空白字符,为真返回True,否则返回False 1643 1644 # 例如: 1645 # >>> s = ‘I love xx‘ 1646 # >>> s.isupper() 1647 # >>> True 1648 1649 # int()整数 1650 # float()浮点数 1651 # str()字符串 1652 1653 # assert 3 > 4 assert称之为"断言" 判断语言 如果是错误的,抛出AssertionError 主要用于检查代码,判断代码 终止,只有条件为真才能进行 1654 # small = x if x < y else y ; 选出最小 如 x , y , z = 1 , 2 , 3 small = x if (x < y and x < z) else (y if y < z else z) 1655 1656 # if else = elif
# type(xx) 意思为判断xx 的类型为什么, 整数为int,浮点数为float,字符为str,布尔为bool
# isinstance(xx,cc) 意思为你来判断xx是否为cc类型, 如果是则返回True 不是则返回False
# help(xx) 意思是请求帮助,查看xx的用法
# dir(__builtins__) 查看所有的内置函数# dir(xxx)查看某某内置函数的用法 如dir(list) 查看列表的用法# import xx 调用什么模块# import os 调用操作模块# import pickle 把字符串转换数据,pickle是泡菜的意思
# import timeit# timeit.__doc__ 查看doc属性# dir(timeit) 如果有__all__ 就说明有哪些函数是作者希望我们能调用的# timeit.__all__ 查看可以在外调用的函数# form timeit import * 这样能调用的函数 只有__all__里面的函数# timeit.__file__ 查看源代码所在的文件位置,以便浏览# help(timeit) 比doc详细一点,比帮助文档简单一点。
# import random # secret = random.randint(1,10) 创建1 - 10 的随机数# a = r.choice([1, 2, -1, -2]) 在其中随机选一个数字# locals() 以字典形式弹出当前所有局部变量# globals() 以字典形式弹出当前所有全局变量
# >>> import easygui# >>> easygui.msgbox("我我我") 这个调用代码比较长,不推荐# ‘OK‘# >>> from easygui import* 这个调用代码有覆盖其他函数的可能,慎用# >>> msgbox("shishieryi")# ‘OK‘# >>> import easygui as c 这个推荐使用# >>> c.msgbox("gag")# ‘OK‘# import math as m m.sqrt(ab) 开方
# a.copy() 浅拷贝, 只能拷贝到浅层,如果拷贝字典,字典里有列表,列表里的内容就无法拷贝到。所以修改列表,拷贝项也会相应改变
# import copy# dict2 = copy.deepcopy(dict1) 深拷贝,能拷贝到字典里的列表。 就是能细分拷贝
# >>> import sys# >>> sys.path 模块存放文件夹 ,模块放在里面可以查询到# [‘‘, ‘F:\\python3.3.2\\Lib\\idlelib‘, ‘C:\\Windows\\SYSTEM32\\python33.zip‘, ‘F:\\python3.3.2\\DLLs‘, ‘F:\\python3.3.2\\lib‘, ‘F:\\python3.3.2‘, ‘F:\\python3.3.2\\lib\\site-packages‘]# >>> # >>> sys.path.append("F:\\py") 可以添加其他路径
#--------------------------------python爬虫相关内容---------------#-----------------------------------------------------------# >>> import urllib.request 网络模块# >>> urllib.request.urlopen("http://www.fishc.com") 打开制定网站,返回对象# <http.client.HTTPResponse object at 0x0000000002EBA4E0># >>> response = urllib.request.urlopen("http://www.fishc.com") # >>> html = response.read() 读网页对象# >>> print(html)# b‘<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML.......................# .......... 特别乱,要解码才能顺序,才能按网页照搬# .......# ....# .# >>> html = html.decode("utf-8") 解码。# >>> print(html)# <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
# "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"># ........
# ..........# .......# ....# .# -----------------------获取解码# import urllib.request as r# import chardet as c# # a = input("请输入URL:")# response = r.urlopen(a).read()# b = c.detect(response) 这是一个获取解码的模块# c = b["encoding"]# print("该网页使用的编码是:",c)
# -----------------------爬一张网络图片# import urllib.request as r# # response = r.urlopen("http://placekitten.com/400/600")# cat_img = response.read()# # # with open("cat_400_600.jpg","wb") as f: 因为图片也是二进制组成,所以用w读写,d二进制读写来创建# f.write(cat_img) 把获取的内容 写入到上面的文件# # >>> response.geturl() 可以用geturl来获取url,网址# ‘http://placekitten.com/400/600‘# >>> response.info() 返回的是一个服务器信息# <http.client.HTTPMessage object at 0x0000000002CEA2B0># >>> print(response.info())# Date: Wed, 22 Feb 2017 01:19:43 GMT# Content-Type: text/plain# Content-Length: 0# Connection: close# Set-Cookie: __cfduid=d3b173113a2894991cc087573526acf711487726383; expires=Thu, 22-Feb-18 01:19:43 GMT; path=/; domain=.placekitten.com; HttpOnly# Accept-Ranges: bytes# X-Powered-By: PleskLin# Access-Control-Allow-Origin: *# Cache-Control: public# Expires: Thu, 31 Dec 2020 20:00:00 GMT# Server: cloudflare-nginx 这是网站使用的服务器信息# CF-RAY: 334e9c8af3a72894-SJC# >>> response.getcode() 获取http的状态 ,返回200 就是正常工作# 200
#--------------------------------模块内测试的方法---------------#-----------------------------------------------------------# if __name__=="__main__"因为main是正在运行的程序自身,只有在模块自运行的时候,才能显示执行的内容,如果在调用这个模块的时候就不会运行# xxxx 执行的内容 #--------------------------------迭代器的创建---------------#-----------------------------------------------------------# iter() next() __next__()# __iter__(self) return self, 只要有iter 那就是一个迭代器,它本身就是迭代器,所以返回本身
#--------------------------------生成器的创建---------------#-----------------------------------------------------------# 在函数中写入yield .. 就是一个生成器,其作用可以中断函数。如果有下一个yield 则从下一个yield开始函数剩余部分。# >>> def myGen():# print("生成器被执行!")# yield 1# yield 2# # # >>> myG = myGen()# >>> next(myG)# 生成器被执行!# 1# >>> next(myG)# 2# >>> next(myG)# Traceback (most recent call last):# File "<pyshell#10>", line 1, in <module># next(myG)# StopIteration
# >>> for i in myGen():# print(i)# # # 生成器被执行!# 1# 2
# >>> def libs():# a = 0# b = 1# while True:# a,b = b , a + b# yield a 相当于终止返回。 所以不会一直循环。# # >>> for each in libs():# if each > 100:# break# print(each,end=" ")# # # 1 1 2 3 5 8 13 21 34 55 89
# >>> e = (i for i in range(10)) 生成器推倒式# >>> e# <generator object <genexpr> at 0x0000000002E1A2D0># >>> next(e)# 0# >>> next(e)# 1# >>> next(e)# 2# >>> for each in e:# print(each)# # # 3# 4# 5# 6# 7# 8# 9# >>> sum((i for i in range(100) if i % 2)) 生成器推倒式# 2500# >>> sum(i for i in range(100) if i % 2 )# 2500# >>>
#--------------------------------创建类class---------------#-----------------------------------------------------------
# class One1: # 类名 必须大写开头# # # 属性# color = "green"# weight = 10# legs = 4# shell = True# mouth = "大嘴"# # # 方法# def d1(xx):# print("您调用了d1")# # def d2(xx):# print("您调用了d2")# # def d3(xx):# print("您调用了d3")# # def d4(xx):# print("您调用了d4")# # def d5(xx):# print("您调用了d5")
# >>> a = One1() 调用类# >>> a.d1() # 您调用了d1
# >>> class MyLsit(list): 继承list的方法# pass# # >>> list2 = MyLsit() 相当于 list()# >>> list2# []
# >>> list1 = list()# >>> list1# []
# >>> class A:# def fun(self):# print("我是A")# # # >>> class B:# def fun(self):# print("我是B")# # # >>> a = A()# >>> b = B()# >>> a.fun() 多态的。# 我是A# >>> b.fun()# 我是B
# class Name:# na = "小甲鱼"# # def pr(ba):# print(ba.na) 要用ba.na 才能引用
# class Ball:# def setName(b,x):# b.c= x# # def kick(b):# print("我叫%s,该死的,谁踢我..." % b.c)# # # >>> a = Ball()# >>> a.setName("球A")# >>> a.kick()# 我叫球A,该死的,谁踢我...
# class Ball:# def __init__(b,x):# b.c= x# # def kick(b):# print("我叫%s,该死的,谁踢我..." % b.c)# # >>> a = Ball("土豆")# >>> a.kick()# 我叫土豆,该死的,谁踢我...
#-----------------------属性的公有和私有
# class Ball():# __name = "我是私有的" 加了双下划线就是私有属性,只有在类里面才能访问# name1 = "我是公有的" 这个是公有属性, 在类外面一样可有访问# # def kick(b):# return b.__name# >>> a = Ball()# >>> a.name1# ‘我是公有的‘# >>> a.__name# Traceback (most recent call last): 报错了# File "<pyshell#2>", line 1, in <module># a.__name# AttributeError: ‘Ball‘ object has no attribute ‘__name‘# >>> a.kick()# ‘我是私有的‘# >>> a._Ball__name 访问方法。 # ‘我是私有的‘
# >>> class A:# def hello(self):# print("正在调用父类的方法...")# # >>> class C(A): 类的继承,如果有同名的属性或者方法,继承的时候子类会覆盖父类。# pass # >>> p = A()# >>> p.hello()# 正在调用父类的方法...# >>> c = A()# >>> c.hello()# 正在调用父类的方法...#-----------------------# import random as r# # class Fish:# def __init__(self):# self.x = r.randint(0,10)# self.y = r.randint(0,10)# # def move(self):# self.x -= 1# print("我的位置是",self.x,self.y)# # class G(Fish):# pass# # class C(Fish):# pass# # class S(Fish):# pass# # class Sa(Fish):# def __init__(b): 因为父类也有init 所以子类会覆盖父类,所以要调用父类的init方法# #Fish.__init__(b) 两个作用一样# super().__init__() 两个作用一样# b.e = True# # def eat(b):# if b.e:# print("吃吃吃")# b.e = False# # else:# print("不吃了")# ---------------------------- 多样继承# >>> class B:# def b(b):# print("我是b,我为大B代言")# # # >>> class C:# def c(c):# print("我是c,我为大C代言")# # # >>> class D:# def d(d):# print("我是d,我为大d代言")# # # >>> class F(B,C,D):# pass# # >>> f = F()# >>> f.b()# 我是b,我为大B代言# >>> f.c()# 我是c,我为大C代言# >>> f.d()# 我是d,我为大d代言
#------------------类的组合# class Turle:# def __init__(self,x):# self.num = x# # class Fish:# def __init__(self,x):# self.num = x# # class Pool:# def __init__(self,x,y):# self.turtle = Turtle(x)# self.fish = Fish(y)# # def print_num(self):# print("水池里总共有乌龟 %d 只,小鱼 %d 条!" % (self.turtle.num,self.fish.num)
#--------------------类属性和实例属性# class C:# num = 0 num和C.count是类属性,其他是实例属性。self其实就是绑定# def __init__(self):# self.x = 4# self.y = 5# C.count = 6
# class C:# def x(self):# print(‘Xman‘)# # >>> c = C() 如果对象的属性跟方法名字相同,属性会覆盖方法# >>> c.x()# Xman# >>> c.x = 1# >>> c.x# 1# >>> c.x()# Traceback (most recent call last):# File "<pyshell#20>", line 1, in <module># c.x()# TypeError: ‘int‘ object is not callable
#--------------------跟踪绑定数量,查看有多少个实例对象参数和删除# class L:# count = 0# def __init__(self):# L.count += 1# # def __del__(self):# L.count -= 1
#--------------------判断继承关系,是否继承# >>> class A:# pass# # >>> class B(A):# pass# # >>> issubclass(B,A) B继承A# True# >>> issubclass(B,B)# True# >>> issubclass(B,object)# True# >>> class C:# pass# # >>> issubclass(B,C)# False# >>>
#--------------------判断实例对象关系,是否是它的实例对象# >>> b1 = B()# >>> isinstance(b1,B) b1 是 B的实例对象# True# >>> isinstance(b1,A) b1 也是 A的实例对象,因为上题可以看出B继承A# True# >>> isinstance(b1,C)# False# >>> isinstance(b1,(A,B,C))# True# >>>
#--------------------判断属性是否在类里面# >>> class C:# def __init__(self,x=0):# self.x=x# # # >>> c1 = C()# >>> hasattr(c1,"x")# True
#--------------------访问类属性的值,def的值# >>> getattr(c1,"x")# 0# >>> getattr(c1,"y")# Traceback (most recent call last):# File "<pyshell#26>", line 1, in <module># getattr(c1,"y")# AttributeError: ‘C‘ object has no attribute ‘y‘# >>> getattr(c1,"y","您所访问的属性不存在")# ‘您所访问的属性不存在‘#--------------------访问类属性的值,不存在就创建# >>> setattr(c1,"y","FishC")# >>> getattr(c1,"y","您所访问的属性不存在")# ‘FishC‘#--------------------删除属性,不存在就报错# >>> delattr(c1,"y")# >>> delattr(c1,"y")# Traceback (most recent call last):# File "<pyshell#31>", line 1, in <module># delattr(c1,"y")# AttributeError: y
#--------------------属性定义属性,property的用法# >>> class C:# def __init__(self,size = 10):# self.size = size# def getSize(self):# return self.size# def setSize(self,value):# self.size = value# def delSize(self):# del self.size# x = property(getSize,setSize,delSize) 第一个参数,得到属性的值,第二个参数修改参数的值,第三个属性删除值# # # >>> c1 = C()# >>> c1.getSize()# 10# >>> c1.x 有 . 符号出现,就调用第一个 得到属性的值# 10# >>> c1.x = 18 有=符号出现,就调用第二个 修改属性的值# >>> c1.x# 18# >>> c1.size 为什么要有这个bif函数存在,就是因为如果里面的属性有修改,一样可以用x来调用,用户体验会好一些# 18# >>> c1.getSize()# 18# >>> del c1.x 有del 出现 ,就调用第三个 删除属性的值# >>> c1.size# Traceback (most recent call last):# File "<pyshell#64>", line 1, in <module># c1.size# AttributeError: ‘C‘ object has no attribute ‘size‘# >>>
#--------------------三个内置函数修饰符# staticmethoh、classmethod、property 作用分别是静态方法、类方法、类属性# http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318435599930270c0381a3b44db991cd6d858064ac0000# 装饰器的相关内容,打开网址
# ----------------------------魔法方法的相关内容--------------------
# __new__重写(一般不用到)传入一个初始值,传给__init__这是第一个接收参数的魔法方法# >>> class C(str): 重写str 因为str是不能修改的,所以要用new 新的方法# def __new__(cls,string): 重写的内容 cls是自身的类,只有string会传给init# string = string.upper() 转换大写# return str.__new__(cls,string) 用重写的str.__new__函数来处理括号内的内容# # >>> a = C("I love FishC.")# >>> a# ‘I LOVE FISHC.‘# >>>
# __init__方法# class A:# def __init__(self,x,y) 传入一个初始值
# __del__方法, 当函数没在被任何参数调用的时候,del方法就生效,也就是删除自身# >>> class C:# def __init__(self):# print("我是__init__方法,我被调用了...")# def __del__(self):# print("我是__del__方法,我被调用了...")# # # >>> c1 = C()# 我是__init__方法,我被调用了...# >>> c2 = c1# >>> c3 = c2# >>> del c3# >>> del c2# >>> del c1 只有全部删除了,才会启动删除方法,删除自身函数所在的内存# 我是__del__方法,我被调用了...
# >>> class New_int(int): 我们定义一下对象加和减时,会进行的操作# def __add__(self,other): 如果执行加数操作,则进行这一行的方法 self是自身,b是被加数, 如a+b, a是self b是other# return int.__sub__(self,other) 返回两数相减# def __sub__(self,other):# return int.__add__(self,other)# # # >>> a = New_int(3)# >>> b = New_int(5)# >>> a + b# -2# ----------------------------python一些内置函数的说明# 像int() float()str() list() tuple()这些bif 其实都是类,当调用它们的时候,事实上就是创建了一个相应的实例对象# a 和 b 是工厂函数(类对象) int 的实例对象# >>> a = int(‘123‘)# >>> b = int(‘345‘)# >>> a + b# 468
# >>> class N(int):# def __radd__(self,other): 反运算方法, # return int.__sub__(self,other) self是b,other是1 , 这个要注意顺序,self是自身# # # >>> b = N(3)# >>> 1 + b 因为1是数值,没有add方法,所以就调用b的反运算方法# 2
# BaseAlias = BaseClass # 为基类取别名 如果是动态基类就用这个方法# # class Derived(BaseAlias):# def meth(self):# BaseAlias.meth(self) # 通过别名访问基类# ...
# ----------------------------GUI的相关内容------------------------
#--------------------------------按钮相关组件---------------#-----------------------------------------------------------
# >>> import easygui as g# >>> g.msgbox("Hello, world!")# ‘OK‘# >>> g.msgbox("Hello, world!","标题") 第二栏是标题
#------------msgbox消息框内容----------
# msgbox(msg内容,title消息框标题,ok_button"ok"按钮,imgae插入图片,root尺寸)
# import easygui as g# import sys# g.msgbox("我一定要学会编程!", ok_button="加油!")
#------------ccbox对话选择框----------
# ccbox(msg选择框内容,title选择框标题,choices=("Continue确认","Cancel取消"),imgae插入图片)
# 选择第一个返回1 或 其他返回0 , 不是True 或 False# import easygui as g# import sys# # while 1:# if g.ccbox(‘要再来一次吗?‘, choices=(‘要啊要啊^_^‘, ‘算了吧T_T‘)):# g.msgbox(‘行吧,那继续‘)# pass# else:# g.msgbox(‘不玩了,再玩就玩坏了......‘)# sys.exit(0) 记得先 import sys 哈 "0"是正常退出
#------------yngbox对话选择框----------
# yngbox(msg选择框内容,title选择框标题,choices=("Yes是","No否"),imgae插入图片)
# 选择第一个返回1 或 其他返回0 , 不是True 或 False# import easygui as g# import sys# # while 1:# if g.ynbox(‘要再来一次吗?‘, choices=(‘要啊要啊^_^‘, ‘算了吧T_T‘)):# g.msgbox(‘行吧,那继续‘)# pass# else:# g.msgbox(‘不玩了,再玩就玩坏了......‘)# sys.exit(0) # 记得先 import sys 哈
# imgae只能是 gif格式
#------------button按钮内容----------
# buttonbox(msg按钮内容,title按钮标题,choices=("Button1按钮1","Button2按钮2","Button3按钮3"),imgae插入图片)
# 返回相应的按钮文本# import easygui as g# import sys# # a = g.buttonbox("你喜欢一下哪一种水果?","请选择水果",choices=("草莓","西瓜","芒果"))# if a == "草莓": 返回选项# g.msgbox("草莓太红了,不好看",ok_button="我同意")# elif a == "西瓜":# g.msgbox("西瓜太绿,不好看",ok_button="我同意")# else :# g.msgbox("芒果太黄,不好看",ok_button="我同意")
#------------indexbox对话选择框----------
# indexbox(msg选择框内容,title选择框标题,choices=("Yes是","No否"),imgae插入图片)
# 选择第一个返回0 或 其他返回1 , 不是True 或 False# a = g.indexbox("选择确认还是取消?","请选择",choices=("确认","取消","不知道"))# print(a)# 选择1则打印0 , 选择2则打印1
#------------boolbox对话选择框----------
# boolbox(msg选择框内容,title选择框标题,choices=("Yes是","No否"),imgae插入图片)
# 选择第一个返回1 或 其他返回0 , 不是True 或 False# import easygui as g# import sys # a = g.boolbox("选择确认还是取消?","请选择",choices=("确认","取消","不知道"))# print(a)
#--------------------------------为用户提供选项---------------#-----------------------------------------------------------
#------------choicebox选择列表框(单选)----------
# choicebox(msg选择列表内容,title选择列表标题,choices=("选项1","选项2",....))
# 选择 返回 选项# import easygui as g# import sys# a = g.choicebox("请选择","这是标题",choices=("选项1","选项2","选项3"))# print(a)
# b = ["选项1","选项2","选项3"]# a = g.choicebox("请选择","这是标题",choices=(b))# print(a)
#------------multchoicebox选择列表框(多选)----------
# multchoicebox(msg选择列表内容,title选择列表标题,choices=("选项1","选项2",....,**kwargs))
# 以列表类型返回,单个参数或者多个参数# import easygui as g# import sys
# b = ["g1","g2","g3"]# a = g.multchoicebox("请选择","这是标题",choices=(b)) 选项可多选,新增全选和全取消选项# print(a)
#--------------------------------让用户输入消息---------------#-----------------------------------------------------------
#----------------enterbox输入框-------------
# enterbox(msg输入框内容,title输入框标题,default=""输入内容默认为空,strip=True去除首尾空格,image插入图片)
# 返回用户输入的内容,如果strip = True 将去掉首尾空格, 否则 将空格一起返回# a = g.enterbox("请输入内容","这是标题")# print(a)
#------------------integerbox输入框(范围)----------
# integerbox(msg输入框内容,title输入框标题,default=""输入内容默认为空,lowerbound=0范围最小值,upperbound=99范围最大值,image=None,root=None,**invalidKeywordArguments)
# 返回范围内的值,超过则重新输入# a = g.integerbox("请输入内容","这是标题",upperbound=10) 只能输入0-10的数值# print(a)
#------------------multenterbox输入框(多项)----------
# multenterbox(msg输入框内容,title输入框标题,fields=()输入框选项,values()选项对应内容)
# 以列表形式返回选项内的值,没输入的选项用空字符代替。多的话直接截断为选项数量# a = g.multenterbox("请输入内容","这是标题",fields=("1","2","3"),values=("4","5","6"))# print(a)
#--------------------------------让用户输入密码---------------#-----------------------------------------------------------
#------------------passwordbox密码输入框-----------
# passwordbox(msg输入框内容,title输入框标题,default=""输入框默认值,image图片,root尺寸)
# 返回输入的内容(密码)# a = g.passwordbox("请输入内容","这是标题")# print(a)
#------------------multpasswordbox账户密码输入框-----------
# multpasswordbox(msg输入框内容,title输入框标题,fields=()输入框选项,values()选项对应内容)
# 返回输入的账户和密码,未输入则返回空值# a = g.multpasswordbox("请输入内容","这是标题",fields=("账户","密码"))# print(a)
#--------------------------------显示文本内容---------------#-----------------------------------------------------------
#------------------textbox文本显示框-----------
# textbox(msg输入框内容,title标题,text=""文本内容,codebox=0文字比例)
# 返回文本内的内容,text的内容可以是字符串类型,列表类型,或者元组类型# c = open("record.txt")# a = g.textbox("请输入内容","这是标题",text=c,codebox=0)# print(a)
#------------------codebox文本显示框-----------
# codebox(msg输入框内容,title标题,text=""文本内容)
# 返回文本内的内容,text的内容可以是字符串类型,列表类型,或者元组类型,但是codebox=1,其他用法同上# c = open("record.txt")# a = g.codebox("请输入内容","这是标题",text=c,)# print(a)
#--------------------------------目录与文件---------------#-----------------------------------------------------------
#------------------diropenbox路径选择-----------
# diropenbox(msg路径框内容,title标题,default=None设置默认路径)
# 返回选择的路径,点取消则返回空# a = g.diropenbox("请选择打开的目录","这是标题")# print(a)
#------------------fileopenbox文件打开选择-----------
# fileopenbox(msg路径框内容,title标题,default="*"默认路径的所有(*)文件,filetypes=None文件类型)
# 返回选择打开的文件,点取消则返回空,filetypes = ["*.txt"],default="c:\A\*.py" 则显示c:\A文件夹下所有的py文件# a = g.fileopenbox("请选择打开的文件","这是标题",filetypes=("*.py","*.exe"))# print(a)
#------------------filesavebox保存路径选择-----------
# filesavebox(msg路径框内容,title标题,default=""设置默认路径,filetypes=None文件类型)
# 返回选择保存的路径,点取消则返回空# a = g.filesavebox("请选择保存的目录","这是标题",filetypes=("*.py","*.exe"))# print(a)
#--------------------------------捕获异常---------------#-----------------------------------------------------------
# import easygui as g# # try:# print(‘I Love FishC.com!‘)# int(‘FISHC‘) # 这里会产生异常# except:# g.exceptionbox() 把异常显示在文本框里面
#----------------------------with的相关内容------------------------# try:# f = open("data.txt","w")# for i in f:# print(i)# except OSError as b:# print("出错啦:"+str(b)) "报错的原因是 文本内不存在内容"# finally:# f.close()
# ↓↓↓↓↓上面的内容等于下面的内容↓↓↓↓↓↓↓↓
# try:# with open("data.txt","w") as f: f = open("data.txt","w") 时刻关注这个文件什么时候没用用到,就自动调用close()# for i in f: with主要是省去关闭文件的麻烦,或者忘记关闭文件# print(i)# except OSError as b:# print("出错啦:"+str(b))
# with A() as a:# with B() as b:# suite
# 等于
# with A() as a, B() as b:# suite
#----------------------------else相关内容------------------------# if xx : 如果不是这样 就那样# else xx :
# while xx : 循环完成 执行else的内容# else xx :
# for xx in xx 循环完成 执行else的内容# else xx :
# try: 检测错误# xx# except xx : 如果出现错误,执行xx# xx :# else: 如果没出现错误,执行xx。 有出现错误 就不会执行else里的内容# print("没有任何异常") :#----------------------------pickle模块相关内容------------------------# >>> import pickle 调用pickle 模块# >>> list1 = [123,3.1415,"小甲鱼",["这是一个列表"]] # >>> file = open("list1.pkl","wb") 以二进制写入一个列表 因为列表不是字符串,所以用二进制,永久保存# >>> pickle.dump(list1,file) 把list1放到file里面。这就是dump(倒入)# >>> file.close() 最后要关闭文件# >>> file = open("list1.pkl","rb") 以二进制读取,因为列表不是字符串,所以用二进制# >>> list2 = pickle.load(file) load读括号里的内容。# >>> list2 # [123, 3.1415, ‘小甲鱼‘, [‘这是一个列表‘]]# >>>
#----------------------------出现报错、异常处理------------------------# try: 检测下面的内容 只要一出现错误,就在错误处直接中断代码# f = open("我为什么是一个文件.txt") 这个文件根本不存在工作目录内# print(f.read()) 打开这个不存在的文件# f.close() "关闭"这个不存在的文件# except OSError: 如果OS,操作系统出错,则返回下面内容# print("文件出错啦")# >>> # 文件出错啦
# try:# f = open("我为什么是一个文件.txt")# print(f.read())# f.close()# except OSError as i: 如果是os出错,也就是操作系统出错,i是错误原因# print("文件出错啦\n错误的原因是:" + str(i)) 答应错误原因# >>> # 文件出错啦# 错误的原因是:[Errno 2] No such file or directory: ‘我为什么是一个文件.txt‘
# try:# sum = 1+"1"# f = open("我为什么是一个文件.txt")# print(f.read())# f.close()# except OSError as i:# print("文件出错啦\n错误的原因是:" + str(i))# except TypeError as a: 如果类型出错 返回# print("类型出错啦\n错误的原因是:" + str(a))# >>> # 类型出错啦 因为sum在第一个,所以sum出错弹出相应内容 然后终止,不进行下面的代码# 错误的原因是:unsupported operand type(s) for +: ‘int‘ and ‘str‘
# try:# int("abc") 这个是Value错误, 也就是值错误, 因为abc不能转换成整数# sum = 1+"1"# f = open("我为什么是一个文件.txt")# print(f.read())# f.close()# except OSError as i:# print("文件出错啦\n错误的原因是:" + str(i))# except TypeError as a:# print("类型出错啦\n错误的原因是:" + str(a))# 如果没有定义检测 int("abc")的出错类型,也就是ValueError, 就会报错。# 解决方法有, 但是这个方法会有一些隐藏的错误被屏蔽。 如ctrl+c 强制终止程序,会失效。# except: 用这个代码, 遇到错误直接返回下面的内容# print("不管什么错误,只要有错误,我就会弹出这个窗口")
# try:# sum = 1+"1"# f = open("我为什么是一个文件.txt")# print(f.read())# f.close()# except (OSError,TypeError): 整合错误# print("出错啦")
# try:# f = open("我为什么是一个文件.txt","w")# print(f.write("我存在了!"))# sum = 1+"1"# except (OSError,TypeError):# print("出错啦")# # finally: 这个语句是,如果前面有出错,不管怎样继续执行finnlly里面的内容# f.close() 这样做的好处就是,如果你写了内容到文件,但是还没关闭的时候出现了一个错误# 这些内容就会丢失, 这时候需要一个出现错误,执行finally里面的内容。# 即使没有错误,也是这个顺序, try检测代码区的内容,然后执行finally里的内容# finally相当于收尾了
# >>> raise raise 引出一个异常# Traceback (most recent call last):# File "<pyshell#1>", line 1, in <module># raise# RuntimeError: No active exception to reraise# >>> raise ZeroDivisionError("除数为零的异常") raise 引出一个异常,异常的内容就是括号里的内容 # Traceback (most recent call last):# File "<pyshell#2>", line 1, in <module># raise ZeroDivisionError("除数为零的异常")# ZeroDivisionError: 除数为零的异常#----------------------------字符串相关内容------------------------# >>> "{0} love {1}.{2}".format("i","fis","com") format格式化# ‘i love fis.com‘
# >>> "{a} love {b}.{c}".format(a="i",b="fis",c="com") format格式化# ‘i love fis.com‘
# >>> "{{0}}".format("不打印")# ‘{0}‘# >>> "{{0}}"# ‘{{0}}‘# >>> "{0}".format("不打印")# ‘不打印‘# >>>
# >>> "%c" % 97# ‘a‘
# >>> "%c %c %c" % (97,98,99)# ‘a b c‘
# q = True# while q:# num = input(‘请输入一个整数(输入Q结束程序):‘)# if num != ‘Q‘:# num = int(num)# print(‘十进制 -> 十六进制 : %d -> 0x%x‘ % (num, num))# print(‘十进制 -> 八进制 : %d -> 0o%o‘ % (num, num))# print(‘十进制 -> 二进制 : %d -> ‘ % num, bin(num)) print打印会自动屏蔽逗号# else:# q = False#----------------------------变量的相关内容-------------------------# Local 局部变量 Global 全局变量# 局部变量不能
#----------------------------闭包函数的相关内容-------------------------
# >>> def a(x):# def b(y):# return x * y# return b# >>> i = a(8)# >>> i(5)# 40# >>> a(6)(8)# 48# >>>
# 会报错的原因是 因为x的变量是放在容器里面的,x属于a()里面, 不属于b()里面, 所以b里面的x没有参数,所以报错# >>> def a():# x = 5# def b():# x *= x# return x# return b()
# >>> a()# Traceback (most recent call last):# File "<pyshell#34>", line 1, in <module># a()# File "<pyshell#33>", line 6, in a# return b()# File "<pyshell#33>", line 4, in b# x *= x# UnboundLocalError: local variable ‘x‘ referenced before assignment
# >>> def a():# x = 5# def b():# nonlocal x# x *= x# return x# return b()
# >>> a()# 25
# 列表不是放在容器里面的, 所以在b()里面不会报错# >>> def a():# x = [5]# def b():# x[0] *= x[0]# return x[0]# return b()
# >>> a()# 25
# 局部变量和全局变量# >>> c = 5# >>> def b():# c = 10# print(c)
# >>> b()# 10# >>> print(c)# 5# >>> def b():# global c# c = 10# print(c)# >>> b()# 10# >>> print(c)# 10
# def funX():# x = 5# def funY():# nonlocal x x一直没有被释放 所以一直叠加# x += 1# print("x是",x)# return x# return funY# a = funX()# print(a()) 一直访问funY()# print(a())一直访问funY()# print(a())一直访问funY()
#----------------------------函数的相关内容-------------------------# def add(a,b): 定义函数# return(a+b)# print(add(4,5))# 11
# >>> def ba(name):# ‘参数的内容‘# print("xxxx"+name+"cccc")
# >>> ba.__doc__# ‘参数的内容‘
# >>> def cc(x,y):# print(x+"-"+y)
# >>> cc("20","1")定义参数标签,防止混淆# 20-1# >>> cc(y="1",x="20")# 20-1
# >>> def cc(x="x",y="y"): 定义默认参数# print(x+"-"+y)# >>> cc()# x-y# >>> cc("1","2")# 1-2# >>>
# >>> def oo(*c): 收集参数# print("参数的长度是:",len(c));# print("第二个参数是:",c[1]);
# >>> oo(1,2,3,4)# 参数的长度是: 4# 第二个参数是: 2
# >>> def oo(*c,a=1): 收集参数函数里再添加参数# print("参数的长度是:",len(c),a);# print("第二个参数是:",c[1],a);
# >>> oo(7,8,9,10)# 参数的长度是: 4 1# 第二个参数是: 8 1
#------------------匿名函数------------------------------# >>> g = lambda x: x * 2+1# >>> g(5)# 11# >>> g = lambda x,y:x+y# >>> g(5,6)# 11# >>>
# c=list(map(lambda x, y : [x, y], (1, 3, 5, 7,9), (2, 4, 6, 8, 10)))# print(c)# >>> # [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
#------------------递归函数------------------------------# def cc(x):# a = x# print("这个a是",a)# for i in range(1,x):# print("i是",i)# a *= i# print("a是",a)# print("最后的a是",a)# return a# # b = int(input("输入一个数字:"))# ff = cc(b)# print("%d 的阶层是 %d"% (b,ff))
# def cc(n):# print("cc(n)是",n)# if n == 1:# return n# else:# print("n是",n)# return n * cc(n-1)# c = int(input("请输入一个正整数:"))# b = cc(c)# print("%d 的阶层是: %d" % (c,b))# 解析# cc(5) = 5 * cc(4) ↑# cc(4) = 5 * cc(3) ↑# cc(3) = 5 * cc(2) ↑# cc(2) = 5 * cc(1) ↑# cc(1) = 1 ↑
# def power(x, y): 求x的y次方# if y:# return x * power(x, y-1)# else:# return 1# # print(power(3, 3))# 解析# def power(x, y):# if y:# return x =3 * power(3, 2) = 9# x =3 * power(3, 1) = 3# x=3 * power(3, 0) = 1 这个1是下面那个return返回的1# else:# return 1
#------------------递归函数 汉诺塔--------------------# def cc(n,a,b,c):# if n == 1:# print(a,"->",c)# return# else:# cc(n-1,a,c,b) cc(1,a,b,c) # cc(1,a,b,c) cc(1,a,c,b)# cc(n-1,b,a,c) cc(1,c,a,b)# b = int(input("请输入盘数:"))# cc(b,"1杆","2杆","3杆")
#------------------过滤器------------------------------# >>> list(filter(None,[1,0,False,True]))# [1, True]
# >>> def odd(x): 筛选奇数# return x % 2# >>> temp = range(10)# >>> show = filter(odd,temp)# >>> list(show)# [1, 3, 5, 7, 9]# >>>
# >>> list(filter(lambda x:x%2,temp)) 和匿名函数结合使用 更简洁# [1, 3, 5, 7, 9]
#------------------map映射------------------------------# >>> list(map(lambda x:x*2,temp)) 对每个可迭代元素加工计算,然后返回# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
#----------------------------循环相关内容---------------------------
# while 条件: while循环, 如果条件为真, 将一直循环# for 目标 in 表达式: 表达式可以是 数组,字符串, 目标 依次循环 表达式# print(xx) 表示打印显示xx内容 ,print(xx , end = " ") print每次打印 默认换行,end表示结尾做什么,end = " "就表示结尾不换行,用空格代替 len(xx)表示取文本长度"# range(开始数 , 结束数 , 每次递增) 跟for搭配 如: for i in range(1,10,2):# list(range(5)) 表示把参数生产列表,输出[0,1,2,3,4]# 循环体 里 输入 break 可以跳出循环# 循环体 里 输入 continue 可以跳出本局循环,进行下一组循环
#----------------------------字典相关内容-----------------------------# >>> list3={‘李宁‘:‘一切皆有可能‘,‘耐克‘:‘Just do It‘}# >>> print("耐克的口号是:",list3["耐克"])# 耐克的口号是: Just do It
# 也可以是数字# >>> list4={1:"one",2:"two",3:"three"}# >>> list4# {1: ‘one‘, 2: ‘two‘, 3: ‘three‘}# >>> list4[1]# ‘one‘
# 创建字典的两个方法# >>> dict3 = dict((("F",70),("i",105),("s",115),("h",104),("c",67)))# >>> dict3# {‘F‘: 70, ‘c‘: 67, ‘s‘: 115, ‘h‘: 104, ‘i‘: 105}# >>> dict4 = dict(小甲鱼="让变成改变世界",耐克="Just do It")# >>> dict4# {‘耐克‘: ‘Just do It‘, ‘小甲鱼‘: ‘让变成改变世界‘}
# 改变字典的内容# >>> dict4["耐克"]="改变一下"# >>> dict4# {‘耐克‘: ‘改变一下‘, ‘小甲鱼‘: ‘让变成改变世界‘}
# 添加字典的内容# >>> dict4["添加"]="添加的内容"# >>> dict4# {‘耐克‘: ‘改变一下‘, ‘添加‘: ‘添加的内容‘, ‘小甲鱼‘: ‘让变成改变世界‘}
# 字典的fromkeys 批量添加# >>> dict1 = {}# >>> dict1.fromkeys((1,2,3))# {1: None, 2: None, 3: None} 没有内容# >>> dict1.fromkeys((1,2,3),(4,5,6))# {1: (4, 5, 6), 2: (4, 5, 6), 3: (4, 5, 6)} 添加内容# >>> dict1.fromkeys((1,2,3),"cc")# {1: ‘cc‘, 2: ‘cc‘, 3: ‘cc‘}# >>> dict1.fromkeys((1,3),"cc") 不能改某个键的值,这样写只能重新创建一个新的字典# {1: ‘cc‘, 3: ‘cc‘}
#----------------字典的 keys和values和items--------------
# 创建字典的几种方法# >>> a = dict(one=1, two=2, three=3)# >>> b = {‘one‘: 1, ‘two‘: 2, ‘three‘: 3}# >>> c = dict(zip([‘one‘, ‘two‘, ‘three‘], [1, 2, 3]))# >>> d = dict([(‘two‘, 2), (‘one‘, 1), (‘three‘, 3)])# >>> e = dict({‘three‘: 3, ‘one‘: 1, ‘two‘: 2})
# >>> dict3 = {}# >>> dict3=dict3.fromkeys(range(3),"赞")# >>> dict3# {0: ‘赞‘, 1: ‘赞‘, 2: ‘赞‘}# >>> for i in dict3.keys():# print(i)
# 0# 1# 2
# >>> for i in dict3.values():# print(i)
# 赞# 赞# 赞
# >>> for i in dict3.items():# print(i)
# (0, ‘赞‘)# (1, ‘赞‘)# (2, ‘赞‘)
#-----------判断值是否在字典中------------# >>> dict3.get(3,"木有!") 判断有没有在字典中, 没有就回复 “木有” 有就回复键对应的值# ‘木有!‘# >>> dict3.get(2,"木有!")# ‘赞‘
# >>> 2 in dict3# True# >>> 3 in dict3# False#----------------清空字典------------# >>> dict3# {0: ‘赞‘, 1: ‘赞‘, 2: ‘赞‘}# >>> dict3.clear()# >>> dict3# {}
# >>> a = {"a":"b"}# >>> a# {‘a‘: ‘b‘}# >>> b = a# >>> b# {‘a‘: ‘b‘}# >>> a={} 这个a = {}也能清空,但是不严谨。但是字典还存在内存中# >>> a# {}# >>> b# {‘a‘: ‘b‘}
# >>> b# {‘a‘: ‘b‘}# >>> a = b# >>> # >>> a# {‘a‘: ‘b‘}# >>> a.clear() 这个a.clear() 才会把字典清除# >>> a# {}# >>> b# {}
#----------------拷贝字典------------# >>> a = {1:"one",2:"two",3:"three"}# >>> b = a.copy()# >>> c = a# >>> a# {1: ‘one‘, 2: ‘two‘, 3: ‘three‘}# >>> b# {1: ‘one‘, 2: ‘two‘, 3: ‘three‘} a = c 其实只是给 字典贴了两个便签而已# >>> c# {1: ‘one‘, 2: ‘two‘, 3: ‘three‘}# >>> id(a)# 48073992# >>> id(b)# 48191112# >>> id(c)# 48073992
# >>> a# {1: ‘one‘, 2: ‘two‘, 3: ‘three‘}# >>> a.popitem() 随机删除# (1, ‘one‘)# >>> a# {2: ‘two‘, 3: ‘three‘}# >>> a.setdefault(5,"小白") 相当于添加# ‘小白‘# >>> a# {2: ‘two‘, 3: ‘three‘, 5: ‘小白‘}# >>> a.pop(5) 指定删除并返回# ‘小白‘# >>> a# {2: ‘two‘, 3: ‘three‘}# >>>
# 把一个字典添加到另一个字典# >>> a = {1: ‘one‘, 2: ‘two‘, 3: ‘three‘}# >>> a.setdefault("小白")# >>> a# {1: ‘one‘, 2: ‘two‘, 3: ‘three‘, ‘小白‘: None}# >>> b = {"小白":"狗"}# >>> a.update(b) 把一个字典添加到另一个字典 # >>> a# {1: ‘one‘, 2: ‘two‘, 3: ‘three‘, ‘小白‘: ‘狗‘}# >>> #----------------------------集合的相关内容------------------------------# 创建集合,集合里每个元素都是唯一的。 没办法索引。# >>> set1 = set([1,2,3,4,5,5]) # >>> set1# {1, 2, 3, 4, 5} 自动去除重复的元素,留下唯一的值# >>> 1 in set1 用in / not in 判断某个元素 是否在集合中# True# >>> "1" in set1# False# >>> set1.add(6) 用add增加某个元素到集合中# >>> set1# {1, 2, 3, 4, 5, 6}# >>> set1.remove(5) 用remove集合中的某个值# >>> set1# {1, 2, 3, 4, 6}
# >>> a = frozenset([1,2,3,4,5]) frozenset集合是不可修改的, 修改将报错# >>> a# frozenset({1, 2, 3, 4, 5})# >>> a.add(0) 修改将报错 # Traceback (most recent call last):# File "<pyshell#10>", line 1, in <module># a.add(0)# AttributeError: ‘frozenset‘ object has no attribute ‘add‘# >>>
# 查看集合数量用len(a)#----------------------------数组相关内容-----------------------------
# 创建列表 如 a = [1,2,3,4,5]# 添加元素到列表 如a.append("xxxx")# 添加列表到列表 如a.extend(["xxx","xxx"])# 添加元素并且选择加入的位置 如a.insert(0,"xxx")# 取数组,如a[0]表示取数组的第一个元素# 删除元素, 如a.remove("xxx")# 删除元素, 如del member[1] 指删除数组第一个# 删除元素, 如member.pop(1) 指删除数组第一个,并且能给剔除的元素命名# 取区间元素, 如a[1:3] 就取1、2的元素。# 取区间元素,设置步长 如a[0:8:2]的意思是。取0 、 2 、 4 、 6 、 8 元素对应的内容# 对列表进行排序 如a.sort(x)# 取列表内某元素的个数, 如a.count(1),查看1在a里面有多少个# 查看列表内某元素索引位置, 如a.index(1,3,10),查看1在a里面的位置,范围是3-10# 翻转列表,a.reverse()# d.sort(),从小到大排序 d.sort(reverse=True) ,反向排序# 清空列表 a.clerr()# 替换元素list1 = [1, [1, 2, [‘小甲鱼‘]], 3, 5, 8, 13, 18]# list1[1][2][0] = ‘小鱿鱼‘ 这就把"小甲鱼"替换成"小鱿鱼"# copy()拷贝一个副本
# 列表间可以判断大小,如a = [123,456] b = [234,123] 则输入a < b 返回True,只判断第一个元素大小# 如果a + b 则输出[123,456,234,123]# 如果a * 3 则输出[123,456,123,456,123,456]# 另一个表达 d *= 3# 判断某个元素 是否在列表中 ,如123 in a 返回True, 还有123 not in a返回False# 创建一个元组,如a = (1,2,3) 元组是没办法修改里面的元素。如果要修改,有其他方法# 如:a = (1,2,3)# 如:a = a[:1]+("xx",)+a[1:] ,元素后面要加逗号,不然python会判断为整数或者其他非元素类型# 字符串同, 如:b="I love me" b = b[:6]+"插入的内容" + b[6:]# 删除整个元组,del a 这就把a这个元组删除# sorted(xx) 对xx列表进行排序# list(reversed(xx)) 对xx列表进行翻转# list(enumerate(xx)) 输出[(0,1),(1,2),(2,5)]
# a = [1,2,3,4]# b = [7,6,5]# list(zip(a,b))# 输出 [(1,7),(2,6),(3,5)]
# list1=[‘1.Just do It‘,‘2.一切皆有可能‘]# >>> list2=[‘2.李宁‘,‘1.耐克‘] name、slogan是列表里的变量,name、和slogan会遍历所有列表里的内容。name(0)指遍历所有元素的开头字符串。# >>> list3 = [name + ‘:‘ + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]# >>> for each in list3:# print(each)
# >>> list1=[‘李宁‘,‘耐克‘]# >>> list2=[‘Just do It‘,‘一切皆有可能‘]# >>> print("李宁的口号是:",list2[list1.index("李宁")])# 李宁的口号是: Just do It
# >>> e = [123,["wc","qq"],456]# >>> "wc" in e# False# >>> "wc" in e[1] 访问列表中的元素中的元素# True# >>># >>> e[1][1] 访问列表中的元素的元素 第几项# ‘qq‘
# >>> list1 = [1,3,2,9,7,8]# >>> list2 = list1[:] 仅仅是复制文本,list2不会因为list1的变化而变化# >>> list3 = list1 这个list3会完全复制list1。随着list1的变化而变化# >>> list1.sort() sort排序# >>> list1# [1,2,3,7,8,9]# >>> list2# [1,3,2,9,7,8]# >>> list3# [1,2,3,7,8,9]
# >>> list2 = list1.copy()# >>> list2# [1, [1, 2, [‘小甲鱼‘]], 3, 5, 8, 13, 18]
# >>> name = member.pop(1)# >>> name# "XXX"
# >>> f=list()# >>> f# []# >>> b = "I XXX XXX"# >>> b = list(b)# >>> b# [‘I‘, ‘ ‘, ‘X‘, ‘X‘, ‘X‘, ‘ ‘, ‘X‘, ‘X‘, ‘X‘]# >>>
# >>> max(1,2,3,4,5) 取参数最大值# 5
# >>> min(1,2,3,4,5) 取参数最小值# 1
# >>> c = (1.1,2.2,3.3)# >>> sum(c)# 6.6
# >>> c = (1,2,3)# >>> sum(c,8)# 14#--------------------------------------------------------------------------------#--------------------------------- 系统文件的先关内容 -------------------------------#--------------------------------------------------------------------------------# >>> f = open("E:\\record.txt")# >>> f# <_io.TextIOWrapper name=‘E:\\record.txt‘ mode=‘r‘ encoding=‘cp936‘># >>> f.read() 这里开始输出read.txt里面的内容#‘小客服:.............................‘# >>> f.read() read就像一个标签一样# ‘‘ 再次调用就从文本末尾输出,前面的read没有设置末尾参数,所以直接到末尾。所以到后面的read就什么都读取不到。
# >>> f.close()# >>> f = open("E:\\record.txt")# >>> f.read(5) 读取5个字符# ‘小客服:小‘# >>> f.tell() tell相当于标签,读取到哪里在哪里, tell的意思是读取字节, 因为一个中文相当于2个字节,所以返回9# 9
# >>> f.seek(2,0) 意思是把只能指到2字节的位置,如果第一是文字,选1字节会报错# 2# >>> f.readline() 返回一行到指针的位置。# ‘客服:小甲鱼,今天有客户问你有没有女朋友?\n‘ 这里从第二个字节开始到一行,所以“小”没有了# >>> f.seek(45,0)# 45# >>> f.readline()# ‘小甲鱼:咦??\n‘
# >>> for i in f: 迭代每一行,官方推荐的方法。# print(i)
# 小客服:小甲鱼,今天有客户问你有没有女朋友?
# 小甲鱼:咦??
# 小客服:我跟她说你有女朋友了!
# .......
# .......
#------------------------写入文本-------------------
# >>> f=open("E:\\yi.txt","w") 写入用w。# >>> f.write("python文件操作命令") write写入内容,返回写入的字节# 12# >>> f.close() 写入后要关闭, 不然等于未更新状态# >>>
# >>> (c,b) = [1,2]# >>> c# 1# >>> b# 2
# >>> i ="小甲鱼:我靠你的呀" 用split来分割字符串# >>> (c,b) = i.split(":",1)# >>> c# ‘小甲鱼‘# >>> b# ‘我靠你的呀‘#---------------------------------------------------------
# >>> name = "小甲鱼"# >>> ‘鱼‘ in name# True# >>> ‘肥鱼‘ in name# False
# i = i + 1 这个等于 i += 1
# s为字符串
# s.isalnum() 所有字符都是数字或者字母,为真返回True,否则返回False
# s.isalpha() 所有字符都是字母,为真返回True,否则返回False
# s.isdigit() 所有字符都是数字,为真返回True,否则返回False
# s.islower() 所有字符都是小写,为真返回True,否则返回False
# s.isupper() 所有字符都是大写,为真返回True,否则返回False
# s.istitle() 所有单词都是首字母大写,为真返回True,否则返回False
# s.isspace() 所有字符都是空白字符,为真返回True,否则返回False
# 例如:# >>> s = ‘I love xx‘# >>> s.isupper()# >>> True
# int()整数# float()浮点数# str()字符串
# assert 3 > 4 assert称之为"断言" 判断语言 如果是错误的,抛出AssertionError 主要用于检查代码,判断代码 终止,只有条件为真才能进行# small = x if x < y else y ; 选出最小 如 x , y , z = 1 , 2 , 3 small = x if (x < y and x < z) else (y if y < z else z)
# if else = elif
以上是关于[其他]一些笔记(较乱未整理)的主要内容,如果未能解决你的问题,请参考以下文章