程序控制练习内容
1、身体质量指数BMI:
BMI的定义如下:
BMI=体重(kg) /身高 2 (m2)
问题需求:
—输入:给定体重和身高
—输入:BMI指标分类信息(国际和国内)
#CalBMI.py
height, weight = eval(input("请输入身高(m)和体重(kg),并用逗号隔开:"))
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的指标为国际:{},国内:{}".format(WHO, NAT))
2、圆周率的计算
公式法:
#CalPi_1.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))
蒙特卡罗方法:
如图:对其进行随机撒点,当随机点足够多时,在圆内部点与所有点的比值即是圆面积与正方形的比值
#CalPi_2.py
from random import random
from time import perf_counter
DARTS = 5000*1000 # 五百万个点
hits = 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)
time = perf_counter() - start
print("圆周率值是:{}".format(pi))
print("运行时间是:{:.4f}s".format(time))
3、三位水仙花数
问题描述
“水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。
例如:ABC是一个"3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。
daffodils=[]
for i in range(1,10):
for j in range(10):
for k in range(10):
if i*i*i + j*j*j + k*k*k == 100*i + 10*j + k:
daffodils.append(100*i + 10*j + k)
for i in daffodils:
if i == daffodils[-1]:
print(i)
else:
print(i, end = ',')
4、100以内素数之和
问题描述
求100以内所有素数之和并输出。
素数指从大于1,且仅能被1和自己整除的整数。
def is_prime(n):
for i in range(2,n):
if n%i == 0:
return False
return True
sum = 0
for i in range(2,100):
if is_prime(i):
sum += i
print(sum)