【问题标题】:How to compare NoneType with Float on Python如何在 Python 上比较 NoneType 和 Float
【发布时间】:2019-06-19 11:36:01
【问题描述】:

我正在用 Python 3 编写代码来显示一些数字之间的最大值和最小值。它给出了一个错误。

sml_value = None
largest_value = None

while True:
    line = input('Enter a number: ')
    if line == 'done':
        break
    try:
        fl = float(line)
    except:
        print('Invalid input')
        continue
    if line < sml_value:
        sml_value = line
    elif line > largest_value:
        largest_value = line
print(sml_value, largest_value)

输出:

Enter a number: 5
Traceback (most recent call last):
  File "exercise5.2.py", line 13, in <module>
    if line < sml_value:
TypeError: '<' not supported between instances of 'str' and 'NoneType'

【问题讨论】:

  • 你不应该比较fl,而不是line吗?您需要特别考虑sml_valuelargest_value is None 的情况,因为这是您最初设置的。
  • 感谢指正。我会试试的
  • 条件语句是否为:如果 sml_value 为 None:sml_value = fl elif maximum_value 为 None:maximum_value = fl elif sml_value fl: maximum_value = fl
  • 可能不是elif,否则你只为第一个非None值设置一个。

标签: python-3.x int nonetype


【解决方案1】:
largest = None
smallest = None
while True:
    num = input("Enter a number: ")
    if num == "done" :
        break
    try :
        num = float(num)
    except :
        print('Invalid Input')
        continue
    if largest is None or num > largest:
        largest = num
    elif smallest is None or num < smallest:
        smallest = num
print("Maximum is", int(largest))
print("Minimum is", int(smallest))

【讨论】:

  • 由于您已将其他人的 cmets 写入答案,如果您可以 edit 您的答案并在答案正文中突出显示您所做的事情,那将是一个更好的答案,以便其他人可以从中学习。
猜你喜欢
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 2020-06-19
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多