1、实例5:身体质量指数BMI
BMI :Body Mass Index 国际上常用的衡量人体肥胖和健康程度重要标准,主要用于统计分析
定义:BMI = 体重 (kg) /身高2(m2)
获取用户输入的体重和身高值,计算并给出国际和国内的 BMI 分类
要求如下:
(1) 混合计算并给出国际和国内的 BMI 分类;
(2) 使用input()获得测试用例输入时,不要增加提示字符串。
height,weight = eval(input())
BMI = weight/pow(height,2)
inter,nat="",""
if BMI < 18.5:
inter,nat = "偏瘦","偏瘦"
elif 18.5 <= BMI < 24:
inter,nat = "正常","正常"
elif 24 <= BMI <25:
inter,nat = "正常","偏胖"
elif 25 <= BMI <28:
inter,nat = "偏胖","偏胖"
elif 28 <= BMI <30:
inter,nat = "偏胖","肥胖"
else: #else就不用再加条件了
inter,nat = "肥胖","肥胖"
print("BMI数值为:{:.2f}\nBMI指标为:国际'{}',国内'{}'".format(BMI,inter,nat))
#可以一把输出,加个\n就可以啦
2、圆周率的计算
求解圆周率可以采用蒙特卡罗方法,在一个正方形中撒点,根据在1/4圆内点的数量占总撒点数的比例计算圆周率值。
请以123作为随机数种子,获得用户输入的撒点数量,编写程序输出圆周率的值,保留小数点后6位。
from random import seed,random #look可以这样
DARTS = eval(input()) #一定要记得eval
seed(123)
hits = 0.0
for i in range(1,DARTS+1):
x,y = random(),random()
if pow(x**2+y**2,0.5) <= 1:
hits += 1
pi = 4 * (hits/DARTS)
print("{:.6f}".format(pi))
3、整数的加减和
编写程序计算如下数列的值:
1-2+3-4...966
其中,所有数字为整数,从1开始递增,奇数为正,偶数为负
s = 0
i = 1
for i in range(1,967):
if i%2 == 0:
s -= i
else:
s += i
print(s)
4、三位水仙花数
"水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。
例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。
一种方法是逗号加在字符串后面,最后一个逗号不打印
s = ""
for i in range(100,1000):
t = str(i)
if pow(eval(t[0]),3)+pow(eval(t[1]),3)+pow(eval(t[2]),3) == i:
#记得eval记得eval记得eval
s += t+',' #还可以写成s += "{},".format(i)
print(s[:-1]) #利用s[:-1],不输出最后一个逗号
另一种方法是用列表,分隔符.join(列表)
s = [] #定义一个空列表
for i in range(100,1000):
t = str(i)
if pow(eval(t[0]),3)+pow(eval(t[1]),3)+pow(eval(t[2]),3) == i:
s.append(t) #向列表添加元素的方法
print(",".join(s))
贴一个还没学到的列表的操作,(应该没关系把,不能贴我就删掉)python中列表的定义和操作_不忘初心不将就的博客-优快云博客_列表的定义https://blog.youkuaiyun.com/weixin_42589922/article/details/80883726
5、用户登录的三次机会
给用户三次输入用户名和密码的机会,要求如下:
1)如输入第一行输入用户名为‘Kate’,第二行输入密码为‘666666’,输出‘登录成功!’,退出程序;
2)当一共有3次输入用户名或密码不正确输出“3次用户名或者密码均有误!退出程序。”
for i in range(0,3):
name = input()
password = input()
if name=='Kate' and password=='666666':
print("登录成功!")
break
else:
i += 1
if i==3:
print("3次用户名或者密码均有误!退出程序。")
6、100以内素数之和
求100以内所有素数之和并输出。
素数指从大于1,且仅能被1和自己整除的整数。
提示:可以逐一判断100以内每个数是否为素数,然后求和。
一种方法:定义函数
#定义一个是素数的函数
def is_prime(n):
for i in range(2,n): #for循环是自动遍历,不用自己+1的
#既非1也非n的除
if n%i == 0:
return False
return True #注意这个return对齐的地方
sum = 0
for i in range(2,100):
if is_prime(i):
sum += i
print(sum)
另一种方法,两个循环加break
s=0
for i in range(2,100):
for j in range(2,i):
if(i%j==0):
break
else:
s+=i
print(s)
个人更喜欢第二种。