python 学习第四天
程序的分值结构
1.单分值结构
if <条件>:
<语句块>
2.二分支结构
if <条件>:
<语句块>
else:
<语句块>
二分支结构的紧凑形式:
<表达式1> if <条件> else <表达式2>
注意这里是表达式而不是语句块
  3.多分支结构
if <条件>:
<语句块>
elif<条件>:
<语句块>
...
else:
<语句块>
4.条件判断及其组合
    
    
5.程序的异常处理
try:
<语句块1>
except <异常类型1>: #可以不写异常类型,异常类型python预定义,不需要用单引号或者双引号
<语句块2>
else: #else可选
<语句块3> #当语句块2不执行的时候执行语句块3
finally: #finally可选
<语句块4> #语句块4一定执行
当语句块1中的代码执行时发生异常类型1时则执行语句块2中的内容,否则不执行语句块2
身体质量指数BMI BMI=体重(kg)/身高^2(m^2)
#CalBMI.py
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}',国内'{1}'".format(who,nat))
程序的循环结构
1.遍历循环,关键字for
for <循环变量> in <遍历结构>: #从遍历结构中逐一提取元素,放到循环变量里
<语句块>
常见应用:
计数循环for i in range(n): #执行n次 range(n)函数产生一个数字序列,从0~n-1
in range(m,n,k) #从m开始,n结束(不包含n),步长为k
in range(m,n) #步长默认为1
字符遍历for c in s: #s是一个字符串,遍历字符串中的每个字符c
对列表遍历for item in ls: #ls是一个列表
对文件进行遍历 for line in fi: #fi是文件标识符,遍历其每行,产生循环
2.无限循环,关键字while
while <条件>: #反复执行语句块,直到条件不满足,对于无限循环,可以用crtl+c退出执行
<语句块>
3.循环控制保留字break,continue,都可以和while,for搭配使用
4.循环的高级用法
for <循环变量> in <遍历结构>:
<语句块1>
else: #当循环没有被break语句退出时,执行语句块2
<语句块2>
while <条件>:
<语句块>
else: #当循环没有被break语句退出时,执行语句块2
<语句块2>
random函数库
random函数库与turtle库、time库一样都是标准库
1.基本随机函数: seed() random()
seed(s) 初始化给定的随机数种子为s,默认为当前系统时间,相同种子可以得到相同随机数,可用于复现程序运行的结果
random() 生成一个0~1之间的随机小数
2.扩展随机函数: randint() getrandbits() uniform() randrange() choice() shuffle()
randint(a,b) 随机生成一个[a,b]之间的整数
randrange(m,n[,k]) 生成一个[m,n)之间以k为步长的随机整数
getrandbits(k) 生成一个k比特长的随机整数
uniform(a,b) 生成一个[a,b]之间的一个随机小数,小数精度16位
choice(seq) 从序列seq中随机选择一个元素
shuffle(seq) 将序列seq中元素随机打乱,返回打乱后的序列
圆周率的计算
蒙特卡罗方法
#CalPi.py
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))

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号