手机淘宝客网站怎么做的,微信网站建设 知乎,携手并进合作共赢i,做seo网站营销推广4. python练习题4-水仙花数
【目录】 文章目录 4. python练习题4-水仙花数1. 目标任务2. 水仙花数的特点3. 如何判断一个数是否是水仙花数#xff1f;4. 打印3位水仙花数5. 判断一个数是不是水仙花数6. 列表推导式6. 列表推导式判断一个数是不是水仙花数 【正文】 1. 目标任务…4. python练习题4-水仙花数
【目录】 文章目录 4. python练习题4-水仙花数1. 目标任务2. 水仙花数的特点3. 如何判断一个数是否是水仙花数4. 打印3位水仙花数5. 判断一个数是不是水仙花数6. 列表推导式6. 列表推导式判断一个数是不是水仙花数 【正文】 1. 目标任务
水仙花数是三位数其各位数字立方和等于该数本身请打印所有水仙花数。
2. 水仙花数的特点
水仙花数是指一个n位数n≥3它的每个位上的数字的n次幂之和等于它本身。
【三位水仙花数的特点】
一个三位数范围从100到999。各个位上的数字的立方和等于该数本身。
【示例】
153是一个水仙花数。 因为1^3 5^3 3^3 153。
3. 如何判断一个数是否是水仙花数
将给定的数拆分为各个位上的数字。计算每个位上数字的n次幂。将每个位上数字的n次幂相加。判断相加的结果是否等于原始数。
4. 打印3位水仙花数
【代码示例】
# 使用range函数生成一个从100到999的整数序列
# 并将每个数字赋值给变量num
# range函数含前不含后因此不包含1000
for num in range(100, 1000):# 通过整除运算符//将num除以100得到的商即为百位数字。hundreds num // 100# 先将num除以10得到商再对10取余得到十位数字tens (num // 10) % 10# 通过对10取余运算得到个位数字ones num % 10# 将百位、十位和个位数字的立方和与num进行比较# 如果相等则说明该数是水仙花数if num hundreds**3 tens**3 ones**3:print(%d是水仙花数。% num) 【终端输出】
153是水仙花数。
370是水仙花数。
371是水仙花数。
407是水仙花数。5. 判断一个数是不是水仙花数
# def 语句定义一个名为sxh的函数
# 该函数接收一个参数num
# 自定义函数以英文冒号结尾
def sxh(num):# str函数将数字num转换为字符串类型以便逐位处理 num_str str(num)# 使用len()函数获取字符串num_str的长度并赋值给变量nn len(num_str)# 初始化变量sum为0用于存储各个位上数字的n次方之和 sum 0# 遍历字符串num_str中的每个字符将每个字符赋值给变量ifor i in num_str:# 将变量i转换为整数类型并计算其n次方然后加到变量sum上# 备注sum sum int(digit) ** nsum int(i) ** n# 判断变量sum是否等于参数numif sum num:# 如果条件成立返回Truereturn Trueelse:# 如果条件不成立返回Falsereturn False# 测试示例
num 153
# 调用函数sxh()判断给定的数字是否为水仙花数
if sxh(num):# 如果是水仙花数则打印出该数字是水仙花数print(%d是水仙花数。% num)
else:# 如果不是水仙花数则打印出该数字不是水仙花数print(%d不是水仙花数。% num) 【终端输出】
153是水仙花数。6. 列表推导式
【语法】
[表达式 for 迭代变量 in 可迭代对象 if条件表达式]【代码示例】
list4 [ i for i in range(1,6)]
print(list4)【终端输出】
[1, 2, 3, 4, 5]list4 [i for i in range(1, 6)] 是一个列表推导式。 作用是创建一个包含从1到5的整数的列表。 具体来说它使用了一个for循环来遍历1到5 。 并将每个遍历到的元素添加到列表中。 最终list4 的值为 [1, 2, 3, 4, 5]。
【代码示例】
list5 [ i**2 for i in range(1,6)]
print(list5)【终端输出】
[1, 4, 9, 16, 25]计算输出0~5序列的所有数的平方。
【代码示例】
# 定义字符串变量num_str其值为123
num_str 123
# len函数计算字符串num_str的长度
# 此时n的值为3因为字符串num_str包含3个字符
n len(num_str)
# 使用列表推导式来计算每个字符的立方和
# 表达式为int(i) ** n
# int(i)将每个字符转换为整数类型然后求它的n次方
# for 循环遍历num_strnum_str是字符串类型
# 因此i也是字符串类型用int 转换为整数才能参与计算
# n3,1的立方是12的立方是83的立方是27
# sum()函数将所有立方值相加并将结果赋值给变量s。
s sum(int(i) ** n for i in num_str)
print(s)【终端输出】
36列表推导式可参考如下链接
90. Python列表推导式
6. 列表推导式判断一个数是不是水仙花数
# def 语句定义一个名为sxh的函数
# 该函数接受一个参数num
# 自定义函数以英文冒号结尾
def sxh(num):# str函数将数字num转换为字符串类型以便逐位处理num_str str(num)# len函数获取数字的位数n len(num_str)# 列表推导式计算每个位上数字的n次幂之和sum_of_powers sum(int(digit) ** n for digit in num_str)# 判断结果是否等于原始数if sum_of_powers num:return Trueelse:return False# 测试示例
num 153
# 调用函数sxh()判断给定的数字是否为水仙花数
if sxh(num):# 如果是水仙花数则打印出该数字是水仙花数print(%d是水仙花数。% num)
else:# 如果不是水仙花数则打印出该数字不是水仙花数print(%d不是水仙花数。% num) 【终端输出】
153是水仙花数。