首页 文章

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

提问于
浏览
1

我正在尝试在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

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

提前致谢 .

7 回答

  • 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
    
  • 2
    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)
    
  • 0

    它有效,有点

    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
    

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

  • -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)
    
  • 1
    if smallest is None or smallest< inp:
        smallest=inp
    if largest is None or largest > inp:
        largest=inp
    

    您需要对比较运算符兄弟做些什么 . 现在你正在检查最小值是否小于输入值(反之,最小值) . 结果:你're switching max and min. Should'是这样的:

    if smallest is None or inp < smallest:
        smallest = inp
    if largest is None or inp > largest:
        largest = inp
    
  • 1

    它不会报告正确的最大值或最小值,因为您在比较中使用了 inp (字符串)而不是 num (浮点数) .

  • 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)
    

相关问题