python 输入一列数字,找出最大值最小值 这个程序哪里错了?

如题所述

对齐部分错了,while 之后的语句都应该在 while 循环里面, 按照你目前的程序 while 跳出来的结果是 num = "done", 不能转化为数字,直接异常为 invalid input,

例子如下,每输入一个数子都会print 当前最大最小值, 也可以把 print 语句放在 while 循环之外,这样在输入 -99 之后才显示最终结果

s = -99
n = 1
minimum = None
maximum = None
print ("Enter a series of numbers")
print ("Enter -99 to quit.")
while True:
n = float(input("Number: "))
if n == s:
break
if minimum is None or n < minimum:
minimum = n
if maximum is None or n > maximum:
maximum = n
print ("The maximum is: ", maximum)
print ("The minimum is: ", minimum)

例子来自
http://stackoverflow.com/questions/15062926/trying-to-find-minimum-and-maximum-from-user-input-using-python-the-sentinal-va
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-09
1) input应该是个数组吧?你这里没体现出来。你的input是个float而已。
2) 那个try except应该在while循环里面的。
3) 其他错误没看出来。

我觉得python可以通过打印来判断,或者用pyscripter或者用python tools for visual studio追问

什么数组啊?怎么体现呢,抱歉我是自学所以很多术语都不会啊。

追答

文件test.py
import os,sys

largest=None
smallest=None
inputs=[]

while True:
num=raw_input("enter a number:")
if num=="done":
break
try:
f=float(num)
inputs.append(f)
except Except,e:
print "input %s not float,error %s"%(num,e)

if len(inputs)==0:
print "no number in array"
sys.exit(-1)

smallest=largest=inputs[0]
for n in inputs:
if nlargest:
largest=n
print "array:",inputs
print "smallest %s largest %s"%(smallest,largest)

数据文件可以手工输入,也可以重定向,我是写了一个简单的文件data.txt:
12
23
98
76
42
18
done

然后运行 test.py < data.txt 运行结果如下:
enter a number:enter a number:enter a number:enter a number:enter a number:enter
a number:enter a number:array: [12.0, 23.0, 98.0, 76.0, 42.0, 18.0]
smallest 12.0 largest 98.0

追问

谢谢这么详细的
我想得到的结果是
Invalid input
Maximum is 7
Minimum is 4

但是我只能得到
Maximum is 7.0
Minimum is 4.0

怎么办啊?

追答

这个,你用了float了,当然就有.0之类的了
x=7.323
print "%.0f"%x
这种格式控制就只打整数部分了

本回答被提问者采纳
相似回答