V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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
craiiz
V2EX  ›  Python

Python 作业题求助......

  •  
  •   craiiz · 2016-09-21 21:33:18 +08:00 · 5341 次点击
    这是一个创建于 3022 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Write a program that repeatedly prompts a user for integer numbers until the user enters 'done'. Once 'done' is entered, print out the largest and smallest of the numbers. If the user enters anything other than a valid number catch it with a try/except and put out an appropriate message and ignore the number. Enter the numbers 4,5,6,7 and Match the desired output as shown below:

    Invalid input
    Maximum is 7
    Minimum is 4

    please build your program based on the sample code:

    largest = None
    smallest = None
    while True:
    num = raw_input("Enter a number: ")
    if num == "done" : break
    print num

    print "Maximum", largest
    29 条回复    2016-09-25 07:49:07 +08:00
    kkzxak47
        1
    kkzxak47  
       2016-09-21 22:20:45 +08:00 via Android   ❤️ 1
    哪个地方不会?
    全都不会的话,这门课退了吧。
    fy
        2
    fy  
       2016-09-21 22:24:48 +08:00
    @kkzxak47 英文不会 (滑稽)
    ethanlu
        3
    ethanlu  
       2016-09-21 22:56:46 +08:00
    让用户一直输入整数,直到他输入 done 为止, done 输入之后打印所有输入数字中的最大值和最小值,如果用户输入非整数,用 try/except 弹出提示并忽略输入的非整数
    Trim21
        4
    Trim21  
       2016-09-21 23:05:27 +08:00
    看来英文不会的问题解决了(滑稽)
    necomancer
        5
    necomancer  
       2016-09-21 23:18:26 +08:00
    ```
    i = ''
    nums = []
    while i != 'done':
    ....if i.isdigit():
    ........nums.append(float(i))
    ....i = input('Enter a number (end by "done"): ')
    print(max(nums), min(nums))
    ```
    necomancer
        6
    necomancer  
       2016-09-21 23:23:24 +08:00
    好吧,还有 invalid

    i = input('Enter a number (end by "done"): ')
    nums = []
    while i != 'done':
    ....if i.isdigit():
    ........nums.append(float(i))
    ....else:
    ........print('Invalid input!')
    ....i = input('Enter a number (end by "done"): ')
    if nums:
    ....print(max(nums), min(nums))
    likeunix
        7
    likeunix  
       2016-09-21 23:43:40 +08:00 via Android
    楼主,不是我打击你,这题目还能再简单吗?
    casparchen
        8
    casparchen  
       2016-09-22 00:30:04 +08:00 via iPhone   ❤️ 3
    @likeunix
    基于 WHILE 和 IF...ELSE 的可终止数组最值统计系统
    ooh
        9
    ooh  
       2016-09-22 00:55:47 +08:00 via Android   ❤️ 1
    我都会,现在学前班都这么拼了么
    andrewpsy
        10
    andrewpsy  
       2016-09-22 02:00:13 +08:00
    @necomancer
    你这思路面试的话肯定会被问:有没有可改进的地方了?
    加分题:如果有个用户硬是输入了 1000 万个数字咋办。
    necomancer
        11
    necomancer  
       2016-09-22 03:35:17 +08:00
    @andrewpsy 哈哈哈~有道理,我回答一下:

    a,l ='', []
    while a!='done':
    ....a = input('Enter num: ')
    ....if a.isdigit():
    ........l.append(int(a))
    ........l = [min(l), max(l)]
    ....elif a!='done':
    ........print('Invalid!')
    print(l)

    能不能扯虎皮做大旗地回复一下面试官
    1 、就当前硬件条件来说,这是在最小化影响用户体验前提下最快的开发方式,等到研究明白把专属硬件都开发出来市场早就让人抢光了,等着卖技术吧;
    2 、面向用户输入,在用户输入有意义数字(~秒级时间)情况下, 10^7 输入量的事只有傻逼才干,这种 lunatic 基数太小不予考虑。再者,真有如此大输入量相信就目前硬件行情来看也能处理。
    Valyrian
        12
    Valyrian  
       2016-09-22 05:44:14 +08:00
    @necomancer 面试面的就是技术。。这么说就是强词夺理。。

    另外为啥一定是人工输入?最简单的 unix pipe 就可以实现批量输入
    msg7086
        13
    msg7086  
       2016-09-22 06:17:52 +08:00
    @necomancer 面向用户输入,不代表面向键盘输入。
    我把一架飞机的速度计接到你的程序上来统计飞机的最高和最低飞行速度可以不?

    写个小程序,有这种问题是无所谓。如果是去公司干活,你的代码留个坑,他的代码留个坑,最后做完项目就是成千上万的坑了。(我在我司这种情况看得太多了……都是先人偷懒挖个坑,后人擦屁股擦到吐血……)
    firebroo
        14
    firebroo  
       2016-09-22 06:32:08 +08:00 via Android
    @necomancer 你这样的思维写代码我估摸会有很多安全问题,因为你都把用户都当正常人了。
    bearqq
        15
    bearqq  
       2016-09-22 06:49:55 +08:00 via Android
    我是比较反感给人讲这种作业题的。
    之前在知乎上给人答过好多次,后来有人来评论了,表示这是作业,你不应该做别人的作业。
    想想也是,这些题都是简单的基础题,看看书都会,要真做不出来就白学了。。
    所以后来这种问题没看进一次都感叹一下然后默默关掉。
    20015jjw
        16
    20015jjw  
       2016-09-22 08:26:29 +08:00
    @necomancer 强行用 list 为啥不能 keep 一个 max 和一个 min 多了好多逻辑 而且还没有 try block 不符合题目要求

    lz 这题这么简单还上来问
    think first before posting 是最基本的好嘛
    而且这不算作弊么
    czk1997
        17
    czk1997  
       2016-09-22 08:27:48 +08:00
    1. 善用 google 搜索,网上第一条 github 就是答案
    2.这题真的不难……用数组记录调用 max 或者 min 或者只记录当前最大最小值就好,方法很多。
    3.这题用户不会有你们想的那么复杂吧,因为这题网上不是说了么: Programming For Everybody Coursera Course ,初学者作业题又不是面试题你们讨论的那么复杂干啥……面试题限定条件随便加啊……
    caixiangyu17
        18
    caixiangyu17  
       2016-09-22 08:37:27 +08:00
    lz 这是在国外读书的作业么?这要是作业,这书也没啥好读的了。。。。这个难度,作为前两周入门的 lab 勉强够看,而且 lab 题量好歹要是四五道这样的题。
    wemore
        19
    wemore  
       2016-09-22 12:23:36 +08:00 via Android
    有没有什么办法能解决看到一坨英文恐惧症啊(滑稽)
    zhanglintc
        20
    zhanglintc  
       2016-09-22 15:24:12 +08:00   ❤️ 1
    的确感觉提这种问题的都是偷懒的, 不想做作业, 就出来提问.

    不过比在百度知道上提问似乎要好一点, 毕竟还知道 V2EX...
    bwangel
        21
    bwangel  
       2016-09-22 17:39:07 +08:00   ❤️ 1
    @wemore ,闲着没事去翻译文档!

    就打开 Python 文档,调一个感兴趣的库,然后一句一句翻译,用来写个博客啥的。慢慢对于英文你就麻木了!
    vagary
        22
    vagary  
       2016-09-22 17:47:00 +08:00
    有个妹子朋友出国读书,不是计算机专业,但是要 修几门基础编程。
    于是那段时间 天天给她写作业。
    估计楼主可能也是这样的情况。
    fengfisher
        23
    fengfisher  
       2016-09-22 17:49:03 +08:00
    @zhanglintc 不过比在百度知道上提问似乎要好一点, 毕竟还知道 V2EX...+1
    wemore
        24
    wemore  
       2016-09-22 18:09:57 +08:00 via Android
    @bwangel 目前正在看 spring 的官方文档,有道从未离手(ಥ_ಥ)
    yexiaoxing
        25
    yexiaoxing  
       2016-09-23 01:24:41 +08:00
    歪个楼,嘛,这题目看起来像我们 Python 入门课第一节课的作业 :)
    maple
        26
    maple  
       2016-09-23 09:25:38 +08:00
    干嘛不去 stackflow.奇怪....
    wizardforcel
        27
    wizardforcel  
       2016-09-24 11:42:52 +08:00
    @firebroo 这种作业不用考虑什么输入校验,除非题目里有明确要求。

    有安全意识是好事,但要分场合使用。

    @msg7086 飞机的速度序列是无穷序列,这道题中的程序必须输入个‘ done ’才能出结果,显然不能统计。
    firebroo
        28
    firebroo  
       2016-09-24 14:54:04 +08:00 via Android
    @wizardforcel 安全编码是需要习惯思维培养。
    msg7086
        29
    msg7086  
       2016-09-25 07:49:07 +08:00
    @wizardforcel 飞机是会停的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1082 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 22:50 · PVG 06:50 · LAX 14:50 · JFK 17:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.