标签:返回 str return 退出 display turn color 整数 span
这是我在大学上机实验的作业
实验一
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
首先,先谈下我的设计思路:
设计思路:
1. 先需判断输入的number是不是一个数字(用isdigit())如果是一个数字则继续往下走,否则重新输入
2. 写一个分解质因数的函数并返回出其结果成一个列表
3. 并用for循环用字符串加的方式得到题目需要的格式
4. 最后打印出结果
下面是我的代码,第一次学,有点长。
1 相关代码: 2 def judeg_prime(num): 3 ‘‘‘判断Num是不是一个质数,若是返回True,否则返回False‘‘‘ 4 number_list=[] 5 for i in range(1,num+1): 6 if num%i==0: 7 number_list.append(i) 8 if len(number_list)==2 and number_list[0]==1 and number_list[1]==num: 9 return True 10 else: 11 return False
1 def a(num): 2 ‘‘‘把num (非零及非质数的数)分解质因数,并返回一个列表‘‘‘ 3 for i in range(2,num+1): 4 if num%i==0: 5 prime_list.append(i) 6 num=int(num/i) 7 if judeg_prime(num): 8 #如果num是一个质数, 添加在列表后并返回 9 prime_list.append(num) 10 break 11 else:#否则继续执行函数a() 12 return a(num) 13 return prime_list
1 ‘‘‘程序的执行端口‘‘‘ 2 while True: 3 prime_list = [] 4 print(‘-----分解质因数-----‘) 5 number=input(‘输入一个正整数(输入0退出程序):‘) 6 if number.isdigit():#判断number是否为数字,以免报错 7 number=int(number) 8 if number==0: 9 print(‘程序结束!‘) 10 break 11 elif number == 1:#如果输入的是1 12 print(‘1=1*1‘) 13 elif judeg_prime(number):#如果输入的是一个质数 14 print(‘%s=1*%s‘ % (number, number)) 15 else: 16 count=1 17 prime_list = a(number) 18 #把number分解质因数并返回给prime_list 19 primer=str(number)+‘=‘ 20 for i in prime_list: 21 if count==len(prime_list): 22 primer=primer+str(i) 23 else: 24 primer = primer + str(i) + ‘*‘ 25 count+=1 26 print(primer)#打印结果 27 else: 28 print(‘请输入正整数‘)
感觉写的还是不够简洁,请见谅
标签:返回 str return 退出 display turn color 整数 span
原文地址:http://www.cnblogs.com/Crimeng/p/7903372.html