Python 3.x Python3-TypeError:'&燃气轮机';在';浮动';和';非类型';

Python 3.x Python3-TypeError:'&燃气轮机';在';浮动';和';非类型';,python-3.x,traceback,Python 3.x,Traceback,我最近参加了一门Python课程,我正在进行的练习希望我找到最大和最小的数字。如果我输入一个“字符串”,那么它会提示“无效输入”。以下是我到目前为止得到的结果,但我得到了一个回溯错误: Traceback (most recent call last): File "FindingSmallestLargestNum.py", line 15, in <module> if num > largest: TypeError: '>' not support

我最近参加了一门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'
回溯(最近一次呼叫最后一次):
文件“FindingSmallestLargestNum.py”,第15行,在
如果num>最大值:
TypeError:“float”和的实例之间不支持“>”
“非类型”
以下是我的代码行:

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))
max=None
最小=无
尽管如此:
num=输入(“输入一个数字:”)
如果num==“完成”:中断
尝试:
num=浮点(num)
除:
打印(“无效输入”)
持续
如果最小值为无:
最小=num
如果num>最大值:
最大=num
elif num<最小值:
最小=num
打印(“最大值为”,整数(最大值))
打印(“最小值为”,整数(最小值))
我不知道为什么我会得到这个错误代码。请帮忙

感谢您

关于:

if smallest is None:
    smallest = num
您已将
最小值
正确设置为第一个值,但对
最大值
不进行相同设置

这意味着,对于第一个值,表达式
num>maximust
将等效于
FloatVariable>NoneVariable
,这就是您看到的错误的原因

更好的方法是:

if smallest is None:
    smallest = num
    largest = num
elif num > largest:
    largest = num
elif num < smallest:
    smallest = num
如果最小值为无:
最小=num
最大=num
elif num>最大值:
最大=num
elif num<最小值:
最小=num
这样做的好处是使用了以下知识:
最小值
最大值
在开始时都是
,或者在第一个值之后都是非
(第一个值本身就是当前的最小值和最大值)


如果为第一个值设置
最小值
最大值
,它也不会执行第二个
,但我认为任务中已经没有任何值,这意味着他们希望我们使用无值。这花了我一点时间但我做了他们想要的
祝你好运

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)
max=None
最小=无
尽管如此:
num=输入(“输入一个数字:”)
如果num==“完成”:中断
尝试:
数字=整数(num)
除:
打印(“无效输入”)
持续
如果最大值为无:
最大=个数
elif编号>最大值:
最大=个数
如果最小值为无:
最小=数字
elif编号<最小值:
最小=数字
打印(“最大值为”,最大值)
打印(“最小值为”,最小值)

该错误表示正在将
num
(一个浮点值)与
最大值
(一个
非类型
)进行比较。这意味着
最大
尚未初始化为适合
浮点
比较的类型。尝试修改<代码>最大值<代码>从<代码>没有<代码>到<代码> 0代码>代码。只要快速抬头,@ TyY19,如果输入的第一个数字是否定的,它将不实际工作,它将考虑当前最大值的0。最好是为
最大的
做你目前正在为
最小的
做的事情,尽管你可以根据我的答案简化它-只有
最小的
在开始时需要是
。@paxdiablo啊,很好,谢谢你们两位的参与。我明白发生了什么,使用你的方法,我能够完成我的小程序!