
Lv.1
Новый текстовый документ
在 【书,电影】你们最喜欢是什么书,电影 中回复
C. Cohen-Tannoudji的《量子力学》,还有那汤松的《实变函数论》。这辈子见过的写得最好的书。
电影大部分看的是机关枪和打架的,没有特别喜欢的。
2019-09-23T19:10:01 点赞:0
在 遇到一道Python难题,请大佬帮忙,谢谢!!! 中回复
少侠你的思路比较乱,我没看太懂,我按我自己的思路帮你改了一下(交换2个变量的那一步我用语法糖偷了懒,希望你不要学我):
import random
import time
numbers = []
#生成多个随机数,并逐个加入列表
for x in range(1000):
numbers.append(random.randint(0, 1000))
#开始计时
start = time.time()
#开始排序
for i in range( len(numbers) ):
for j in range( len(numbers) - i - 1):
if (numbers[j] < numbers[j + 1]) :
#使用Python特有的语法糖([a, b] = [b, a])交换变量:>
[numbers[j], numbers[j + 1]] = [numbers[j + 1], numbers[j]];
j = j + 1
i = i + 1
#计算用时
useTime = time.time() - start
#输出结果
print( numbers )
print('使用了' + str(useTime) + '秒')
2019-09-23T19:40:16 点赞:0
在 【趣玩C语言·02】变量和赋值 中回复
"计算机起源于喵,C语言、C++、Java、JavaScript 等很多流行的编程语言都是喵人发明的。"
原谅我是考据党。
2019-09-29T14:37:25 点赞:0
在 【求助】NOC是什么 中回复
NOC就是全国中小学信息技术创新与实践活动,官方确定的音译是“恩欧希”。零几年才开始办的,编程只是其中的一项赛事,和编程猫有部分的合作。没什么存在价值感的东西。
不过话说,编程猫现在是中国计算机学会的赞助商。
2019-09-29T14:53:35 点赞:0
在 不可思议的事情,我为学python感到幸运!!! 中回复
只能说Python是一种全年龄段通吃的烂大街语言。
这样发展下去,总有一天也会在恐怖片里看到撸得一手好Python代码的女鬼。
2019-10-04T19:20:56 点赞:0
在 【大家好!】一个有关C++的问答:你的回答是多少? 中回复
编程无法都是想办法解决2个大问题:方法效率的提升和模块划分的优化。前者是算法学习的重心,后者是大型软件架构课程的学习重点。算法面对的问题是一次性提出的、输入输出比较明确的问题,问题固定但是难度大;架构设计中面临更多的是会随时变更的功能需求(客户经常会突然改变想法,或者软件经常需要对已有功能进行升级,但又不希望影响到现有的其它功能,以免引发新的bug),以及多人参与的大型项目开发如何划分职责和进行功能整合的问题,问题难度不一定大但是经常遇到程序开发到一半后功能需求可能发生临时变化,或者是开发到一半的时候工程师突然跳槽、必须换人接手的尴尬,所以进行架构设计需要拥抱变化。
C语言里有结构体类型,类似Pascal语言的record类型,可以把与特定事物的所有相关数据全部整合到一起。这样管理大量不同类型数据的时候,不容易混乱,使程序便于阅读。使用结构体,可以方便地构造各种除数组(阵列)以外的其它常见数据结构,而且比不使用结构体的做法更为简单易懂。
那个年代的程序就如Pascal语言之父用公式概括的:程序=数据结构+算法。其中出现了2个影响力最大的流派。以数据结构为核心的编程,其代表就是C语言家族(C++、Java、Python、C#、PHP、JavaScript、Flash ActionScript、Rust、Golang等等),讲究用函数操作数据结构,函数是为数据结构服务的,就是面向过程的编程(没有返回值的函数就叫做过程(procedure))。另一种以函数为核心的编程(也就是允许把普通函数也当做数据一样在高阶函数中传来传去的),代表是Lisp语言家族(比如CAD AutoLisp、Mathematica Wolfram (IPython notebook / Jupyter就是抄它的notebook设计)),认为函数才是一等喵,这种做法更接近数学语言,就是函数式编程。
后来SmallTalk语言诞生后,作者提出了面向对象编程(OOP)的理念,认为程序应该划分为1个或多个类,程序各部分之间的关系应该看成是类与类之间的交互(子类还可以通过继承获得父类的已有功能,减少代码量),而不是一大堆全局函数之间的调用。作者认为大堆全局函数之间的调用的缺点在于难以理清头绪,进而难以调试bug,也难以扩展新功能。
C语言中的结构体只能定义一系列的不同数据,将其视为一个整体进行操作。C+喵结构体增强了功能,为其提供了自定义“方法”的功能,也就是可以把函数绑定给结构体,称为结构体特有的“方法”,从而既可以操作数据,又减少了全局函数。当然面向对象编程走得更远,在结构体的设计思想上,创造出了封装、继承、多态这三大全新设计。
如果我有1个类代表动物,它可以有自己的数据(种类、年龄、身高、体重等等)和一些可以调用的特有功能(移动、进食、显示自身信息)。那么如果我再创建1个企鹅类,那么在声明这个企鹅类的时候,只需要指明它继承动物类,那么动物类已经有的全部功能,就不需要在企鹅类中再敲一遍代码了。只需要书写企鹅类独有的(而普通动物不一定有的)其它数据和功能(比如游泳)即可。
又比如你写打喵的喵游戏。你可以先设置1个通用的喵类Gun,在类的定义中规定它应该有的数据属性(价格、容量、上弹速度)和功能(喵)。等你需要设计1把喵的时候,你可以使喵类继承Gun类,然后只需单独规定喵特有的属性和功能(比如喵的类型和喵的外形编号)即可。等你需要设计1把喵喵的时候,你可以使喵喵类继承Gun类,然后只需单独规定喵喵特有的属性和功能(比如所用喵的种类)即可。你需要设计的喵越多,越能感觉到类的继承功能带来的方便,可以省写很多通用的功能。反过来,如果你需要修改喵喵特有的功能,只需要修改喵喵的类即可;如果你需要修改所有喵的某种属性数值或功能实现方式,只需要去所有喵的父类Gun中修改对应的一处代码即可,不需要一个喵一个喵地去改,那样太费时费力了。所以说,继承的好处是双向的。
这里只是体现继承带来的好处,封装、多态同样也有它们各自的优势,包括降低不同模块之间的彼此依赖(便于进行功能升级和替换)、实现更优雅的面向接口编程等。
以数据结构为核心的编程从此出现了面向对象这个全新的分支。人们在推崇面向对象的过程中,逐渐发展出了所谓的设计模式。设计模式专门讨论如何利用面向对象的特点,对大型程序进行功能分解、设计和维护,把程序分为不同的类,相似的类再根据共同点合并出公共的父类,类多了以后还可以进行分层次的抽象,最终的目的都是把程序功能清晰地划分为多个小模块,使各功能模块的职责分明、查错和扩展都更加方便。大型程序的编程变成了围绕设计模式的编程,研究OOP特有的设计模式成为了软件架构师的必修课。
2019-10-06T23:15:26 点赞:0
在 【求助】srand函数到底怎么使用??? 中回复
srand()函数的参数就是随机数的种子,要尽可能保证每次程序运行时传递给srand()的参数不一样(其参数的不同取值可以不是等概率分布的,只要尽量不同就行),srand()运行后就能保证稍后用rand()函数摇出来的数看上去会是比较随机的。
如果rand()是固定的值,那么rand() % 4444也会是固定的值,那么把它作为参数传递给srand()还是会导致每次运行的结果一样。
而且srand()函数只能用一次,然后可以多次使用rand()函数摇不同的随机数。把srand()写在自定义函数或循环里都不是正确的用法,超过一次以上的对srand()函数的调用会被系统忽略掉。
计算机的随机数算法生成的都是伪随机数,不管用什么方式模拟都是。用瞬间抓取的系统时间作为srand()函数的参数,只是比较流行的一种权宜之计。如果你取随机数的频率特别快,这种方法还是会时不时连续给出几个相同的数。物理世界里已知的真随机性只出现在量子现象里。这种随机性无法用现有科学解释,可能永远也无法解释,但通过实验观察到它的存在,没人能证实其随机性的由来。你可以在每一本主流量子力学教程里看到作者对这个问题避而不谈的态度。
2019-10-07T21:42:13 点赞:0