首页
学习
活动
专区
圈层
工具
发布

日拱一卒,一起来学伯克利CS61A,先做几道有趣的Python热身题

作者 | 梁唐 大家好,日拱一卒,我是梁唐。 最近上了CS61A的公开课,还做了它们的作业,非常有意思,分享给大家。...这是这门课的第一份作业,作业基于Python,需要了解一点基础的Python语法,非常有意思。即使没有听过课也没有关系,因为课上其实没讲太多和作业有关的内容,感兴趣的同学不妨试着自己做做。...Q1: A Plus Abs B 给定两个数a和b,要求实现a + abs(b),但不允许调用abs函数,其中abs是计算绝对值的操作。 在空格处填写代码。...Q5: Hailstone 实现函数,给定整数n,反复执行如下过程: 如果n是偶数,则除以2 如果n是奇数,则乘3再加上1 如果n等于1,退出 要求函数当中打印n变化的过程,并且返回一共变化的次数 def...: n = n // 2 else: n = n * 3 + 1 step += 1 return step 我也把我的代码传到了

58940
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    简单红外线解码

    #ENDIF //只知道哪个程序正在我的Arduino上运行 序列号。...重点是这个人的博客,好厉害 我终于在09年的时候8月份找到了 打开以后就是老哥最近对一个老式计算机的X光照片 这个是红外线这个篇文章 如何发送 该红外远程库由两部分组成:IRsend发送IR远程数据包...NEC是一个例外,它发送一个特殊的重复代码,而不是重复发送值。在这种情况下,解码例程将返回一个特殊的REPEAT值。...间隙定时在STATE_STOP和STATE_IDLE期间继续,因此可以精确测量两次发送之间的时间。如果在下一次传输开始之前未调用resume(),则部分传输将被丢弃。...我发现接收者仅发送一次将忽略该消息,但是如果发送两次则将起作用。对于RC5 / 6,切换位必须在连续传输中被调用代码翻转,否则接收器可能仅对代码响应一次。 最后,该库中可能存在错误。

    2.5K51

    日拱一卒,伯克利教你学Python,一次弄懂迭代器生成器

    作者 | 梁唐 出品 | 公众号:Coder梁(ID:Coder_LT) 大家好,日拱一卒,我是梁唐。 我们继续伯克利CS61A公开课之旅,这一次我们讨论的是lab11,也就是第11次实验课。...对一个生成器对象调用next函数,会运行并且返回序列中的下一个元素。如果序列已经结束了,抛出StopIteration异常 生成器会记住下一次执行next时的状态。...实现一个生成器,使得能够返回作业1中的hailstone序列。...下面是关于hailstone序列的一个快速回顾: 选择一个正整数n作为开始 如果n是偶数,将它除以2 如果n是奇数,将它乘3再加1 重复以上过程,直到n等于1 def hailstone(n):...你可以一直调用next而不会得到StopIteration异常。 提示:考虑定义一个innder生成器函数,它应该读入什么参数?你在哪里调用它呢?

    54020

    把 WebAssembly 用于提升速度和代码重用

    在这种情况下,add 指令是 addq(64 位加法),而不是例如 addl 这样的指令,它增加了 C 语言典型的 int 的 32 位值。...冰雹(hailstone)序列和 Collatz 猜想 生产级代码案例将使 WebAssembly 代码执行繁重的计算绑定任务,例如生成大型加密密钥对,或进行加密和解密。...序列收敛到 4,2,1 的序列无限重复需要 10 次调用:(3 x 1)+ 1 是 4,它除以 2 得 2,再除以 2 得 1。...我在 C 和 TypeScript 中的代码例子计算了冰雹序列的长度。 Collatz 猜想是一个冰雹序列会收敛到 1,无论初始值 N> 0 恰好是什么。...当 HTTP 响应到达时,WebAssembly 模块将把它做作为一个字节序列,它存储在脚本第 2 行的 arrayBuffer 中。

    1.2K40

    JDK中常用于监控及诊断工具有哪些?

    jps 你可能用过ps命令,打印所有正在运行的进程的相关信息。JDK 中的jps命令。沿用了同样的概念:它将打印所有正在运行的 Java 进程的相关信息。...它包括多条子命令,如下所示: 在这些子命令中,-class将打印类加载相关的数据,-compiler和-printcompilation将打印即时编译相关的数据。...剩下的都是以-gc为前缀的子命令,它们将打印垃圾回收相关的数据。 默认情况下,jstat只会打印一次性能数据。...下面我贴了一段-histo子命令的输出: 由于jmap将访问堆中的所有对象,为了保证在此过程中不被应用线程干扰,jmap需要借助安全点机制,让所有线程停留在不改变堆中数据的状态。...上一小节的jstat则不同。这是因为垃圾回收器会主动将jstat所需要的摘要数据保存至固定位置之中,而jstat只需直接读取即可。

    1.2K50

    【linux】进程理解

    01.进程的基本概念 在计算机科学中,进程是操作系统中的一个基本概念,代表了计算机程序的一次执行实例。...堆:用于动态内存分配,即程序运行时根据需要进行分配和释放的内存。 进程的特性 动态性:进程是程序的一次执行过程,它有创建、运行、等待、终止等多种状态。...处理器状态信息: 包括程序计数器(PC),指明当前正在执行或下一个要执行的指令地址。 包括CPU寄存器的内容(如通用寄存器、累加器等),它们需要在进程切换时被保存和恢复。...子进程行为: 子进程进入无限循环,每秒打印一次自己的状态信息(ID为0,当前PID,以及父进程的PID)。...父进程行为: 父进程也进入无限循环,每2秒打印一次自己的状态信息(包括子进程的PID,当前PID,以及父进程的PID)。

    31910

    中高级Java开发面试题,最难的几道Java面试题,看看你跪在第几个

    他正在接受技术主管职位的面试,并且有超过6年的经验。如果你还没有遇到过这种情况,那么字符数组和字符串可以用来存储文本数据,但是选择一个而不是另一个很难。...应遵循 Java 团队的建议, 坚持标准而不是反对它。 3)使用 String 时,总是存在在日志文件或控制台中打印纯文本的风险,但如果使用 Array,则不会打印数组的内容而是打印其内存位置。...另一种方法是在运行应用程序时实际锁定时找到它, 尝试采取线程转储,在 Linux 中,你可以通过kill -3命令执行此操作, 这将打印应用程序日志文件中所有线程的状态, 并且你可以看到哪个线程被锁定在哪个线程对象上...---- 任何序列化该类的尝试都会因NotSerializableException而失败,但这可以通过在 Java中 为 static 设置瞬态(trancient)变量来轻松解决。...根据我的经验, Java 序列化在任何 Java核心内容面试中都是一个相当重要的话题, 在几乎所有的网面试中, 我都遇到过一两个 Java 序列化问题, 我看过一次面试, 在问几个关于序列化的问题之后候选人开始感到不自在

    1.8K10

    对netwrokx对象pickle序列化踩过的坑

    今天聊聊我这几天在开发过程中遇到的一些序列化和反序列化踩过的坑。...虽然从输出结果来看,这一次运行的对象的数据,和上一次对象的数据一样,但其实这里的两个对象是完全没有关系的,python建立了映射到内存对象的地址,如果去打印这个地址,会发现两次的存储空间截然不同。...,这时它的绝对导入路径就是"/demo/tools",但是我在迁移时它的路径就改为了后端项目下的路径:"/backend/demo/tools",如果此时反序列化,python检测不到路径"/demo/...4.坑2:序列化的函数位置 将数据重新在后端环境下序列化一次后,我开始了接口query_graph的编写,直接在接口里面写了个load函数,然后运行,这其中呢,这个时候就又出错了,还是无法解析依赖内容,...附nx官方参考文档:https://networkx.org/documentation/stable/reference/readwrite/index.html 我正在参与2023腾讯技术创作特训营第二期有奖征文

    51220

    RxSwift 系列(九) -- 那些难以理解的概念

    Even:next(()) Even:completed 大家发现没有,map()函数执行了两次,但是有些时候,我们并不想让map()函数里面的东西执行两次,比如map()函数里面执行的是网络请求,我只需要执行一次请求...所以这时候就需要使用shareReplay(1)了。这里面的数字一般是1,只执行一次。...(ps:我改成 2,3 也只打印一次) let disposeBag = DisposeBag() let observable = Observable.just("?")....,这样更新UI会造成crash; 有两次绑定,fetchAutoCompleteItems就会执行两次 当然针对以上问题,我们也有解决方案,针对第三点,我们可以使用神器shareReplay(1)保证只执行一次...而flatMap对原有序列中的元素进行改造和处理,每一个元素返回一个新的sequence,然后把每一个元素对应的sequence合并为一个新的sequence序列。

    2.4K70

    VFP在运行时扩展报表系统,这是报表转换任意格式的秘决

    在“一次所有页”模式中,Report listener 会绘制所有的页并将它们放在内存的缓存中,然后它根据需要输出这些绘制好了的页,比如当用户在打印预览窗口中单击了 next 按钮。...的 TwoPassProcess 属性的报表需要两次 pass;而其它报表则只需要一次。...0表示一个两次 pass 报表中的第一次 pass、或者一次pass报表的唯一一次,而1则表示第二次 pass。 DynamicLineHeight L 若为.T....FRXDataSession N FRX游标(为让一个 ReportListener 使用而打开的、当前报表引擎正在运行的那个报表的一个只读拷贝)的数据工作期ID GDIPlusGraphics N 用于绘制的那个...这是一个数值型而不是逻辑型字段,以允许在子类中根据需要以不同的途径处理图像。 TowPassProcess L 表示是否为报表使用两次 pass。将这个属性设置为 .T.

    1.3K21

    额外空间复杂度O(1) 的二叉树遍历 → Morris Traversal,你造吗?

    这是 Morris Traversal 移动规所产生的必然结果   对于那些能达到两次的节点,我们如何区分是第一次到达,还是第二次到达?   ...Morris Traversal 第二次到达的节点不打印,就是 先序序列 了   代码也就手到擒来了 中序遍历   我们对比下 中序序列 和 Morris 序列   只会遍历一次的节点,直接打印...;会遍历两次的节点,第一次的时候不打印,第二次打印,就得到了 中序序列   代码很容易撸出来了 后序遍历   对比 后序序列 和 Morris 序列   一眼看不出有什么关系   通过 Morris...Traversal 得到 后续序列 确实不容易想到,我们直接看前辈们的经验   被遍历到两次的节点的先后顺序:b、e、a、c   1、b 节点的左子树的右边界:d,逆序打印它还是 d   2、e 节点的左子树的右边界...我们先看个极端的案例   它的时间复杂度是 2 * O(N),这个没什么问题吧?

    58820

    systemctl命令

    ,但是如果指定了--ignore inhibitors,则会忽略锁而不打印,并且无论如何都会尝试该操作,可能需要额外的权限。...例如由于服务单元的ExecStartPre=、ExecStop=或ExecReload=设置而启动的所有进程都是控制进程,注意每个单元一次只有一个控制过程,因为一次只执行一个状态更改,对于type=forking...用--all的来显示所有属性,要选择要显示的特定属性,请使用--property=,此命令用于需要计算机可分析输出时,如果要查找格式化的可读输出,请使用status。...),而不仅仅是那些由enable实际创建的符号链接,在完成单元的禁用之后,此调用隐式地重新加载systemd守护程序配置,请注意,此命令不会隐式停止正在禁用的单元,如果需要这样做,随后应执行一个额外的停止命令...Docker第一次运行时可以能会需要从网络下载服务的镜像文件,因此造成比较严重的延时,容易被systemd误判为启动失败而杀死,通常对于这种服务,需要将TimeoutStartSec的值指定为0,从而关闭超时检测

    2K20

    【Java面向对象】学习Java经典必刷题库

    Math类 自定义Math类: 属性:int n1 ,int n2, 满参构造方法, 编写加add、减sub、乘mult、除divi 四个方法,分别计算n1+n2,n1-n2,n1*n2,n1/n2,并打印结果...):每调用一次减速方法,速度属性减10, 定义查看当前时速方法showSpeed( ):该方法中打印出“当前时速为 XX”, 定义测试类:创建Car对象,调用两次加速方法,一次减速方法,然后调用查看时速方法进行测试...( ),计算并返回此长方形的周长, 定义求面积的方法getSquare( ),计算并返回此长方形的面积, 定义测试类,创建对象,并调用求周长和面积的方法。...(演示两种方法:setter方法和构造方法)   3.调用三个成员方法,打印格式如下:    正在使用价格为998元的小米品牌的手机打电话....    ...正在使用价格为998元的小米品牌的手机发短信....    正在使用价格为998元的小米品牌的手机玩游戏.... 猫类(封装、构造方法) 1.

    53040

    C#多线程之旅(1)——介绍和基本概念

    因为两个线程都调用实例p的go的方法,因此他们共享done这个字段,结果是done只打印出一次而不是两次。...可能被打印出两次(尽管是不太可能发生的)。...当我们把Go方法中的语句的顺序交换下,打印出两次done的几率显著提升。...在这个例子中,这个锁保证一次只有一个线程可以进入代码的临界区域,然后“Done”只会被打印一次。代码在这种不确定的多线程背景下中被保护被叫做线程安全。...并行编程 如果工作负荷被共享给正在执行“各个击破”策略的多个线程,则代码在多核或多进程中集中计算可以执行得更快。 预测执行 在多核的机器上,你有时通过预测某些事情需要做,然后提前做,从而可以提高性能。

    99591

    Python中的Socket编程,全掌握!

    需要注意的是正在传递的信息将以字节为单位,在上述程序的客户端中,一次传输最多可以接收1024字节(缓冲区大小)。根据传输的信息量,可以将其指定为任意数量。 最后,再解码并打印正在传输的消息。...,并将其打印到一次两个字节的缓冲区中,然后在完成连接后关闭连接。...要实现这一点,需要用到 Python 的 pickle 模块。 Python pickle模块 当我们实际序列化或反序列化 Python 中的对象时,就会使用到 Python pickle 模块。...在上面的程序中,mylist是使用pickle模块的dumps()函数序列化的。还要注意,输出以b开头,表示它已转换为字节。...然后如果收到的消息等于完整消息,我们只会将消息打印为收到的完整信息,然后使用loads()反序列化消息。 输出如下: 好了,以上就是我们今天分享的全部内容,喜欢就点个赞吧~

    1.3K20

    速读原著-TCPIP(Ping程序)

    这样即使在同一台主机上同时运行了多个 p i n g程序实例,p i n g程序也可以识别出返回的信息。序列号从0开始,每发送一次新的回显请求就加 1。...旧版本的p i n g程序曾经以这种模式运行,即每秒发送一个回显请求,并打印出返回的每个回显应答。但是,新版本的实现需要加上- s选项才能以这种模式运行。...当返回I C M P回显应答时,要打印出序列号和 T T L,并计算往返时间( T T L位于I P首部中的生存时间字段。...通过广域网还有可能看到重复的分组(即相同序列号的分组被打印两次或更多次),失序的分组(序列号为N + 1的分组在序列号为N的分组之前被打印)。...所以我们可以估计需要 1 4 3 3(8 6×8 . 3 3×2)m s(乘2 是因为我们计算的是往返时间)。 下面的输出证实了我们的计算: ?

    93920

    分组序列@GroupSequenceProvider、@GroupSequence控制数据校验顺序,解决多字段联合逻辑校验问题【享学Spring MVC】

    // 该接口定义了:动态Group序列的协定 // 要想它生效,需要在T上标注@GroupSequenceProvider注解并且指定此类为处理类 // 如果`Default`组对T进行验证,则实际验证的实例将传递给此类以确定默认组序列...>[] value(); } 顾名思义,它表示Group组序列。...= null)必须判空 为何年龄为:35,执行对应校验逻辑被输出了两次(在判空里面还出现了两次哦~),但校验的失败信息却只有符合预期的一次 带着问题,我从validate校验的执行流程上开始分析: 1...哟~这就解释了为何在判空里面的 `年龄为:xxx`被打印了两次的原因 // assertDefaultGroupSequenceIsExpandable方法是个空方法(默认情况下),可忽略...我把这部分看似是本文最重要的引线放到最后,是因为我觉得我的描述已经解决这一类问题,而不是只解决了这一个问题。

    4K21

    FreeMarker与JSP 2.0 + JSTL组合进行比较

    对于计算机用户,您需要?c反正,因为十进制分隔符也可以根据区域设置警惕。 4.为什么FreeMarker打印坏的十进制和/或分组分隔符符号(为3.14而不是3,14)?...但是,有两种情况是不切实际的: 当打印布尔值以生成计算机语言输出,因此您想要 true/ false,使用 。(这至少需要FreeMarker 2.3.20。...现在,如果你仍然想修改序列/哈希值,然后阅读... FreeMarkes模板语言不支持修改序列/散列。它用于显示已计算的东西,而不是用于计算数据。保持模板简单。但不要放弃,你会看到一些建议和窍门。...但是,很少有一些情况需要修改序列/散列,以获得一些复杂而纯粹的表示相关算法。很少发生,所以考虑这个计算(或它的一部分)是否属于数据模型域而不是表示域。我们假设你确定它属于演示文稿领域。...您会更改模板语言语法以适应我的编辑器吗? 我们不会更改标准版本,因为很多模板依赖于它。

    6.1K40
    领券