推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
KMHook
V2EX  ›  Python

感觉很奇怪的一道python笔试题。

  •  
  •   KMHook · Sep 3, 2013 · 6358 views
    This topic created in 4813 days ago, the information mentioned may be changed or developed.
    同学问道下面这个问题:

    你认为下面的代码是否存在错误呢?如有,请修改

    def check_data(info):
    name, age, height = info
    id = get_id_by_name(name)
    return validate(id, age)

    print check_data([‘xiaoming’,12,170])

    看上去挺奇怪的,一定说有错的话,我只看到‘xiaoming’这用的是中文的引号。
    求教,是否还有别的地方有错呢?
    注:缩进都没问题。
    22 replies  •  1970-01-01 08:00:00 +08:00
    mengzhuo
    mengzhuo
    Sep 3, 2013
    1
    看不出
    不是Pythonic算不算?
    larkifly
    larkifly
    Sep 3, 2013
    2
    看了半天没看出来,期待楼下回答
    cxshun
    cxshun
    Sep 3, 2013
    3
    真没看出啥问题啊,楼主XD继续。中文引号,貌似不是啊,是英文的引号啊。难道是指缩进问题?
    linnchord
    linnchord
    Sep 3, 2013
    4
    估计是校验、异常、风格啥的,3行代码有2个未知外部调用,含混不清。

    这种题目通常是出题人拍脑袋生搬硬套出来的,不及格的笔试题。
    jianghu52
    jianghu52
    Sep 3, 2013
    5
    黏贴跑了一下。引号有问题,另外,还报错是说是get_id_by_name 这个方法没定义。
    sethverlo
    sethverlo
    Sep 3, 2013
    6
    感觉是开放性的题吧……

    比如说没有类,比如说不知道有没有对 name 进行检查,比如说 check_data 和 validate 一起出现有点儿奇怪的感觉……
    sethverlo
    sethverlo
    Sep 3, 2013
    7
    @jianghu52 这个肯定没法直接跑的……validate 也没定义。
    scusjs
    scusjs
    Sep 3, 2013
    8
    我看到的第一个问题是缩进。。。。
    felinx
    felinx
    Sep 3, 2013
    9
    大家没有注意到id是关键字吗?

    另外
    name, age, height = info
    这个是非常容易出错的
    sethverlo
    sethverlo
    Sep 3, 2013
    10
    @felinx

    >>> print id
    <built-in function id>
    >>> id = 3
    >>> print id
    3
    inyfee
    inyfee
    Sep 3, 2013
    11
    没看出来错在哪里 ,等解释
    felinx
    felinx
    Sep 3, 2013
    12
    @sethverlo

    不是说运行有问题,是不推荐这么做,关键字最好不要当变量或方法名,假设后面的代码要用到id呢?
    Kabie
    Kabie
    Sep 3, 2013
    13
    @felinx 严格地说这不是关键字是内置函数吧……这里是小函数内部立刻返回了也不会有太大关系……

    当然这确实是不好的做法……虽然我觉得还够不上错误……
    sethverlo
    sethverlo
    Sep 3, 2013
    14
    @felinx 我上面也说了,我觉得这是个开放性的题……语法错误可能没有,但是别的错误倒是可以挑一堆出来……
    mengzhuo
    mengzhuo
    Sep 3, 2013
    15
    @felinx 各种ORM用filter,id, hash笑而不语
    leoleozhu
    leoleozhu
    Sep 3, 2013
    16
    是只验证了age,而没有验证height么?
    Jowei
    Jowei
    Sep 5, 2013 via Android
    17
    我当时加个自以为的 try ...except...
    然后把那个多余的传入值给干掉了。

    也不是很清楚,这道题到底要干嘛。
    leiz
    leiz
    Sep 5, 2013
    18
    函数内关键字,不确定的话,前面加'_',例: _id
    clippit
    clippit
    Sep 5, 2013
    19
    height传入有啥用?
    qzero
    qzero
    Sep 5, 2013
    20
    没有验证参数列表的长度。
    qzero
    qzero
    Sep 5, 2013
    21
    而且可以写成 def check_data(*info): 这样调用的时候可以写的好看点。
    siteshen
    siteshen
    Sep 5, 2013
    22
    @leiz 貌似 pep8 推荐后面加'_',前面 加'_'表示 private。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   734 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 22:54 · PVG 06:54 · LAX 14:54 · JFK 17:54
    ♥ Do have faith in what you're doing.