题目81
#求一个数的绝对值(不借助内部函数)
# 正数的绝对值就是正数,负数的绝对值为0-负数
def my_abs(num:float):
return 0-num if num < 0 else num
print(f'-112的绝对值是{my_abs(-112)}')
题目82
# 从下面两个列表中各取一个数,如果这两个数的和为10,那么就把这两个数组成一个元组,显示出来
# list1 = [3,6,1,8,1,9,2]
# list2 = [3,1,2,6,4,8,7]
# 正好练一下之前学的itertools.product
import itertools
list1 = [3,6,1,8,1,9,2]
list2 = [3,1,2,6,4,8,7]
for x,y in itertools.product(list1,list2):
if x + y == 10:
print(x,y)
#改一下
print(*[(x,y) for x,y in itertools.product(list1,list2) if x + y == 10])
题目83
# 求0~7能够组成的奇数的个数(最多是8位)
import itertools
import time
def gen_odd(length:int):
list1 = []
for i,j,k,l,m,n,o,p in itertools.product(range(8),range(8),range(8),range(8),range(8),range(8),range(8),range(8)):
str1 = str(i) + str(j)+ str(k)+ str(l)+ str(m)+ str(n)+ str(o)+ str(p)
num = int(str1)
if len(str(num)) == length and num %2:
list1.append(num)
return len(list1)
# time_start = time.time()
# print(gen_odd(3))
# time_end = time.time()
# print(time_end - time_start)
# 上面那个方法太慢了执行一次要29.035秒
# 奇数的特点: 奇数的个位一定是奇数
# 一位奇数: 1 3 5 7 共四个 奇数个数:4
# 二位奇数: 个位的选择有4个,十位的选择只有7个 奇数个数:7*4
# 三位奇数:个位选择有四个,十位选择有8个,百位选择有7个 奇数个数:7*8*4
# 四位奇数: 个位选择有四个,十位选择8个,百位选在8个,千位选择7个 奇数个数:7*8*8*4
# 以此类推:八位奇数的个数为:7*8*8*8*8*8*8*4
# 直接转换成列表的每一项的乘积
import numpy
def gen_odd_num(length:int):
"""获取指定位数的数字中奇数的个数
这些数字的每一位都在0~7这个范围
Args:
length (int): 位数
Returns:
_type_: 符合要求的指定位数的奇数的个数
"""
if length <= 0:
return 0
# 先假设每一位上的选择都是8种(0~7)
list1 = [8 for _ in range(length)]
# 对于数字而言,其最高位不可能是0,那么其最高位只有7中选择
list1[0] = 7
# 对于奇数而言,其个位只能是奇数,只有四种选择1,3,5,7
list1[-1] = 4
# 至于为什么是上述顺序:1234 转换为字符串'1234', index = 0 的在数字中就是数字1234的最高位
# 那么个位就是倒数第一位 index = -1
return numpy.prod(list1)
odd_num = [gen_odd_num(x+1) for x in range(8)]
odd_sum = sum(odd_num)
for i,value in enumerate(odd_num):
print(f'{i+1}位的奇数的个数是:{value}')
print('数字0~7组成的数字(至多8位)中奇数的个数为:',odd_sum)
题目84
# 用一行代码删除一个纯数字列表中小于10的数字
list1 = [1,12,33,11,2,33,90,9,0]
list2 = [x for x in list1 if x > 10]
print(list2)
题目85
# 身体的BMI检测
# 计算公式: BMI = 体重/(身高*身高) 体重:kg, 身高m
# BMI < 18.5 偏瘦
# 18.5 <= BMI < 24 正常
# 24 <=BMI < 28偏胖
# BMI >= 28 肥胖
def get_bmi_msg(bmi: float):
if bmi <= 18.5:
return "偏瘦"
elif bmi < 24:
return "正常"
elif bmi < 28:
return '偏胖'
else:
return '肥胖'
while True:
try:
mass = float(input('请输入体重(kg): \n'))
height = float(input('请输入身高(m): \n'))
if height > 3:
raise TypeError(f'身高的单位是米哦,你有{height}米?????')
bmi = mass/(height**2)
print(f'身高:{height}米,体重:{mass}公斤,BMI = {bmi}, 评价:{get_bmi_msg(bmi)}')
except ValueError:
print('请输入整数或小数!!!!!')
except TypeError as te:
print('请输入正确的身高,')