python语言程序设计笔记_[第4周]程序的控制-Python语言程序设计(学习笔记)

文章原创,最近更新:2018-04-15

1.课程导学

2.程序的分支结构

3.实例5:身体质量指数BMI

4.程序的循环结构

5.模块3:random库的使用

6.实例6:圆周率的计算

7.所有的代码汇总

原链接语言程序设计北京理工大学

1.课程导学

1.1前课复习

1.2本课概要

1.3练习与作业

2.程序的分支结构

2.1单元开篇

2.2单分支结构

类似如果则..如果天气好,出去玩,否则不出去.

2.3二分支结构

2.4多分支结构

这一段代码逻辑有关系,需要进一步的修改.

2.5条件判断及组合

guess =eval(input())

if guess >99 or guess<99:

print("猜错了")

else:

print("猜对了")

2.6程序的异常处理

2.7单元小结

3.实例5:身体质量指数BMI

3.1″身体质量指数BMI”问题分析

3.2″身体质量指数BMI”实例讲解

height,weight =eval(input("请输入身高(米)和体重(公斤)[用逗号隔开]:"))

bmi=weight/pow(height,2)

print("BMI的数值为:{:.2f}".format(bmi))

who=""

if bmi <18.5:

who="偏瘦"

elif 18.5<=bmi<25:

who="正常"

elif 25<=bmi<30:

who="偏胖"

elif bmi>=30:

who="肥胖"

print("IBM为国外指标为{0}".format(who))

height,weight =eval(input("请输入身高(米)和体重(公斤)[用逗号隔开]:"))

bmi=weight/pow(height,2)

print("BMI的数值为:{:.2f}".format(bmi))

nat=""

if bmi <18.5:

nat="偏瘦"

elif 18.5<=bmi<24:

nat="正常"

elif 24<=bmi<28:

nat="偏胖"

elif bmi>=28:

nat="肥胖"

print("IBM为国内指标为{0}".format(nat))

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="偏胖","肥胖"

elif bmi>=28:

nat="肥胖"

print("IBM为国外为{0},国内为:{1}".format(who,nat))

3.2″身体质量指数BMI”举一反三

4.程序的循环结构

4.1单元开篇

4.2遍历循环

4.3无限循环

4.4循环控制保留字

4.5循环的高级用法

4.6单元小结

5.模块3:random库的使用

5.1random库的基本介绍

5.2基本随机数函数

程序需要设计再现随机需求就需要设定种子,如果不需要就不用设定种子.只要设置了种子,产生的随机数也相同.

5.3扩展随机数函数

用3-4个随机函数,则随机函数的能力就增加了.

6.实例6:圆周率的计算

6.1″圆周率的计算”问题分析

6.2″圆周率的计算”实例讲解

为了使代码读起来有可读性,可以在代码后面增加 \ 进行换行,换行后的代码与一行的代码是一样的.

pi=0

N=100

for k in range(N):

pi=pi+1/pow(16,k)*( \

4/(8*k+1)-2/(8*k+4)- \

1/(8*k+5)-1/(8*k+6))

print("圆周率值是:{}".format(pi))

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

运行结果是:

DARTS=1000*1000意思是抛洒点的数量.

hits=0.0是目前在圆点内的数量.

start=perf_counter()是当前系统的一个值

撒点可以变成遍历循环的点.

x,y变成随机数的两个坐标值.random是返回(0,1)的数值.因为使用的是单位正方形,所以可以使用随机数.

用x,y表示随机的抛点,如何知道这个抛点在圆内呢?使用这个点到圆心的距离是否等于1.即(x2+y2)开方是否小于等于1,如果小于1则在圆内.如果(x2+y2)开方大于1,则不在圆内.

如果在圆内,则用hits=hits+1,hits是在圆内出现点的数量.

6.3″圆周率的计算”举一反三

7.所有的代码汇总

版本1

#CalBMIv1.py

height, weight = eval(input("请输入身高(米)和体重(公斤)[逗号隔开]: "))

bmi = weight / pow(height, 2)

print("BMI 数值为:{:.2f}".format(bmi))

who = ""

if bmi < 18.5:

who = "偏瘦"

elif 18.5 <= bmi < 25:

who = "正常"

elif 25 <= bmi < 30:

who = "偏胖"

else:

who = "肥胖"

print("BMI 指标为:国际'{0}'".format(who))

版本2

#CalBMIv2.py

height, weight = eval(input("请输入身高(米)和体重\(公斤)[逗号隔开]: "))

bmi = weight / pow(height, 2)

print("BMI 数值为:{:.2f}".format(bmi))

nat = ""

if bmi < 18.5:

nat = "偏瘦"

elif 18.5 <= bmi < 24:

nat = "正常"

elif 24 <= bmi < 28:

nat = "偏胖"

else:

nat = "肥胖"

print("BMI 指标为:国内'{0}'".format(nat))

版本3

#CalBMIv3.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))

公式法

#CalPiV1.py

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

蒙特卡罗方法

#CalPiV2.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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值