基本Python循环:用户输入的最大值和最小值

时间:2015-10-12 18:41:48

标签: python

我正在尝试在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',循环会正常中断。如果输入文本字符串,它不会失败,但也不会打印“无效输入”。我不是要求某人解决我的家庭作业计划,而是向我提供一个解释,说明为什么我从来没有得到最大或最小的东西,除了他们原来的“无”分配。

提前致谢。

7 个答案:

答案 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

你永远不会得到一分钟,因为浮动永远不会少于无。