- 53
- 1 222 281
C鱼(小甲鱼)
เข้าร่วมเมื่อ 19 ต.ค. 2015
052模块:像个极客一样去思考 | 小甲鱼主讲 | 鱼C工作室
大家可能还不知道,在Python社区有句俗语叫“Python自己带着电池”。什么意思呢?这要从Python的设计哲学说起……Python的设计哲学是“优雅、明确、简单”,因此,Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。虽然小甲鱼常常鼓励大家多思考,条条大路通罗马,那是为了训练大家的发散性思维。但在正式编程中,如果有完善的并且经过严密测试过的模块可以实现,那小甲鱼的建议是:使用现成的模块!
มุมมอง: 10 861
วีดีโอ
051模块: name =' main '、搜索路径和包 | 小甲鱼主讲 | 鱼C工作室
มุมมอง 7K9 ปีที่แล้ว
上一节课我们已经基本地介绍了模块的作用以及模块的用法。我们来回顾一下,模块的主要作用有哪些? 第一点无疑就是封装组织Python的代码,你想想,当代码量非常大的时候,我们可以有组织有纪律地根据不同的功能,将代码分割成不同的模块。这样子,每个模块相互之间是独立开的。那大家说说,这代码是分开了容易阅读和测试,还是撂在一块容易?我们肯定是更愿意去阅读和测试一小段代码,而不是劈头盖脸地将一个程序从头读起。 然后,模块的另一个重要的特性就是实现代码的重用。比如你写了一段发送邮件的代码,多次优化之后发现这非常棒,你就可以封装成一个独立的模块,以后在 何程序需要发送邮件的时候,只需要导入这个模块就可以直接使用了,而不用每一次都重复写同样的代码。
050模块:模块就是程序 | 小甲鱼主讲 | 鱼C工作室
มุมมอง 6K9 ปีที่แล้ว
这一讲,小甲鱼将给大家介绍一个新的知识,叫做模块。模块、模块,是更高级的封装。诶,说到封装,我们回顾下学过的有哪些? 容器,例如列表、元祖、字符串、字典等,这些是对数据的封装; 函数,是对语句的封装; 类,是对方法和属性的封装,也就是对函数和数据的封装。
049乱入:生成器 | 小甲鱼主讲 | 鱼C工作室
มุมมอง 6K9 ปีที่แล้ว
由于生成器的概念要比较高级一些,所以我们在函数章节就没有讲到它,因为那时候讲了也是白讲。学习就是TMD一个渐进的过程,像上节课的迭代器,很多童鞋学完之后感叹:哎呀,Python怎么就这么简单呐!但如果我们在讲循环那个章节来讲迭代器,那大家势必就会一头雾水了。 正如刚才说的,生成器其实是迭代器的一种实现,那既然迭代可以实现,为何还要生成器呢?有一句话叫存在即合理,生成器的发明一方面是为了使得Python更为简洁,因为,迭代器需要我们自己去定义一个类和实现相关的方法,而生成器则只需要在普通的函数中加上一个yield语句即可(y~i~e~l~d,读这个单词的时候要有腔调,要有气势:yiel d)。
048魔法方法:迭代器 | 小甲鱼主讲 | 鱼C工作室
มุมมอง 5K9 ปีที่แล้ว
至始至终,有一个概念我们一直在用,但我们却从来没有认真的去深入剖析它。这个概念就是迭代。 迭代这个词我们听得很多了,现在不仅在数学领域使用这个词,我们经常听到类似这个产品经过多次迭代,质量和品质已经有了大幅度提高,这次自燃事件纯属捏是偶然…… 我们听出来了,迭代的意思类似于循环,每一次重复的过程被称为一次迭代的过程,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。 提供迭代方法的容器我们称之为迭代器,通常我们接触的迭代器有序列(列表、元祖、字符串)还有字典也是迭代器,都支持迭代的操作。
047魔法方法:定制序列 | 小甲鱼主讲 | 鱼C工作室
มุมมอง 4K9 ปีที่แล้ว
今天我们要谈的是定制容器,要想成功地实现容器的定制,我们需要先谈一谈协议。协议是什么呢?协议(Protocols)与其他编程语言中的接口很相似,它规定你哪些方法必须要定义。然而,在Python中的协议就显得不那么正式。事实上,在Python中,协议更像是一种指南。
046魔法方法:描述符(Property的原理) | 小甲鱼主讲 | 鱼C工作室
มุมมอง 4.5K9 ปีที่แล้ว
昨天我们提到了property函数,这不提不要紧,一提不得了,把大家的好奇心都给提起来了。大家都在问:“这property到底被下了什么药?怎么这么神奇?”,OK,如果你想知道property的实现原理,那么今天的内容你就不能错过了~
045魔法方法:属性访问 | 小甲鱼主讲 | 鱼C工作室
มุมมอง 4.9K9 ปีที่แล้ว
我们知道可以通过操作符的形式去访问对象的属性,然后我们在“类和对象:一些相关的BIF”这一节课也谈到了作为一个绅士,我们完全可以通过几个BIF有礼貌地去访问属性(殊途同归嘛)。
043魔法方法:算术运算2 | 小甲鱼主讲 | 鱼C工作室
มุมมอง 4.7K9 ปีที่แล้ว
上节课我们介绍了很多有关算术运算的魔法方法,意思是,当你的对象进行了相关的算术运算,自然而然,就会自动触发对应的魔法方法。嘿,有悟性的朋友就会说,我似乎感觉到拥有了上帝的力量。没错吧?
042魔法方法:算术运算 | 小甲鱼主讲 | 鱼C工作室
มุมมอง 6K9 ปีที่แล้ว
我现在重新提一个名词:工厂函数,不知道大家还有没有印象?我们在老早前就提到过Ta,由于那时候我们还没有学习类和对象,我知道那时候说了也是白说。但我知道现在来告诉大家,理解起来就不再是问题了。Python2.2以后,对类和类型进行了统一,做法就是将int()、float()、str()、list()、tuple()这些BIF转换为工厂函数。
041魔法方法:构造和析构 | 小甲鱼主讲 | 鱼C工作室
มุมมอง 7K9 ปีที่แล้ว
接下来我们这几节课的主题是:魔法方法,我们此前已经接触过Python最常用的魔法方法,小甲鱼也把魔法方法说的神乎其神,似乎用了就可以化腐朽为神奇,化干戈为玉帛,化不可能为可能,谈笑间强弩灰飞烟灭。大方无欲,大道无形,行者无疆。较长河为疏落,变大地为黄金!
039类和对象:拾遗 | 小甲鱼主讲 | 鱼C工作室
มุมมอง 9K9 ปีที่แล้ว
上节课我们学完继承,然后还学习了多继承,但大牛们又强调说不到必要的时候不使用多继承。哎呀,这可让大家烦恼死了,就像上回课后作业里我们弄了有乌龟类,有鱼类,现在要求定义一个类,叫水池,水池里要有乌龟和鱼。用多继承就显得很奇葩了,因为水池和乌龟、鱼是不同物种,那要怎样才能把它们组合成一个类呢?
038类和对象:继承 | 小甲鱼主讲 | 鱼C工作室
มุมมอง 10K9 ปีที่แล้ว
现在我们想要扩展游戏,给鱼类进行细分,有金鱼(Goldfish),鲤鱼(Carp),三文鱼(Salmon),还有鲨鱼(Shark)。那么我们就在思考一个问题:能不能不要每次都重头到尾去重新定义一个新的鱼类呢?因为我们知道大部分鱼的属性和方法是相似的,如果有一种机制可以让这些相似的东西得以自动传递,那就方便快捷多了。
python/django/mysql新教程: python基础:th-cam.com/video/g6RnSRDjd5M/w-d-xo.html python爬虫:th-cam.com/video/sKnUM9MTsMs/w-d-xo.html django课程:th-cam.com/video/_GGkiXuJyBo/w-d-xo.html
台湾: 物件
delphi怎么没了?
讲的太好了。订阅了!
尼玛XXX
买鱼C至尊论坛号+ Q 3065035161
为什么要感谢CCAV?
爲什麽是拍嬸?而不是python?
讲得非常好,跟之前学C++的时候听生硬的概念要容易理解很多...
世界上根本没有最优秀的编程语言,只有最合适的语言,面对不同的环境和需求,就会有不同的编程工具去迎合。就像陪你一起走到老的那一个人,一般不是你最爱的,也不是最爱你的,往往是莫名其妙就在一起的那个。
💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗💗
import time as t class MyTimer(): def __init__(self): self.prompt = "未開始計時!" self.begin = 0 self.end = 0 self.sub = 0 def __str__(self): return self.prompt __repr__=__str__ def start(self): self.begin = t.time() self.prompt = "提示:請先stop()停止計時!" print("開始計時…") def __add__(self, other): if self.sub!=0 and other.sub!=0 : result = self.sub + other.sub return "合計{:.2f}秒!".format(result) def stop(self): if not self.begin : self.prompt = "提示:請先start()開始計時!" else: self.end = t.time() print("停止計時!!") self._cal() def _cal(self): #內部方法 sub = self.end-self.begin if sub>=3600 : hr = sub//3600 mins = (sub%3600)//60 sec = (sub%3600)%60 self.prompt = ("總共運行了{}小時{}分{:.2f}秒" .format(int(hr), int(mins), sec)) elif sub>=60 : mins = sub//60 sec = sub%60 self.prompt = ("總共運行了{}分{:.2f}秒".format(int(mins), sec)) elif sub<60 : sec = sub print("總共運行了{:.2f}秒".format(sec)) else: self.prompt = ("超出計時器最大單位:24小時") self.sub = sub #初始化變量為下輪作準備 self.begin = 0 self.end = 0
我定义了一个函数,名字叫“我的第一个函数”,然后我怎么查看我定义的这个函数的内容呢?
#費式數列:費波那契的兔子:1,1,2,3,5,8,13, ... 第n項的值=第(n-2)項+第(n-1)項的和 def fbnc(n): #遞迴:程式碼較少,但運算效率較慢 if n<=2: return 1 else: return fbnc(n-1)+fbnc(n-2) def fbnc2(m): r = [] for i in range(1, m+1): #print(i) if i<=2 : s = 1 else: s = r[i-2-1]+r[i-1-1] r.append(s) return r[-1] n = input("請輸入一個正整數:") try: n = int(n) num = fbnc(n) print(num) num2 = fbnc2(n) print(num2) except: print("輸入數值無法執行")
习题还要收费的啊?
我的打飛機呢?
小甲鱼,想问一下打多了的符合和空行怎么撤销啊? 谢谢
关注了
time is money
老师,不知道这个方法是不是也可行,对于斐波那契数, num = int (input (“请输入一个数:”) a = [ 1,1] for i in range (1,num+1): if i >= 3: b = a[-1] + a[ -2] a.append (b) print (a[-1])
num = 5 a_list = [1, 1] for i in range(1, num - 1): b = a_list[0] + a_list[1] a_list.insert(0, b) print(a_list[0])
小甲鱼你是汕尾人吗?
print("hello world !") a = input("input a number<1-100>: ") b = int(a) if (b >= 1) & (b <= 100): print("good!") else: print("please input again...") print("End!")
好不容易听到34讲突然听不懂了,两个结果都是not readable有什么区别吗?还有你到底在说read还是with啊?
lol(fisrt)
观看量11万,厉害,我的教学视频2年了,才1k
为什么那个bbs.fishc.com的网址开不了
import random secret = random.randint(1,9) print ('想玩幸运猜猜猜吗,只有三次机会哦') temp=input("你先说一个吧:") guess = int(temp) i = 3 while i >1 : i = i-1 if guess == secret: print("真乃神人也") break else: if guess > secret: print("大了大了","您还有"+str(i)+"次机会") temp=input("继续哦:") guess = int(temp) if i == 1: print("您的次数已用完,很遗憾没有猜对") else: print("很接近了哦") else: print("小了小了","您还有"+str(i)+"次机会") temp=input("继续哦:") guess = int(temp) if i == 1: print("您的次数已用完,很遗憾没有猜对") else: print("很接近了哦") print("游戏结束","正确答案是"+ str(secret))
我的安装不了是怎么回事方便回复我一下吗老师
胸大屁股翘
小甲鱼汕头人?
外面的世界很精彩~
没想到小甲鱼本科学的是汉语言文学······
《漫画学Python》th-cam.com/video/58QoYZZfpDo/w-d-xo.html,全网最爆笑的Python教程
《漫画学Python》th-cam.com/video/58QoYZZfpDo/w-d-xo.html,全网最爆笑的Python教程
code = input("请输入密码:") guess = code # 注意如果密码中带有数字以外的字符,code前面不能加int() times = 3 if guess == "Wx760531": # 注意如果密码是字符串需要加“”或‘’ print("密码正确") print("还要多练习") else: while guess != 'Wx760531' and times > 0: code = input("密码错误,请重新输入密码:") guess = code if guess == 'Wx760531': print("密码正确") print("还要多练习") else: print("密码错误,再尝试%s次程序将关闭"%(times-1)) times = times - 1
scare the sht out of me. thought you are talking about xidada.emperor
为什么小甲鱼的视频那么多人看?而我的高质量编程教学视频没人看呢?
我关注了你的频道了
谢谢你!我看了很多中国老师外国老师的课,你的课对一个非CS背景的人来说最清晰
哈哈哈 老甲鱼一不小心就开车了
不声明变量直接写真的太难受了……得习惯习惯……还有写习惯了JAVA,句末没有分号总觉得少了什么……
可以写上分号,兼容的。
居然在TH-cam上面发现小甲鱼...我上次看他视频还是在b站
完全看不懂 对于零基础的 都不知道python下载到哪里去了
五年后一名高一学生前来学习
炮拳警告
是不是! 这句话太有魔性了
这个答案也可以实现,但是总感觉不够简洁,求大神指导怎么优化 print('小甲鱼工作室') import random secret=random.randint(0,100) print("你一共有四次机会") time=3 temp = input("请输入数字:") guess=int(temp) if guess==secret: print("答对了") elif guess<secret: print("小了小了") print("猜错了,你还有" + '3' + "次机会") else: print("大了大了") print("猜错了,你还有" + '3' + "次机会") while guess!=secret: temp = input("重新输入吧:") guess = int(temp) if guess==secret: print("恭喜答对了") break elif guess>secret: print("大了大了") elif guess<secret: print("小了小了") if time > 1: time = time - 1 chancetime = str(time) print("猜错了,你还有" + chancetime + "次机会") else: print("次数用完了") break print("游戏结束")
小甲鱼工作室 你一共有四次机会 请输入数字:50 大了大了 猜错了,你还有3次机会 重新输入吧:25 小了小了 猜错了,你还有2次机会 重新输入吧:38 大了大了 猜错了,你还有1次机会 重新输入吧:30 恭喜答对了 游戏结束
print('小甲鱼工作室') import random secret=random.randint(0,10) print("你一共有四次机会") time=4 temp = input("请输入数字:") guess = int(temp) while guess!=secret: if guess>secret: print("大了大了") elif guess<secret: print("小了小了") if time > 1: time = time - 1 chancetime = str(time) print("猜错了,你还有" + chancetime + "次机会") temp = input("重新输入吧:") guess = int(temp) else: print("次数用完了") break else: print("恭喜你答对了") print("游戏结束") 我这个虽然是可以用的,但还是有一个问题,答对的时候我必须用一个while从句以外的else来print 恭喜答对了,不然就程序结束直接跳出去了,但是我看视频小鱼把恭喜答对的内容放在while 从句中,当guess==secret的时候仍然能打印,但我的就直接跳出循环了,包括小鱼第一次录入5的时候也直接跳出循环了,但第二次就没有,真是奇怪啊,是因为赋值的位置吗?小鱼是之前赋值的,我是在之后赋值的。
print('小甲鱼工作室') import random secret=random.randint(0,10) temp = input("猜猜我心理想的哪个数字:") i=1 guess=int(temp) while guess!=secret and i<=3: i=i+1 j=str(4-i) guess=int(temp) if guess ==secret: print("我x,你是怎么知道的") print("猜到了也没有用没有奖励") else: if guess>secret: print("大了大了") print("你还有"+j+"次机会") else: print("小了小了") print("你还有"+j+"次机会") temp = input("猜错了,重新输入吧") print('game over,你一共只有三次机会')
贴一个我的,仅供参考 import random secret = random.randint(1,10) print('Start the game!') print('You have three chances to win!') temp = input ('Please guess the number: ') time = 3 guess = int(temp) while (guess != secret and time>1): if guess > secret: print ("Sorry, you are wrong. The number should be smaller.") else: print ("Sorry, you are wrong. The number should be bigger.") time = time -1 print('Watch out! The remianing times you have: ' +str(time) ) temp = input ('Please guess the number again: ') guess = int(temp) if guess == secret: print("Correct!") print("You win! But no reward lol...") print("End of the game.") else: print ('Run out 3 times! Answer is: '+str(secret)) print ('Game Over!')