【问题标题】:python incorrectly values < and >python 错误地赋值 < 和 >
【发布时间】:2016-03-25 17:43:29
【问题描述】:

以下是我错误地计算 的代码。大约 3X 给 raw_input 它将执行值 12

largest = None
smallest = None
while True:
    num = raw_input("Enter a number: ")
    if num == "done" : break
    try:
        float(num)
    except ValueError:
        print "Invalid input" 
        break
    float(num)
    if largest is None:
        largest = num
        float(largest)
    if smallest is None:
        smallest = num
        float(largest)
    if num > largest:
        largest = num
        float(largest)
    if num < smallest:
        smallest = num
        float(smallest)
    print num

print "Maximum", largest
print "Minimum", smallest

【问题讨论】:

  • “做值 12
  • 你不是在比较12 &lt; 4;你在比较"12" &lt; "4"
  • 另外,只是说float(smallest) 不会改变smallest。你需要做smallest = float(smallest)
  • @zondo 是正确的。在您的情况下,如果您只是将 try 块修改为 try: num = float(num),那么我认为您不必进行任何其他更改。只是你可以删除所有的 float() 调用。

标签: python floating-point


【解决方案1】:

float(num) 计算num 的浮点值,但不对其任何操作;特别是,它不会改变num 的值。你需要一个作业才能做到这一点。

【讨论】:

    【解决方案2】:

    float 不会就地更改变量 - 它返回一个强制转换值,您通过不在任何地方保存它来忽略它。只需分配它,您应该就可以了:

    try:
        num = float(num)
    except ValueError:
        print "Invalid input" 
        break
    
    if largest is None:
        largest = num
    if smallest is None:
        smallest = num
    if num > largest:
        largest = num
    if num < smallest:
        smallest = num
    print num
    

    【讨论】:

      【解决方案3】:

      在您当前的代码中,在将num 转换为float 之后,您实际上从未它分配给任何东西。

      float(num)
      

      相反,您需要在转换后重新分配num

      num = float(num)
      

      如果您不这样做(如在您当前的代码中),当您执行比较时,您将执行 字符串 比较而不是数字比较。

      "12" < "4"   # True
      

      【讨论】:

      • 我认为您需要删除初始转换为浮动,以消除对您答案的反对意见,因为用户正在使用字符串“完成”的输入。不过,这只是我最疯狂的猜测!
      • @Sнаđошƒаӽ 是的!才意识到这一点。感谢您指出这一点。
      • @Cyr1lfiggus 如果 Suever 回答了您的问题,请将他们的回答标记为已接受(绿色复选标记)。
      【解决方案4】:

      您不会在代码中更改 num 的值。键入“float(num)”实际上并没有做任何事情,因为它只是暂时将该变量转换为浮点数。要实际更改值,我建议进行以下编辑。

      largest = None
      smallest = None
      while True:
          num = raw_input("Enter a number: ")
          if num == "done" : break
          try:
              float(num)
          except ValueError:
              print "Invalid input" 
              break
          num = float(num)
          if largest is None:
              largest = num
          if smallest is None:
              smallest = num
          if num > largest:
              largest = num
          if num < smallest:
              smallest = num
          print num
      
      print "Maximum", largest
      print "Minimum", smallest
      

      【讨论】:

      • 非常感谢您的快速反馈!
      猜你喜欢
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 2018-02-02
      • 2015-12-21
      相关资源
      最近更新 更多