Python 学习之路2

这是我在大学上机实验的作业

实验一

    将一个正整数分解质因数。例如:输入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
View Code
 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
View Code
 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('请输入正整数')
View Code

感觉写的还是不够简洁,请见谅

转载于:https://www.cnblogs.com/Crimeng/p/7903372.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值