python中难的算法_python每日经典算法题5(基础题)+1(较难题)

一:基础算法题5道

1.阿姆斯特朗数

如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。判断用户输入的数字是否为阿姆斯特朗数。

(1)题目分析:这里要先得到该数是多少位的,然后再把每一位的数字截取出来,把各位数字的n次方之和和该数一起判断即可。

(2)算法分析:python中有len()函数可以得到一个字符串的长度,因此需要先把一个正整数转化为正整数字符串。然后从高位向低位截取(也可以反过来)。或者高效算法利用for循环切片。

从高位到低位:用正整数除了10的n次方,得到的商就是高位的数,余数就是下次循环的数。

从低位到高位:用正整数除以10,得到的余数就是低位的数,商就是下次循环的数。

for循环:用for循环依次得到每一位数。就是可迭代对象依次显示。

(3)用到的python语法:while循环,for循环,if语句,函数。

(4)博主答题代码:

从高位到低位:

defjudge(num):

mysum=0

n= len(str(num)) - 1m= n + 1firstNum=numwhile num >0:

quotient= num // (10**n)

remainder= num % (10**n)

mysum+= quotient **m

num=remainder

n-= 1

if mysum ==firstNum:print('该数是阿姆斯特朗

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值