本篇文章是对北京理工大学嵩天老师的《Python语言程序设计》第四章:程序的控制结构考试题及练习题的学习记录。
目录
一、考试题
1、四位玫瑰数
问题描述:
四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。
例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数。
请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行。
输入输出示例
输出仅表示格式,不表示对错。
输入 输出 示例 1 无
1111 2222 3333
参考代码:
for i in range(1000,10000):
s = str(i)
sum = eval(s[0])**4+eval(s[1])**4+eval(s[2])**4+eval(s[3])**4
if i == sum:
print(i)
2、100以内素数之和
问题描述:
描述
求100以内所有素数之和并输出。
素数指从大于1,且仅能被1和自己整除的整数。
提示:可以逐一判断100以内每个数是否为素数,然后求和。
输入格式
该题目没有输入
输入输出示例
输入 输出 示例 1 1234(这是示例,不是真实输出)
参考代码
sum = 0
for i in range(2,101):
for j in range(2,i+1):
if i%j == 0 and i != j and j != 1:
break
elif i%j ==0 and i== j:
sum += i
print(sum)
二、练习题
1、身体质量指数BMI
问题描述:
BMI :Body Mass Index 国际上常用的衡量人体肥胖和健康程度重要标准,主要用于统计分析
定义:BMI = 体重 (kg) /身高2(m2)
获取用户输入的体重和身高值,计算并给出国际和国内的 BMI 分类
要求如下:
(1) 混合计算并给出国际和国内的 BMI 分类;
(2) 使用input()获得测试用例输入时,不要增加提示字符串。
输入示例1
1.68,41
输出示例1
BMI数值为:14.53 BMI指标为:国际'偏瘦',国内'偏瘦'
输入示例2
1.72,80
输出示例2
BMI数值为:27.04 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 = "偏胖","肥胖"
else:
who,nat = "肥胖","肥胖"
print("BMI指标为:国际'{0}',国内'{1}'".format(who,nat))
2、圆周率的计算
问题描述:
求解圆周率可以采用蒙特卡罗方法,在一个正方形中撒点,根据在1/4圆内点的数量占总撒点数的比例计算圆周率值。
请以123作为随机数种子,获得用户输入的撒点数量,编写程序输出圆周率的值,保留小数点后6位。
输入示例
1024
输出示例
3.218750
参考代码:
from random import random,seed
seed(123)
DARTS = eval(input())
hits = 0.0
for i in range(DARTS):
x,y =random(),random()
dist = pow(x**2 + y **2,0.5)
if dist <= 1.0:
hits =hits +1
pi = 4*(hits/DARTS)
print("{:.6f}".format(pi))
3、整数的加减和
问题描述:
编写程序计算如下数列的值:
1-2+3-4...966
其中,所有数字为整数,从1开始递增,奇数为正,偶数为负
输出示例
111(仅表示输出样式,不是输出结果)
参考代码:
sum = 0
for i in range(1,967):
if i % 2 == 0:
sum = sum - i
else:
sum = sum+i
print(sum)
4、三位水仙花数
问题描述:
"水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。
例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。
输出仅表示格式,不表示对错。
输出示例
111,222
参考代码:
s=""
for i in range(100,1000):
a = str(i)
b = pow(int(a[0]),3) + pow(int(a[1]),3)+pow(int(a[2]),3)
if b == i:
s += "{},".format(i)
print(s[:-1])
5、用户登录的三次机会
问题描述:
给用户三次输入用户名和密码的机会,要求如下:
1)如输入第一行输入用户名为‘Kate’,第二行输入密码为‘666666’,输出‘登录成功!’,退出程序;
2)当一共有3次输入用户名或密码不正确输出“3次用户名或者密码均有误!退出程序。”。
输入示例1
Kate 666666
输出示例1
登录成功!
输入示例2
kate 123 alice 456 john 111111
输出示例2
3次用户名或者密码均有误!退出程序。
参考代码:
count=0
while count <4:
name = input()
key= input()
if name == "Kate" and key =="666666":
print("登录成功!")
break
else:
count+=1
if count == 3:
print("3次用户名或者密码均有误!退出程序。")