PR4E第五周作业

来源:互联网 发布:java人工智能 编辑:程序博客网 时间:2024/06/05 17:13

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 = Nonesmallest = Nonewhile True:num = raw_input("Enter a number: ")if num == "done" : breakelse:try:num = int(num)except:print "Invalid input"continueif largest is None:largest = numsmallest = numelse:if largest < num:largest = numif smallest > num:smallst = numprint "Maximum is", largestprint "Minimum is", smallest
在完成过程中犯了几个错误
首先自然是tab和space的混用,这个以后必须避免。
然后是,在except语句后忘记添加continue重新开开始循环,导致输入的“bad data”字符串被赋值给largest。
一开始,将
if largest is None:largest = numsmallest = numelse:if largest < num:largest = numif smallest > num:smallst = num
全部写在了try下,不知为何最后输出的最大最小数都是4.可能是try内的参数传递问题?


这次作业中的收获有
1,try/except语句可以而且应当单独检查某一个语句,try的语句块中不要放太多语句以免出现莫名其妙的错误。
2,循环语句中需要执行的操作完成后记得continue跳过不必执行的语句。
3,
if num == "done" : break
是题中直接给出了的一段代码,直接放在循环语句后。终止循环的检查尽量放在前面可以减少多余的操作。
0 0
原创粉丝点击