笔记
- 程序的控制结构
① 单分支结构
② 二分支结构
③ 多分支结构
④ 条件判断及组合
⑤ 程序的异常处理 - 单分支结构
if<条件>:
<语句块> - 二分支结构
if<条件>:
<语句块1>
else:
<语句块2>
紧凑形式:适用于简单表达式的二分支结构
<表达式1>if <条件> else <表达式2>
如:
guess=eval(input())
print(“猜{}了”.format(“对”if guess==99 else ”错”))
紧凑形式指适用于表达式形式,即语句中的一部分 - 多分支结构
if<条件>:
<语句块1>
elif:
<语句块2>
……
else:
<语句块n>
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次用户名或者密码均有误!退出程序。")