图片来源于turtle库的练习
如果在语块1执行的过程中出现了异常,程序立即从1中跳出,去执行2,然后继续往下执行。如果1执行正常结束,则程序继续往下执行,不会执行2
常见的异常有:
不合适的转换,例如 int(“abc”) int(“23.34”) float(“abc”)输入已经结束(已经没有输入数据了)后,还执行input()除法除数为0整数和字符串相加列表下标越界(比如3个元素的列表用到了下标4)range(1, 6, 2)中,1,6是遍历的范围(1~5,不包含6),2是步长
扩展:
range(0)是空的,是遍历不出值的;range(2, 2)这样的也是空的;fi是文件名称。
实例:
输入三个整数,求它们的最小公倍数 解法:枚举,一个个试
s = input().split() #这样写,输入的三个数就会放到列表中 x,y,z = int(s[0], int(s[1]), int(s[2])) n = 1 while True: if n % x == 0 and n % y == 0 and n % z == 0: print(n) break n = n + 1或
s = input().split() #这样写,输入的三个数就会放到列表中 x,y,z = int(s[0], int(s[1]), int(s[2])) n = 1 while not(n % x == 0 and n % y == 0 and n % z == 0): n += 1 print(n)优化:
s = input().split() #这样写,输入的三个数就会放到列表中 x,y,z = int(s[0], int(s[1]), int(s[2])) n = m = max(x, y, z) #挑出三个数中最大的一个数,从最大的开始试 while True: if n % x == 0 and n % y == 0 and n % z == 0: print(n) break n += m扩展:
用while语句和异常处理进行输入
输入若干行,每行若干整数,求所有整数的最大值
s = input() lst = s.split() maxV = int(lst[0]) try: while True: lst = s.split() for x in lst: maxV = max(maxV, int(x)) s = input() #如果输入数据没了还执行input,会产生异常 except: pass #pass语句啥都不干 print(maxV)注意:Windows中Ctrl+Z,Pycharm中Ctrl+D,告诉程序没有输入了
扩展:
break跳出for的循环时,for的else语句也不会执行;break跳出while的循环时,while的else语句也不会执行;【1】慕课网,北京理工大学,嵩天教授,《Python语言程序设计》声明:笔记中截图、部分代码来自该课程课件,非博主原创 【2】Python123:在线编程网站 【3】菜鸟教程 【4】慕课网,北大,郭玮老师,《实用Python程序设计》