我最近参加了Python课程,而我正在进行的练习希望我找到最大和最小的数字。如果我输入"字符串"然后它会提示"输入无效。"这是我到目前为止所得到的,但我收到了追溯错误:
Traceback (most recent call last):
File "FindingSmallestLargestNum.py", line 15, in <module>
if num > largest:
TypeError: '>' not supported between instances of 'float' and
'NoneType'
以下是我的代码行:
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 smallest is None:
smallest = num
if num > largest:
largest = num
elif num < smallest:
smallest = num
print("Maximum is",int(largest))
print("Minimum is",int(smallest))
我不确定为什么我会收到此错误代码。请帮忙。
谢谢
答案 0 :(得分:3)
关于:
if smallest is None:
smallest = num
您正确地将smallest
设置为第一个值,但不对largest
执行相同的操作。
这意味着,对于第一个值,表达式num > largest
将等同于FloatVariable > NoneVariable
,这是您看到的错误的原因。
更好的方法是:
if smallest is None:
smallest = num
largest = num
elif num > largest:
largest = num
elif num < smallest:
smallest = num
这样做的好处是可以使用smallest
和largest
两者在开始时None
或两者非None
在第一个值之后(第一个值本身就是当前最小值和最大值)。
它也没有为第一个值执行第二个if
阻止 - 现在没有必要为此设置smallest
和 largest
值。
答案 1 :(得分:0)
你的代码肯定会工作,但我认为赋值已经包含了 None 值,这意味着他们希望我们使用 None 值,这花了我一点时间,但我按照他们的意愿做了 祝你好运
largest = None
smallest = None
while True:
num = input("Enter a number: ")
if num == "done" : break
try:
numbers = int(num)
except:
print("Invalid input")
continue
if largest is None:
largest = numbers
elif numbers > largest:
largest = numbers
if smallest is None:
smallest = numbers
elif numbers < smallest:
smallest = numbers
print("Maximum is", largest)
print("Minimum is", smallest)