首页 > 编程 > Python > 正文

python简单实例训练(21~30)

2020-02-16 10:44:31
字体:
来源:转载
供稿:网友

注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦!如果因为版本问题评论的,不做回复哦!!

21.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n!=k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

注意:要知道 format 这个函数,其实就是格式化,与 print 差不多,具体可参考//www.jb51.net/article/63672.htm

方法一:只用循环

# -*- coding: UTF-8 -*-while True: n = input("请输入一个数:") #这里有逗号是为了保证它输出后不自动换行,下同 print '{} = '.format(n),  #判断你输入的是不是正确格式 if not isinstance(n, int) or n <= 0 :  print '请输入一个正确的数字 !'  #如果你是输入的是 1,那只输出 1 if n in [1] :   print '{}'.format(n)  while n >= 2:  for i in range(2,n + 1):   if n % i == 0:    n /= i  #n 等于 n/i    if n == 1:      print i ,    else :  # index 一定是素数     print '{} *'.format(i),    break print  #换行咯

方法二:定义函数

# -*- coding: UTF-8 -*-def reduceNum(n): print '{} = '.format(n), if not isinstance(n, int) or n <= 0 :  print '请输入一个正确的数字 !'  exit(0) elif n in [1] :  print '{}'.format(n) while n not in [1] : # 循环保证递归  for i in range(2, n + 1) :   if n % i == 0:    n /= i # n 等于 n/i    if n == 1:      print i     else : # i 一定是素数     print '{} *'.format(i),    breakreduceNum(100)reduceNum(9)

输出:
100 = 2 * 2 * 5 * 5
9 = 3 * 3

方法三:用列表 append 函数,这里只是用列表的形式输出了所有x的因子

# -*- coding: UTF-8 -*-while True: x = input("pls input a number:") ret = [] while x > 1:  for v in range(2,x + 1):   if x % v == 0:    ret.append(v)    x /= v    break print ret 输出:  pls input a number:9  [3, 3]

说明:其实两种方法大同小异,没什么区别。

22.题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

程序分析:关键是计算出每一项

# -*- coding: UTF-8 -*-Tn = 0Sn = [] #用来存储数字个数n = int(raw_input('输入你想要相加的数字个数 n = :')) #控制你要相加的次数a = int(raw_input('输入数字 a = :')) #真正要加的数字for count in range(n): Tn = Tn + a  a = a * 10 Sn.append(Tn)#每加一个数就放在Sn列表中 print Tn #lambda这个函数比较强大,具体用法可以看下资料Sn = reduce(lambda x,y : x + y,Sn)print Sn            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表