Skip to main content
 首页 » 编程设计

python之即使输出完美,Python 中也会出现不匹配错误

2025年05月04日14EasonJim

我把这个作为我的任务:-

编写一个程序,反复提示用户输入整数,直到用户输入“完成”。输入“完成”后,打印出最大和最小的数字。如果用户输入的不是有效数字,则使用 try/except 捕获它并发出适当的消息并忽略该数字。输入 7、2、bob、10 和 4 并匹配下面的输出。
期望的输出-
输入无效
最大值为 10
最小值为 2

我为此编写了以下代码-

largest = None 
smallest = None 
count=0 
while True: 
    num = input("Enter a number: ") 
 
    if num == "done" : 
        break 
    try: 
        fval=float(num) 
        count=count+1 
 
        if(fval == None): 
            largest=None 
            smallest=None 
 
        if(largest<fval): 
            largest=int(fval) 
        if(count==1): 
            smallest=fval                     
        else: 
            if(int(fval) < smallest): 
                    smallest=int(fval) 
 
 
 
    except: 
        print("Invalid input") 
        continue 
 
 
 
 
 
 
print("Maximum is", largest) 
print("Minumum is", smallest) 

它也工作正常。我能够获取最小和最大的条目。但是,最后,编辑器不接受此代码。代码逻辑中是否存在任何可能的错误?

提前感谢您的帮助。

请您参考如下方法:

我认为您的 python 版本与代码判断运行以评估您的代码的版本不匹配。

有什么区别? None 可以与整数进行比较(实际上,在 python2 中几乎所有的东西都是可比较的)。看看这个:

Python 2.x

In [211]: None < 123456 
Out[211]: True 

Python 3.x

In [152]: None < 123456 
--------------------------------------------------------------------------- 
TypeError                                 Traceback (most recent call last) 
<ipython-input-152-cf9ae210e7ad> in <module>() 
----> 1 None < 123456 
 
TypeError: unorderable types: NoneType() < int() 
> <ipython-input-152-cf9ae210e7ad>(1)<module>() 
----> 1 None < 123456 

这对您有何影响?那么,对于第一次迭代,这行代码:

if(largest < fval): 

将 fval 与 largest 进行比较,后者的初始值为 None。

再说一句,注意 python2 和 python3 中的 input。两者行为不同。前者会在您键入字符串时抛出 NameError。


我建议将您的largest 和smallest 初始化为有效值,如下所示:

largest = float('-inf') 
smallest = float('inf')