if not True: print(“语句块2”) else: print(“语句块1”) 6. 异常处理 基本方法: ① try: <语句块1> except: <语句块2> try: <语句块1> Except<异常类型>: <语句块2> ② 示例: try: num=eval(input(“请输入一个整数:”)) print(num2) except: print(“输入不是整数”) 或: try: num=eval(input(“请输入一个整数:”)) print(num2) except NameError: print(“输入不是整数”) 标注异常类型后,仅响应该异常,异常类型名字等同于变量。 异常处理的高级使用 try: <语句块1> except: <语句块2> else: <语句块3> finally: <语句块4> -finally对应语句块4一定执行 -else对应语句块3在不发生异常时执行 7. 实例 BMI:对身体质量的刻画 -BMI:Body Mass Index 国际上常用的衡量人体肥胖和健康程度的重要标准,主要用于统计分析 定义:BMI=体重(kg)/身高2(m2) 8. 程序的循环结构 -遍历循环 -无限循环 -循环控制保留字 -循环的高级用法 9. 遍历循环 遍历某个结构形成的循环运行方式 for<循环变量>in<遍历结构> <语句块> -从遍历结构中逐一提取元素,放在循环变量中 计数循环(N次) for i in range(N): <语句块> -遍历由range()函数产生的数字序列,产生循环 for i in range(M,N,K): <语句块> -从M到N之前的一个整数,K为步长 字符串遍历循环 for c in s: <语句块> 如: for c in “Python123”: print(c,end=”,”) 列表遍历循环 for item in ls <语句块> -ls是一个列表,遍历其每一个元素,产生循环 如: for item in [123,‘魔法少女’,456]: print(item,end=",") 输出: 123,魔法少女,456, 文件遍历循环 for line in fi: <语句块> -fi是一个文件标识符,遍历其每行,产生循环
无限循环 由条件控制的循环运行方式 while<条件>: <语句块> 如果写了一个循环永不结束,则通过Ctrl+C了结他循环控制保留字 break和continue -break跳出并结束当前整个循环,执行循环后的语句 -continue结束当次循环,继续执行后续次序循环 -break和continue可以与for和while循环搭配使用循环的高级用法 循环的扩展: 循环与else for<循环变量>in<遍历结构> <语句块1> else: <语句块2> 以及: while<条件>: <语句块1> else: <语句块2> -当循环没有被break语句退出时,执行else语句块 -else语句块作为正常完成循环的奖励random库概述 random库是使用随机数的python标准库 -伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素 -使用random库:import random random库包括两类函数,常用8个 -基本随机数函数:seed(), random() -扩展随机数函数:randint(), getrandbits(), uniform(), randrange(), choice(),shuffle() 不给种子时,默认的种子是当前调用第一次random函数所对应的系统时间 设定种子可以再现随机过程 14.圆周率的计算 蒙特卡洛法撒点单项选择题 点击选项选择正确答案,每题有且仅有一个正确答案
1 for var in ___: print(var) 哪个选项不符合上述程序空白处的语法要求? A range(0,10) B {1;2;3;4;5} C (1,2,3) D “Hello” 正确答案 B for … in … 中 in 的后面需要是一个迭代类型(组合类型),{1;2;3;4;5}不是Python的有效数据类型。 2 for i in range(0,2): print(i)
哪个选项是以上程序的输出结果? A 1 B 1 2 C 0 1 2 D 0 1 正确答案 D range(0, 2)输出两个值:0和1。 3 k=10000 while k>1: print(k) k=k/2 哪个选项给出了上述程序的输出次数? A 1000 B 15 C 13 D 14 正确答案 D 请跟随程序计算或在IDLE中运行程序获得结果。 4 哪个选项是程序的三种基本结构? A 顺序结构,循环结构,分支结构 B 顺序结构,跳转结构,循环结构 C 过程结构,对象结构,函数结构 D 过程结构,循环结构,分支结构 正确答案 A 无对象结构、跳转结构、过程结构等说法。 5 哪个选项关于循环结构的描述是错误的? A 循环是一种程序的基本控制结构 B 死循环无法退出,没有任何作用 C 条件循环和遍历循环结构都是基本的循环结构 D 循环是程序根据条件判断结果向后反复执行的一种运行方式 正确答案 B 死循环能够用于测试性能,形式上的死循环可以用break来退出,例如:
x = 10 while True: x = x - 1 if x == 1: break 死循环是有其作用的。 6 关于Python语句P=-P,哪个选项的描述是正确的? A P的绝对值 B 给P赋值为它的负数 C P=0 D P等于它的负数 正确答案 B Python中的=是赋值符号,==是判断相等性的等于符号。 7 哪个选项是用来判断当前Python语句在分支结构中? A 大括号 B 冒号 C 引号 D 缩进 正确答案 D 缩进表达层次关系。 8 哪个选项是下面代码的执行结果?
for s in “PYTHON”: if s==“T”: continue print(s,end="")
A PYTHON B PY C TT D PYHON 正确答案 D continue结束当次循环,但不跳出当前循环。 9 哪个选项是random库中用于生成随机小数的函数? A random() B randint() C getrandbits() D randrange() 正确答案 A randint()、getrandbits()、randrange()都产生随机整数,random()产生0到1之间的随机小数。 10 关于try-except,哪个选项的描述是错误的? A 用于对程序的异常进行捕捉和处理 B 表达了一种分支结构的特点 C 使用了异常处理,程序将不会再出错 D NameError是一种异常类型 正确答案 C 使用了异常处理,程序可能运行不会出错,但逻辑上可能出错。程序错误是一个大概念,不仅指代码运行错误,更代表功能逻辑错误。
编程题: 四位玫瑰数 描述 四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。 例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数。 请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行。
#第一题四位玫瑰数 N=10 for i in range(1,N): for j in range(0,N): for k in range(0,N): for s in range(0,N): t=i*1000+j*100+k*10+s if i**4+j**4+k**4+s**4==t and 1000<=t<=9999: print(t)100以内素数之和 描述 求100以内所有素数之和并输出。 素数指从大于1,且仅能被1和自己整除的整数。 提示:可以逐一判断100以内每个数是否为素数,然后求和。
#第二题100以内素数之和 s=0 for i in range(2,100): for k in range(2,i): if i%k==0: break else: s=s+i print(s)实例5:身体质量指数BMI 描述 这是"实例"题,与课上讲解实例相同,请作答检验学习效果。 BMI :Body Mass Index 国际上常用的衡量人体肥胖和健康程度重要标准,主要用于统计分析 定义:BMI = 体重 (kg) /身高2(m2) 获取用户输入的体重和身高值,计算并给出国际和国内的 BMI 分类 要求如下: (1) 混合计算并给出国际和国内的 BMI 分类; (2) 使用input()获得测试用例输入时,不要增加提示字符串。
#练习第一题 height,weight=eval(input()) bmi=weight/pow(height,2) print("BMI数值为:{:.2f}".format(bmi)) international,nation="","" if bmi<18.5: international,nation="偏瘦","偏瘦" elif 18.5<=bmi<24: international,nation="正常","正常" elif 24<=bmi<25: international,nation="正常","偏胖" elif 25<=bmi<28: international,nation="偏胖","偏胖" elif 28<=bmi<30: international,nation="偏胖","肥胖" else: international,nation="肥胖" print("BMI指标为:国际'{0}',国内'{1}'".format(international,nation))'''实例6:圆周率的计算 描述 这是"实例"题,与课上讲解实例相同,请作答检验学习效果。 求解圆周率可以采用蒙特卡罗方法,在一个正方形中撒点,根据在1/4圆内点的数量占总撒点数的比例计算圆周率值。 请以123作为随机数种子,获得用户输入的撒点数量,编写程序输出圆周率的值,保留小数点后6位。
#练习第二题 import random random.seed(123) DARTS=eval(input()) hits=0.0 for i in range(1,DARTS+1): x,y=random.random(),random.random() dist=pow(x**2+y**2,0.5) if dist<1.0: hits=hits+1 pi=4*(hits/DARTS) print("{:.6f}".format(pi))整数的加减和 描述 编写程序计算如下数列的值: 1-2+3-4…966 其中,所有数字为整数,从1开始递增,奇数为正,偶数为负
#练习第三题 t=0 for i in range(1,967): s=-1 t=t-(s**i)*i print(t)三位水仙花数 描述 “水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。 例如:ABC是一个"3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。 请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。
#练习第四题 N=10 s="" for i in range(1,N): for j in range(0,N): for k in range(0,N): t=i*100+j*10+k if i**3+j**3+k**3==t and 100<=t<=999: s=s+"{},".format(t) print(s[:-1])用户登录的三次机会 描述 给用户三次输入用户名和密码的机会,要求如下: 1)如输入第一行输入用户名为‘Kate’,第二行输入密码为‘666666’,输出‘登录成功!’,退出程序; 2)当一共有3次输入用户名或密码不正确输出“3次用户名或者密码均有误!退出程序。”。
#练习第五题 for i in range(3): username=input() password=input() if username=="Kate" and password=="666666": print("登录成功!") break else: print("3次用户名或者密码均有误!退出程序。")