目录
1.程序的分支结构
1.1 单分支结构 (if)
guess=eval(input())
if guess== 99:
print("猜对了")
1.2 二分支结构
guess=eval(input())
if guess== 99:
print("猜对了")
else:
print("猜错了")
紧凑形式:适用于简单表达式的二分支结构(仅支持表达式形式,不支持赋值语句)
<表达式1> if <条件> else <表达式2>
guess=eval(input())
print("猜{}了".format("对" if guess==99 else "错"))
1.3 多分支结构
score=eval(input())
if score >= 90:
grade = "A"
elif score>=80:
grade = "B"
elif score>=70:
grade = "C"
elif score>=60:
grade = "D"
print("输入成绩属于级别{}".format(grade))
1.4 条件判断及组合
操作符
条件组合
1.5 实例:身体质量指数 BMI
height,weight=eval(input("请输入身高(米)和体重\(公斤)[逗号隔开]:"))
bmi=weight/pow(height,2)
print("BMI 数值为:{:.2f}".format(bmi))
who,nat="",""
if bmi<18.5:
who,nat="偏瘦","偏瘦"
elif 18.5 <= bmi<24:
who,nat="正常","正常"
elif 24<=bmi <25:
who,nat="正常","偏胖"
elif 25<=bmi<28:
who,nat="偏胖","偏胖"
elif 28<=bmi<30:
who,nat="偏胖","肥胖"
else:
who,nat="肥胖","肥胖"
print("BMI 指标为:国际'{0}',国内‘{0}’".format(who,nat))
2. 程序的循环结构
2.1 遍历循环
for <循环变量> in <遍历结构>:
<语句块>
每次循环,所获得元素放入循环变量,并执行依次语句块
应用:
计数循环 for i in rang(N): | for i in range(M,N,K): 从M开始到N之前的整数,以K为步长 for i in range(1,6): i取值1,2,3,4,5 for i in range(1,6,2): i取值1,3,5 |
字符串遍历循环 for c in s: s是字符串,遍历每个字符串 | |
列表遍历循环 for item in ls: ls为列表 | |
文件遍历循环 for line in fi: fi是一个文件标识符,遍历其每行,产生循环 |
2.2 无限循环
由条件控制的循环方式:反复执行语句块,直到条件不满足时结束
while <条件>:
<语句块>
2.3 循环控制保留字
break 跳出并结束当前整个循环,执行循环后的语句
continue 结束当次循环,继续执行后续次数循环
二者都可以 for 和 while 搭配使用
break 仅跳出当前最内层循环,示例:
2.4 循环的扩展
for <循环变量> in <遍历结构>: <语句块1> else: <语句块2> | while <条件>: <语句块1> else: <语句块2> |
当循环没有被break语句退出时,执行else语句块,else语句作为“正常”完成循环的奖励;
可以由此判断程序是否被break结束
3. Random库
随机数的python标准库,生成随机数 import random
随机种子确定了随机序列的产生,下次程序运行,只要种子相同,产生的随机数也相同
基本随机数函数:
seed(a=None) | 初始化给定的随机数种子,默认为当前的系统时间 random.seed(10) #产生种子10对应的序列 |
random() | 生成一个[0.0,1.0)之间的随机小数 random.random() |
扩展随机数函数:
randint(a,b) | 生成一个[a,b]之间的整数 random.randint(10,100) |
randrange(m,n,[,k]) | 生成一个[m,n)之间以k为步长的随机整数 random.randrange(10,100,10)结果为 随机数80 |
getrandbits(k) | 生成一个k比特长的随机整数 random.getrandbits(16) 结果为 37885 |
uniform(a,b) | 生成一个[a,b]之间的随机小数(小数点后16位) random.uniform(10,100) |
choice(seq) | 从序列seq中随机选择一个元素 random.choice([1,2,3,4,5,6,7,8,9]) |
shuffle(seq) | 将序列seq中元素随机排列,返回打乱后的序列 s=[1,2,3,4,5,6]; random.shuffle(s);print(s) 输出打乱后的s |
在python中需要将几行代码放在一行,需要用分号来分隔
4. 蒙特卡罗法计算圆周率
#蒙特卡罗法计算圆周率
from random import random
from time import perf_counter
DARTS=1000*1000
hits=0.0
start=perf_counter()
for i in range(1,DARTS+1):
x,y=random(),random()
dist=pow(x**2+y**2,0.5)
if dist<=1.0:
hits=hits+1
pi=4*(hits/DARTS)
print("圆周率的值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start))