python第四周学习记录,从零开始的python程序学习。

442 阅读3分钟

程序的控制结构

程序的分支结构

  • 单分支结构 根据判断条件结果而选择不同向前路径的运行方式,例如:if语句
  • 二分支结构 例如 if <条件> else <表达式>
  • 多分支结构 例如 if <条件1>: <表达式1> elif <条件2>: <表达式2> else: <表达式3>
  • 条件判断及组合

条件判断 image.png 条件组合 image.png

  • 程序的异常处理 try: <语句1> except: <语句2>
try: 
    <语句1>
except: 
    <语句2> 
else:
    <语句3> 
finally:
    <语句4>

身体质量指数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 = "偏胖", "肥胖"
print("BMI指标为:国际'{0}', 国内‘{1}’".format(who, nat))

image.png

程序的循环结构

  • 遍历循环

for <循环变量> in <遍历结构> : <语句块>

# 循环N次
for i in range(N):
    <语句块>
# 循环特定次数
for i in range(M,N,K):
    <语句块>
# 字符串遍历
for i in "python"
    print(i, end=",") # p,y,t,h,o,n,
# 列表遍历循环
for item in [123, 'ww', 456]:
    print(item, end=",") # 123,ww,456
  • 无限循环

反复执行语句块,直到条件不满足 while <条件>:<语句块>

a = 3
while a > 0:
    a = a - 1
    print(a) # 2 1 0
  • 循环控制保留字

break跳出并结束当前整个循环,执行循环后的语句

continue结束当次循环,继续执行后续次数循环

break和continue可以与for和while循环搭配使用

random库的使用

  • 基本随机数函数:seed(),random()

image.png

  • 扩展随机数函数:randint(),getrandbits(),uniform(), randrange(),choice(),shuffle()

randint(a,b)

生成一个[a,b]之间的整数 random.randint(10,100)=> 64

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]之间的随机小数 random.uniform(10,100)=> 13.096321648808136

choice(seq)

从序列seq中随机选择一个元素 random.choice([1,2,3,4,5,6,7,8,9])=> 8

shuffle(seq)

将序列seq中元素随机排列,返回打乱后的序列 s=[1,2,3,4,5,6,7,8,9];random.shuff.1e(s);print(s)=> [35,8,9,6,1,2,7,4]

圆周率的计算

圆周率的近似计算公式 image.png

pi = 0
N = 100
for k in range(N):
    pi += 1/pow(16,k)*( \
              4/(8*k+1) - 2/(8*k+4) - \
              1/(8*k+5) - 1/(8*k+6) ) 
print("圆周率值是: {}".format(pi))

蒙特卡罗方法

image.png

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))

image.png