Programming for Everybody (Python)第五周的练习完成的过程中的一些感悟。
首先,作业是
5.2 Write a program that repeatedly prompts a user for integer numbers until the user enters 'done'. Once 'done' is entered, print out the largest and smallest of the numbers. If the user enters anything other than a valid number catch it with a try/except and put out an appropriate message and ignore the number. Enter the numbers from the book for problem 5.1 and Match the desired output as shown.要求输入的数据分别是4,5,bad data,7,done
最后完成的成果如下
largest = None
smallest = None
while True:
num = raw_input("Enter a number: ")
if num == "done" :
break
else:
try:
num = int(num)
except:
print "Invalid input"
continue
if largest is None:
largest = num
smallest = num
else:
if largest < num:
largest = num
if smallest > num:
smallst = num
print "Maximum is", largest
print "Minimum is", smallest
在完成过程中犯了几个错误
首先自然是tab和space的混用,这个以后必须避免。
然后是,在except语句后忘记添加continue重新开开始循环,导致输入的“bad data”字符串被赋值给largest。
一开始,将
if largest is None:
largest = num
smallest = num
else:
if largest < num:
largest = num
if smallest > num:
smallst = num
全部写在了try下,不知为何最后输出的最大最小数都是4.可能是try内的参数传递问题?
这次作业中的收获有
1,try/except语句可以而且应当单独检查某一个语句,try的语句块中不要放太多语句以免出现莫名其妙的错误。
2,循环语句中需要执行的操作完成后记得continue跳过不必执行的语句。
3,
if num == "done" :
break
是题中直接给出了的一段代码,直接放在循环语句后。终止循环的检查尽量放在前面可以减少多余的操作。