我正在尝试在python中为类创建一个程序,我无法弄清楚为什么我无法获得预期的输出。 程序将获取用户输入值,直到输入“完成”,然后打印这些值的最大值和最小值。它还有一些错误检查有效输入(数字而不是文本)。
largest = None
smallest = None
while True:
inp = raw_input("Enter a number: ")
if inp == "done" :
break
try:
num=float(inp)
except:
print "Invalid input"
continue
if inp>largest:
largest=inp
if inp<smallest:
smallest=inp
print "Maximum is ", largest
print "Minimum is ", smallest
如果插入'done',循环会正常中断。如果输入文本字符串,它不会失败,但也不会打印“无效输入”。我不是要求某人解决我的家庭作业计划,而是向我提供一个解释,说明为什么我从来没有得到最大或最小的东西,除了他们原来的“无”分配。
提前致谢。
答案 0 :(得分:2)
if smallest is None or smallest< inp:
smallest=inp
if largest is None or largest > inp:
largest=inp
您需要对比较运算符兄弟做些什么。现在你正在检查最小是否小于输入(反之亦然最大)。结果:你正在切换最大和最小。应该是这样的:
if smallest is None or inp < smallest:
smallest = inp
if largest is None or inp > largest:
largest = inp
答案 1 :(得分:1)
它不会报告正确的最大值或最小值,因为您在比较中使用inp
(字符串)而不是num
(浮点数)。
答案 2 :(得分:1)
不要使用None作为初始化,请使用浮点数。
largest =float("-inf") # negative infinity
smallest = float("inf") # infinity
while True:
inp = raw_input("Enter a number: ")
if inp == "done" :
break
try:
num = float(inp)
largest = max(largest, num)
smallest = min(smallest, num)
except:
print "Invalid input"
continue
print "Maximum is ", largest
print "Minimum is ", smallest
答案 3 :(得分:1)
largest = None
smallest = None
num = None
while True:
inp = raw_input("Enter a number: ")
if inp == "done" :
break
try:
num=float(inp)
except:
print ("Invalid input")
continue
if largest is None:
largest = num
smallest = num
if num>largest:
largest=num
if num<smallest:
smallest=num
print ("Maximum is ", largest)
print ("Minimum is ", smallest)
答案 4 :(得分:1)
这是我使用的最终代码。在所有回应的帮助下!感谢他们所有的时间。
largest = None
smallest = None
while True:
inp = raw_input("Enter a number: ")
if inp == "done" :
break
try:
num=float(inp)
except:
print ("Invalid input")
continue
if smallest is None or smallest< inp:
smallest=inp
if largest is None or largest > inp:
largest=inp
print ("Maximum is ", largest)
print ("Minimum is ", smallest)
答案 5 :(得分:0)
largest = None
smallest = None
while True:
num = input("Enter a number: ")
if num == "done" :
break
try :
num = int(num)
except:
print ("Invalid input")
continue
if smallest == None or num<smallest:
smallest = num
if largest == None or num>largest:
largest = num
print("Maximum is", largest)
print("Minimum is", smallest)
答案 6 :(得分:-1)
它有效,有点
python27 test.py
Enter a number: 10
Enter a number: 20
Enter a number: 40
Enter a number: done
Maximum is 40
Minimum is None
你永远不会得到一分钟,因为浮动永远不会少于无。