自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 问答 (2)
  • 收藏
  • 关注

原创 第046讲:魔法方法:描述符(Property的原理)

目录0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!前面的课程中我们提到了 property 函数,那 property 到底是怎样实现的呢?今天我们谈论的问题是描述符,描述符就是将某种特殊类型的类的实例指派给另一个类的属性。大家对于这个定义可能还不是很理解,等会会举例说明。首先,什么是特殊类型呢?特殊类型的要求是至少要实现以下三个方法其中一个或全部实现。(一)•get(self, instance, owner)–用于访问属性,它返回属性的值(二)•set(sel

2020-07-31 20:30:02 367

原创 第045讲:魔法方法:属性访问

目录0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!我们这节课说说魔法方法关于属性访问的应用。我们知道可以使用点操作符(.)的形式去访问对象属性。我们在类与对象相关的BIF这一节中,我们可以使用几个BIF有礼貌的去访问属性,例如:>>> class C: def __init__(self): self.x = 'x-man' >>> c = C()>>> c.x'x-man'>>&

2020-07-31 12:53:30 395

原创 第043讲:魔法方法:算术运算2

目录请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!测试题0. 对象相加(a + b),如果 a 对象有 add 方法,请问 b 对象的 radd 会被调用吗?答:不会!>>> class Nint(int): def __radd__(self, other): print("__radd__ 被调用了!") return int.__add__(self, other

2020-07-31 00:04:53 251

原创 第042讲:魔法方法:算术运算

目录0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!在Python2.2之前,类和类型是分开的,在Python2.2之后,作者试图对这两个东西进行统一,做法就是将 int()、float()、str()、list()、tuple() 这些 BIF 转换为工厂函数,那什么是工厂函数呢? 我们试图演示一下:>>> type(len)<class 'builtin_function_or_method'>len()是一个普通的内置函数,

2020-07-30 15:47:33 370

原创 第041讲:魔法方法:构造和析构

目录0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!构造与析构测试题0. 是哪个特征让我们一眼就能认出这货是魔法方法?答:魔法方法总是被双下划线包围,例如 init1. 类实例化对象所调用的第一个方法是什么?答:new 是在一个对象实例化的时候所调用的第一个方法。它跟其他魔法方法不同,它的第一个参数不是 self 而是这个类cls),而其他的参数会直接传递给 init 方法的。2. 什么时候我们需要在类中明确写出 init 方法?答:当我们的实例对象需

2020-07-30 13:47:55 227

原创 第040讲:类和对象:一些相关的BIF

目录0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!今天我们谈谈和类与对象相关的BIF,也就是内置函数。(一)issubclass(class, classinfo)如果第一个参数 class 是第二个参数 classinfo 的子类,就返回 True,关于这个函数有几点需要注意的:一个类被认为是其自身的子类 classinfo 可以是类对象组成的元组,只要 class 是其中一个候选类的子类,就返回 True(二)isinstance(object, class

2020-07-30 11:58:35 197

原创 Python 函数修饰符--装饰器--的使用

1. 修饰符的来源借用一个博客上的一段叙述:修饰符是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。修饰符是解决这类问题的绝佳设计,有了修饰符,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。概括的讲,修饰符的作用就是为已经存在的对象添加额外的功能。import time def timeslong(func): start = time.clock() print("It's time starting ! ")

2020-07-30 11:54:21 141

原创 第039讲:类和对象:拾遗

0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!(一)组合上节课我们学习了继承和多继承,但是我们有时候发现,有些情况你用继承也不合适,用多继承也不是,例如:现在现在要求定义一个类,叫水池,水池里要有乌龟和鱼。那大家就很苦恼了,用多继承就显得很奇葩了,因为如果把水池继承乌龟和鱼,那显然就是不同物种。那怎样才能把它们组成一个和谐的类呢,这就是我们今天首先要讲的内容:组合。组合的用法很简单,举例说明:class Turtle: def __init__(se

2020-07-30 00:05:50 243

原创 第038讲:类和对象:继承

目录0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!上节课的课后习题我们试图模拟一个场景,里边有一只乌龟和十条鱼,乌龟通过吃鱼来补充体力,当乌龟体力消耗殆尽或者鱼吃光时游戏结束。现在我们想扩展游戏,给鱼类进行细分,有金鱼(Goldfish),鲤鱼(Carp),三文鱼(Salmon)和鲨鱼(Shark)。那么我们就在思考一个问题:能不能不要每次都重头到尾重新定义一个新的鱼类呢?因为我们知道大部分鱼的属性和方法是相似的。如果说有一种机制可以让这些相似的东西得以自动传递,我们不用

2020-07-29 18:25:19 245

原创 第037讲:类和对象:面向对象编程

目录0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!(一)self 是什么?Python 的 self 相当于 C++ 的 this指针。我们知道,类是图纸,而由类实例化出的对象才是真正可以住人的房子,这是我们上节课大的比方。我们还知道,根据一张图纸就可以设计出成千上万的房子,这些房子都长得差不多,因为它们都来自于同一张图纸,但是它们都有不同的主人,每个人都只可以回到自己的家,self 就相当于每个房子的门牌号,有了 self,就可以轻松的找到自己的房子,Python

2020-07-29 15:48:37 271

原创 第036讲:类和对象:给大家介绍对象

目录0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!(一)对象这节课给大家介绍对象。我们之前说过Python无处不对象,Python到处都是对象,然而我们很多人不理解对象到底是什么?他们只是在学习的时候有听过面向对象编程这么一回事,但是他们仍然在使用对象。对象是模拟真实世界,把数据和代码都封装在一起。(二)面向对象的特征OO = Object Oriented(面向对象)Python就是一门纯粹的面向对象编程的语言,面向对象编程有什么特征呢?第一个特征就是

2020-07-29 13:28:46 356

原创 第035讲:图形用户界面入门:EasyGui

动动手0. 先练练手,把我们的刚开始的那个猜数字小游戏加上界面吧?import randomimport easygui as g g.msgbox("嗨,欢迎进入第一个界面小游戏^_^")secret = random.randint(1,10) msg = "不妨猜一下小甲鱼现在心里想的是哪个数字(1~10):"title = "数字小游戏"guess = g.integerbox(msg, title, lowerbound=1, upperbound=10) while T

2020-07-29 12:19:35 248

原创 第034讲:丰富的else语句及简洁的with语句

目录0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!这节课我们来谈谈丰富的else语句及简洁的with语句,大多数编程语言来说,else 语句只能跟 if语句进行搭配,但是在Python里面,else 语句具有更加丰富的功能,在Python中,1.else语句不仅能够跟 if 语句进行搭配,构成“要么怎么,要么不怎样”的句式2.还能跟循环语句(for语句或者while语句)进行搭配,构成“干完了能怎样,干不完就别想怎样”的句式3.还能跟异常处理进行搭配,构成“没有

2020-07-28 14:10:58 251

原创 第033讲:异常处理:你不可能总是对的2

目录0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!上节课我们已经掌握了能够碰到的异常类型,name这一节我们就来学习如何检测这些异常并处理它们。异常检测我们可以使用 try 语句来实现,任何出现在 try 语句范围内的异常都会被检测到,我们这节课要介绍两个模式的 try 语句,一种是 try—except 语句:语法:try : 检测范围 except Exception [ as reason ]:

2020-07-28 12:52:09 196

原创 第032讲:异常处理:你不可能总是对的

请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! ***Python标准异常总结***AssertionError断言语句(assert)失败AttributeError尝试访问未知的对象属性EOFError用户输入文件末尾标志EOF(Ctrl+d)FloatingPointError浮点计算错误GeneratorExit generator.close()方法被调用的时候ImportE

2020-07-28 11:27:08 182

原创 第031讲:永久存储:腌制一缸美味的泡菜

0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!我们之前学习了文件和文件系统,我们知道从一个文件里面去读取字符串是非常简单的,但是你如果要试图读取出数值的话,name就要多费点周折了,因为无论你是使用read()方法还是readline()方法,都是返回一个字符串,如果我们希望从字符串中取出数值的话,我们会使用int()或float()函数,把类似于1,2,3或者3.14的字符串强制转换为整型或者浮点型数值,我们一直在讲保存文件,然而当你要保存的数据像列表,字典,集合甚至是类

2020-07-28 00:20:21 162

原创 第030讲:文件系统:介绍一个高大上的东西

请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!介绍跟Python的文件相关且十分有用的模块。模块是什么?模块是一个包含你定义的函数和变量的文件,后缀是.py,模块可以做到被别的程序所引入,以使用该模块中的函数等功能。OS模块(Operating System操作系统)对于文件系统的访问来说,Python一般是提供OS模块来实现就可以了,我们所知道常用的操作系统有:Windows,Mac,OS,Linux,UNIX等,这些操作系统底层由于文件系统的访问工作原理不同,因此你可能

2020-07-27 19:58:54 257

原创 第028讲:文件:因为懂你,所以永恒

0.下边只有一种方式不能打开文件,请问是哪一种,为什么?f = open('E:/test.txt','w') #Af = open('E:\test.txt','w') #Bf = open('E://test.txt','w') #Cf = open('E:\\test.txt','w') #DB,没有对反斜杠进行转义Windows在路径名中既可以接受斜线(/)也可以接受反斜线(\),不过如果使用反斜线作为路径名的分隔符的话,要注意使用双反斜线(\)进行转义,否则Python会将反斜

2020-07-27 00:19:04 205

原创 第029讲:文件:一个任务

0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!•任务:将文件(record.txt)中的数据进行分割并按照以下规律保存起来:–小甲鱼的对话单独保存为boy_.txt的文件(去掉“小甲鱼:”) –小客服的对话单独保存为girl_.txt的文件(去掉“小客服:”)–文件中总共有三段对话,分别保存为boy_1.txt, girl_1.txt,boy_2.txt, girl_2.txt,boy_3.txt, gril_3.txt共6个文件(提示:文件中不同的对话间已经使用“=

2020-07-26 20:55:42 249

原创 第027讲:集合:在我的世界里,你就是唯一

测试题0. 请问集合的唯一作用是什么呢?答:集合几乎所有的作用就是确保里边包含的元素的唯一性,就像世界上没有两片完全相同的树叶一样,集合内不可能存在两个相同的元素!1. 如果你希望创建的集合是不变的,应该怎么做?答:frozenset()2. 请问如何确定一个集合里边有多少个元素?答:没错,len()函数正好可以满足你此刻的需求_3. 请目测以下代码会打印什么内容?num_set = set([1, 2, 3, 4, 5])num_set[0]答:会报错,因为集合是无序的

2020-07-26 14:05:16 260

原创 第026讲:字典:当索引不好用时2

测试题0. Python的字典是否支持一键(Key)多值(Value)?答:不支持,对相同的键再次赋值会将上一次的值直接覆盖。>>> dict1 = {1:'one', 1:'yi'}>>> dict1[1]'yi'1. 在字典中,如果试图为一个不存在的键(Key)赋值会怎样?答:会自动创建对应的键(Key)并添加相应的值(Value)进去。(具体原理可以参考第3题的“扩展阅读”部分)2. 成员资格操作符(in和not in)可以检查一个元素是否

2020-07-26 12:43:57 313

原创 第025讲:字典:当索引不好用时

测试题0. 当你听到小伙伴们在谈论“映射”、“哈希”、“散列”或者“关系数组”的时候,事实上他们就是在讨论什么呢?答:是的,事实上他们就是在讨论我们这一讲介绍的“字典”,都是一个概念!(切记,装X的本质就是把同一个东西说成各种不同的事物~)1. 尝试一下将数据(‘F’: 70, ‘C’: 67, ‘h’: 104, ‘i’: 105, ‘s’: 115)创建为一个字典并访问键 ‘C’ 对应的值?>>> MyDict = dict((('F', 70), ('i',105), (

2020-07-26 00:30:27 147

原创 第023、024讲:递归:这帮小兔崽子、汉诺塔

动动手0. 使用递归编写一个十进制转换为二进制的函数(要求采用“取2取余”的方式,结果与调用bin()一样返回字符串形式)。def Bin(x): if x==0: return '0' elif x==1: return '1' else: return Bin(x//2)+str(x%2)1. 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。def fun(x): if x//10==0: return [x] else: r

2020-07-25 18:44:45 271

原创 第022讲:函数:递归

测试题0. 递归在编程上的形式是如何表现的呢?答:在编程上,递归表现为函数调用本身这么一个行为。举个例子(递归求阶乘):def factorial(n): if n == 1: return 1 else: return n * factorial(n-1) number = int(input('请输入一个整数:'))result = factorial(number) print("%d的阶乘是:%d" % (number, result

2020-07-25 13:36:43 280

原创 第021讲:函数:lambda表达式

测试题 0. 请使用lambda表达式将下边函数转变为匿名函数?def fun_A(x, y=3): return x * y#转换后lambda x,y=3:x*y1. 请将下边的匿名函数转变为普通的屌丝函数?lambda x : x if x % 2 else None #三目操作符#转换后def is_odd(x): if x % 2: return x else: ret

2020-07-25 13:24:07 1218

原创 第020讲:函数:内嵌函数和闭包

测试题0.如果希望在函数中修改全局变量的值,应该使用什么关键字?global 关键字>>> count = 5>>> def MyFun(): global count count = 10 print(count) >>> MyFun()10>>> count10>>> count = 5&gt

2020-07-25 11:14:14 398

原创 第019讲:函数:我的地盘听我的

测试题0. 下边程序会输入什么?def next(): print('我在next()函数里...') pre() def pre(): print('我在pre()函数里...') >>>next()##结果我在next()函数里...我在pre()函数里...有些编程语言不够“聪明”,向这类向前引用的方式会导致报错,但Python足够“醒目”,这段代码是正确的!1. 请问以下这个函数有返回值吗?>>> de

2020-07-24 20:35:35 198

原创 第018讲:函数:灵活即强大

0. 请问以下哪个是形参哪个是实参?def MyFun(x): return x ** 3 y = 3print(MyFun(y))x是形式参数(形参),y是实际参数(实参)。跟绝大部分编程语言一样,形参指的是函数创建和定义过程中小括号里的参数,而实参指的是函数在调用过程中传递进去的参数。1.函数写注释有什么不同?给函数写文档是为了让别人可以更好的理解你的函数,所以这是一个好习惯:>>> def MyFirstFunction(name):

2020-07-24 14:16:51 151

原创 第017讲:函数 - Python的乐高积木

0. 你有听说过DRY吗?DRY是程序员们公认的指导原则:Don’t Repeat Yourself. 快快武装你的思维吧,拿起函数,不要再去重复拷贝一段代码了!1. 都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢?使用函数:0) 可以降低代码量(调用函数只需要一行,而拷贝黏贴需要N倍代码)1) 可以降低维护成本(函数只需修改def部分内容,而拷贝黏贴则需要每一处出现的地方都作修改)2) 使序更容易阅读(没有人会希望看到一个程序重复一万行“I love FishC.co

2020-07-24 13:32:10 202

原创 第016讲:序列!序列

测试题0. 我们根据列表、元组和字符串的共同特点,把它们三统称为什么?序列,因为他们有以下共同点:1)都可以通过索引得到每一个元素2)默认索引值总是从0开始(当然灵活的Python还支持负数索引)3)可以通过分片的方法得到一个范围内的元素的集合4)有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)1. 请问分别使用什么BIF,可以把一个可迭代对象转换为列表、元组和字符串?list([iterable]) 把可迭代对象转换为列表tuple([iterable]) 把可迭代对象

2020-07-24 12:34:08 414

原创 第015讲:字符串:格式化

测试题0. 根据说明填写相应的字符串格式化符号请问以下这行代码会打印什么内容?>>> "{{1}}".format("不打印", "打印")以下代码中,a, b, c是什么参数?>>> "{a} love {b}.{c}".format(a="I", b="FishC", c="com")'I love FishC.com'关键字参数以下代码中,{0}, {1}, {2}是什么参数?>>> "{0} love

2020-07-23 20:27:31 310

原创 第014讲:字符串:各种奇葩的内置方法

测试题如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)?方法一:三重双引号str1="""春眠不觉晓,处处闻啼鸟.也来风雨声,花落知多少."""方法2:元组str = ('春眠不觉晓.处处闻啼鸟.也来风雨声,花落知多少.')方法3:直接定义str = '春眠不觉晓.处处闻啼鸟.也来风雨声,花落知多少.'三引号字符串通常我们用于做什么使用?三引号字符串不赋值的情况下,通常当作跨行注释使用,例如:'''这是一个三引号字符串用于注释的例子,例子

2020-07-23 16:01:21 275

原创 第013讲:元组:戴上了枷锁的列表

1:创建和访问元组创建元组: 逗号, 不是(),因为定义时它可以忽略访问:和列表相同 tuple1=() #创建空元祖 tuple1=(1,2,3,4,5) #创建元组 tuple1=(1,) #创建只有一个元素的元组 tuple1[1] #以下标的方式访问,和数组相同2:更新和删除元组>>> temp = (‘小甲鱼’, ‘黑夜’, ‘迷途’, ‘小布丁’)# 如果我想在“黑夜”

2020-07-23 14:29:24 94

原创 第012讲:列表:一个打了激素的数组3

注意,这道题跟上节课的那道题有点儿不同,回答完请上机实验或参考答案。old = [1, 2, 3, 4, 5]new = oldold = [6]print(new)[1,2,3,4,5]1.请问如何将下边这个列表的’小甲鱼’修改为’小鱿鱼’?list1 = [1, [1, 2, [‘小甲鱼’]], 3, 5, 8, 13, 18]list1[1][2][0]="小鱿鱼"要对一个列表进行顺序排序,请问使用什么方法?sort()3.要对一个列表进行逆序排序,请问使..

2020-07-23 12:05:06 113

原创 《零基础入门学习Python》第011讲

测试题下边的列表分片操作会打印什么内容?list1 = [1, 3, 2, 9, 7, 8]list1[2:5][2, 9, 7] 注意没有8请问 list1[0] 和 list1[0:1] 一样吗?不一样,list1[0] 返回第0个元素的值,list1[0:1] 返回一个只含有第0个元素的列表。如果你每次想从列表的末尾取出一个元素,并将这个元素插入到列表的最前边,你会怎么做?list1.insert(0, list1.pop())注意:pop没有指定参数就取

2020-07-23 11:10:53 164

原创 第010讲:列表:一个打了激素的数组

python中没有数组创建列表:用方括号括起来,元素用英文逗号间隔测试题:0. 列表都可以存放一些什么东西?任何数据类型:如 数字,字符串,列表,字典,对象向列表增加元素有哪些方法?append() .extend() .insert()append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?append()添加的是元素,extend()添加的是列表答案:append方法是将参数作为一个元素增加到列表的末尾 .

2020-07-23 09:00:34 149

原创 第009讲:了不起的分支和循环3

下面的循环会打印多少次"I Love FishC"?for i in range(0, 10, 2): print('I Love FishC')5 次,因为从 0 开始,到 10 结束,步进为 2。(0 2 4 6 8)下面的循环会打印多少次"I Love FishC"?for i in 5:print(‘I Love FishC’)会报错,上节课的课后习题我们提到了 in 是“成员资格运算符”,而不是像 C 语言那样去使用 for 语法。Python 的 for更像.

2020-07-23 00:26:00 136

原创 第007、008讲:了不起的分支和循环

if not (money < 100): 上边这行代码相当于?if money >= 100:assert 的作用是什么?断言,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?x,y,z = y,z,x 他们是同时进行的猜猜 (x < y and [x] or [y])[0] 实现什么样的功能?这其实是 Python 的作者还.

2020-07-22 16:59:47 141

原创 第006讲:Python之常用操作符

Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢?如果回答是 1.5 那么很遗憾,您受到 C 语言的影响比较大,Python 这里会义无反顾地执行 floor 除法原则,答案是:1.0a < b < c 事实上是等于?(a < b) and (b < c)不使用 IDLE,你可以轻松说出 5 ** -2 的值吗?0.04,相当于5**(-2)也就是 1/25 幂运算操作符比其左侧的一元操作符优.

2020-07-22 16:49:37 139

原创 第005讲:闲聊之Python的数据类型

测试题:在 Python 中,int 表示整型,那你还记得 bool、float 和 str 分别表示什么吗?bool:布尔型、float:浮点型、str:字符串型你知道为什么布尔类型(bool)的 True 和 False 分别用 1 和 0 来代替吗?计算机是二进制表示的,二进制只有0 和 1两个数,因此用 0 和 1 来表示 False 和 True 不用浪费资源在转换的过程上。使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?直接将小数点后面的数截掉

2020-07-22 14:13:18 225

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除