我正在研究Python中的一个经典的学生问题,在一系列条目中找到最大值和最小值。通常,我希望通过将所有有效的用户条目放在一个列表中来实现这一点,但是我们应该对来自用户的每个条目逐一进行评估。(在这个类中,我们在列表之前覆盖循环。)
因为我没有使用列表,所以我不敢声明变量为None,然后计算“largest is None or largest所以问题是:这是try/except的有效用法吗?它是不是比评论的替代品少了蟒蛇?(当然,最蟒蛇式的方法是min([列表]),但我在这里。)

#smallest = None

while True:
    num = raw_input("Enter a number: ")
    if num == "done" : break
    try:
        num = int(num)
    except:
        print 'Invalid input'
        continue

    try:
        smallest = min(num,smallest)
    except NameError:
        smallest = num

#    if num < smallest or smallest is None:
#        smallest = num

print "Minimum is", smallest

最佳答案

不,这是try/except的一个非常可笑的用法。
预先声明并将其定义为None,然后将其更新为

smallest = num if smallest is None else min(num, smallest)

或者,可以将其初始化为smallest = [],然后将其更新为
smallest = [min(smallest + [num])]

然后用
print("Minimum is {}".format(smallest) if smallest else "No numbers!")

10-08 09:36