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

2016-09-21 21:33:18 +08:00
 craiiz
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
5158 次点击
所在节点    Python
29 条回复
kkzxak47
2016-09-21 22:20:45 +08:00
哪个地方不会?
全都不会的话,这门课退了吧。
fy
2016-09-21 22:24:48 +08:00
@kkzxak47 英文不会 (滑稽)
ethanlu
2016-09-21 22:56:46 +08:00
让用户一直输入整数,直到他输入 done 为止, done 输入之后打印所有输入数字中的最大值和最小值,如果用户输入非整数,用 try/except 弹出提示并忽略输入的非整数
Trim21
2016-09-21 23:05:27 +08:00
看来英文不会的问题解决了(滑稽)
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
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
2016-09-21 23:43:40 +08:00
楼主,不是我打击你,这题目还能再简单吗?
casparchen
2016-09-22 00:30:04 +08:00
@likeunix
基于 WHILE 和 IF...ELSE 的可终止数组最值统计系统
ooh
2016-09-22 00:55:47 +08:00
我都会,现在学前班都这么拼了么
andrewpsy
2016-09-22 02:00:13 +08:00
@necomancer
你这思路面试的话肯定会被问:有没有可改进的地方了?
加分题:如果有个用户硬是输入了 1000 万个数字咋办。
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
2016-09-22 05:44:14 +08:00
@necomancer 面试面的就是技术。。这么说就是强词夺理。。

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

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

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

不过比在百度知道上提问似乎要好一点, 毕竟还知道 V2EX...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/307955

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX