Python 为什么这个简单程序的值超过10

Python 为什么这个简单程序的值超过10,python,python-3.x,Python,Python 3.x,我正在学习python,遇到了这样一个问题:不断地获取用户输入,验证它是否为整数,并在最后打印出最大值和最小值。将低于10的值与高于10的值混合时,程序将中断。请帮我理解为什么 largest = None smallest = None while True: num = input("Enter a number: ") if num == "done" : break try : int(num) if smalle

我正在学习python,遇到了这样一个问题:不断地获取用户输入,验证它是否为整数,并在最后打印出最大值和最小值。将低于10的值与高于10的值混合时,程序将中断。请帮我理解为什么

largest = None
smallest = None
while True:
    num = input("Enter a number: ")
    if num == "done" : 
        break
    try :
        int(num)
        if smallest is None and largest is None :
            smallest = largest = num
        if num < smallest :
            smallest = num
            print(num)
        if num > largest :
            largest = num
            print(num)
    except :
        print("Invalid input")
print("Maximum is ", largest)
print("Minimum is ", smallest)
max=None
最小=无
尽管如此:
num=输入(“输入一个数字:”)
如果num==“完成”:
打破
尝试:
整数(num)
如果最小值为无,最大值为无:
最小=最大=数量
如果num<最小值:
最小=num
打印(个)
如果num>最大值:
最大=num
打印(个)
除:
打印(“无效输入”)
打印(“最大值为”,最大值)
打印(“最小值为”,最小值)

尽管您检查
num
是否可以强制转换为
int
(使用try-except块),但您从未实际将强制转换的结果存储在变量中
int(num)
仅返回
num
的整数值;要将
num
实际更改为
int
,请使用
num=int(num)
。程序中发生的情况是比较字符串而不是数字,从而导致意外行为。

10的上下、
num
最小值或
最大值是多少?(第一个想法是:你应该使用
elif
而不是
if
)。你可能应该将
int(num)
的返回值存储在某个地方,并使用它进行更有意义的比较。