我正在研究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!")