用户输入后立即打印结果"完成"

时间:2015-05-07 10:32:52

标签: python string python-2.7 while-loop user-input

largest_so_far = None
smalest_so_far = None

value = float(raw_input(">"))
while value != ValueError:


    value = float(raw_input(">"))
    if value > largest_so_far:      
            largest_so_far = value
    elif value == "done":
        break



print largest_so_far

我认为这个问题是,当输入是float类型时,done是字符串。

我还尝试使用value = raw_input(">")代替float(raw_input(">")进行运行,但会将结果打印为已完成

2 个答案:

答案 0 :(得分:2)

几点提示:

  1. 不是立即将用户输入转换为float,为什么不首先检查它是否为done

  2. 由于您要永久执行此操作,直到用户输入done或存在值错误,请使用无限循环和try..except,如此

  3. # Start with, the negative infinity (the smallest number)
    largest_so_far = float("-inf")
    # the positive infinity (the biggest number)
    smallest_so_far = float("+inf")
    
    # Tell users how they can quit the program
    print "Type done to quit the program"
    
    # Infinite loop
    while True:
    
        # Read data from the user
        value = raw_input(">")
    
        # Check if it is `done` and break out if it actually is
        if value == "done":
            break
    
        # Try to convert the user entered value to float
        try:
            value = float(value)
        except ValueError:
            # If we got `ValueError` print error message and skip to the beginning
            print "Invalid value"
            continue
    
        if value > largest_so_far:      
            largest_so_far = value
    
        if value < smallest_so_far:      
            smallest_so_far = value
    
    print largest_so_far
    print smallest_so_far
    

    编辑:已编辑的代码有两个主要问题。

    1. continue语句应位于except块内。否则,总是会跳过比较。

    2. 当你比较不同类型的两个值时,Python 2并没有抱怨它。简单地说,比较值的类型。因此,在您的情况下,由于您将largest_so_far指定为None,因此将NoneTypefloat类型进行比较。

      >>> type(None)
      <type 'NoneType'>
      >>> None > 3.14
      False
      >>> None < 3.14
      True
      

      因为float类型始终小于None类型,条件

      if value > largest_so_far:      
          largest_so_far = value
      

      永远不会满足。所以你将获得None。相反,请使用我在答案中显示的float("- inf")

答案 1 :(得分:1)

我会这样做:

sdk.id