欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python基础复习案例4:阿姆斯特朗数以及python代码缩进管理

程序员文章站 2022-06-01 11:34:35
...

昨天完成了阿姆斯特朗数的设计,但是进行问答循环时候发生代码缩进问题。今天终于解决了。分享给大家参考。

复习的python基础知识参考如下:

  1. for,while 循环
  2. 数值类型转换
  3. 如何获取数字的位数(巧用len()函数)
  4. 如何获取某个数特定位置的数字
  5. range函数的+/- 步进利用
  6. 加法和减法赋值运算符
  7. 基本输入输出
  8. if 条件控制
  9. exit()程序退出使用
  10. 最重要一点:python 缩进管

其中第十条,体会深刻。大家可以参考下我的百度提问。

点击打开链接

另外建议小白学习另一篇博文。

点击打开链接

回到正题,代码分享如下:

# 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153。

# 1000以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。

def Armstrongnumber(num):
	for i in range(1,num+1):
		n=len(str(i))  # 获取该数字的位数
		sum=0
		flag=i		
		if i<10:
			sum=i**1
		if sum==i:
			print(i)
		else:
			for j in range(n,0,-1):  # 从最高位开始进行循环获取每位数的n次方
				div=10**(j-1) # 获取对应位数的分位值(即10,100,1000)
				k=flag//div # 获取对应位的数字
				m=k**n  # 获取对应位的数字的n次方
				sum+=m  # 获取对应位的数字的n次方
				flag-=k*div
			if sum==i:
				print(i)

while True :
	while True:# 判断输入是否数字,并处理异常
		n=input('请输入您需要显示的阿姆斯特朗数的目标范围:1~  ? \n')
		try:  
			f = float(n)
			break
		except ValueError: 
			print("您输入的不是正整数!")
			
	if int(n)<0:
		print("您输入的不是正整数!")
		continue
	Armstrongnumber(int(n))	
	while True:
		Q=input('请问主人是否重新显示目标范围内的阿姆斯特朗数:Y / N ? \n')
		if Q=='Y' or Q=='y':
			break
		elif Q=='N' or Q=='n':
			exit()
		else:
			print('您输入的不是 Y/N !')
Python基础复习案例4:阿姆斯特朗数以及python代码缩进管理