• FreeCodeCamp中的一个编程问题


    这两天一直在FCC上调代码,过程值得记录一下~(上一篇中有推荐过这个网站)

    ------------------------------这里是问题的分割线---------------------------------

    这里给出了一个查找表,然后实现通过查找“firstName”,在查找表中得到相关其他信息。

    ------------------------------------------问题结束------------------------------------------------

    已给出的查找表如下:(当然这个不太重要)

    给出框架如下:(跟不给没区别)

    编程思路其实在问题中已经给出,问题在于按照这个思路编程的过程中:

    首先我采用for循环,想找出给定的firstName所对应的在查找表中的位置,即找出contacts[i]中的i值,这点很容易实现:

    这是我就迎来了第一个问题,当时好久没想通:

    结果居然是个“空”。。。现在想来,分析结果如下:

    1、结果没有报错。说明程序语法上没有问题。

    2、由程序可知,如果出现contacts[i][firstName]==firstName,会返回i的值,这里并没有,说明循环一直运行下去,

    直到i=contacts.length。而给出的测试条件可以看出,“Akira”是存在于查找表中的,所以应该是判断语句出现问题。

    3、判断语句中,首先可以确定,语句右边是没有错的,那么问题就可能出现在左半句中。我们知道,表示多维数列中的元

    素,可以用[]或者. ,示例如下:

         contacts.i和contacts[i],但注意,此处两种表示方法在语法上均没有错误,但不一定是等价的。例如在本程序中,i

    为变量,contacts[i]表示contacts表中的第i个子序列,contacts.i表示contacts表中ID为i的子序列。

    反观上面的判断语句,contacts[i]的表示方式没错,但contacts[i][firstName]就存在歧义,此处我想表达的应该是第

    i个子序列中ID为firstName对应的序列,其正确表达方式为contacts[i].firstName(可能开发者的目的就是通过这个细节强化

    我们对[]和.使用环境的区分)。

    至此,第一个问题解决完毕~

    然后,在判断出i值后,只需添加判断语句即可,如下:

     

    结果居然是酱的。。。

    这个“0”是什么鬼!淡定,分析问题。。。

    1、语法没错

    2、五个要求居然有一个实现了。能够顺利实现“No such contact”,说明后面的判断语句也没错。

    3、结果是个“0”,貌似是“Akira”的序列号呢~所以不会是函数返回了i的结果吧!

    百度之下,发下自己犯了最原始的错误。。。

    return----跳出程序

    break----跳出最近的一层循环

    So......接着改程序!

     

    终于实现各种条件下的要求!!!

    其实,如果只是这样,我会在一个问题上纠结这么久么?并不会!

    所以问题在哪呢?问题在于,lz作死的没有按照开发者给出的思路编程(果然呐,天道好轮回!)

    这里贴一下lz最最最原始的版本,现在看起来,真的该去看脑科的。。。

    PS:永远不要在循环里嵌套这么多if!!!

  • 相关阅读:
    Ansible template中j2文件调用var中定义变量报错解决办法
    Ansible 获取hosts中的分组ip
    VUE UI网站汇总
    vue rules详解与实例
    Python 获取设备ip地址
    Flask && Vue 虚拟机申请平台(从开发到部署)
    Vue 把获取到的可编辑表格的值传给后端
    SQLAlchemy基本使用,创建表,增删改查
    Ansible 角色(roles)一键部署redis集群(三主三从)
    Flask 数据库相关操作
  • 原文地址:https://www.cnblogs.com/bees/p/5567690.html
Copyright © 2020-2023  润新知