注意:我用的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 差不多,具体可参考https://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),

break

reduceNum(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 = 0

Sn = [] #用来存储数字个数

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

输入你想要相加的数字个数 n = :5

输入数字 a = :6

6

66

666

6666

66666

74070

用到的函数:

1.python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。

23.题目:一个数如果恰好等于它的因子之和,这个数就称为”完数”。例如6=1+2+3.编程找出1000以内的所有完数。

程序分析:请参照程序Python 练习实例14。只要在后面加上判断条件就可以了,注意,要在输出因子的时候加上1,注意看题,1是任何数的因子,所以不能漏掉

# -*- coding: UTF-8 -*-

import random

import time

while True:

x = random.randint(1,1000)

#因为后面求质数要修改x的值,所以先把x保存起来备用

s = x

factors = [1] #1是任何数的因子

while x > 1:

#上限取值可以是x,即因子也可以是x本身,这个大家都懂得

for v in range(2,x + 1):

if x % v == 0:

factors.append(v)

#找到了当前的最小因子,重置继续找下一符合条件的最小因子

x /= v

#由于break是跳出当前的循环,所以这里的break是跳出for循环

break

print "所有因子是 %s,所以"%(factors),

if sum(factors) == s: #这里就是判断函数了

print "%d 是完数"%(s)

else:

print "%d 不是完数"%(s)

time.sleep(1) #为防止程序卡顿,我睡一秒输出一个

输出:

所有因子是 [1, 2, 2, 2, 31],所以: 248 不是完数

所有因子是 [1, 2, 2, 2, 73],所以: 584 不是完数

所有因子是 [1, 823],所以: 823 不是完数

所有因子是 [1, 281],所以: 281 不是完数

所有因子是 [1, 467],所以: 467 不是完数

所有因子是 [1, 2, 359],所以: 718 不是完数

所有因子是 [1, 2, 7, 47],所以: 658 不是完数

所有因子是 [1, 751],所以: 751 不是完数

所有因子是 [1, 3, 71],所以: 213 不是完数

24.题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

程序分析:用数学的角度很好理解是吧,但是这里要把字母转化成ASCII码来做哦!

# -*- coding: UTF-8 -*-

for i in range(ord('x'),ord('z') + 1):

for j in range(ord('x'),ord('z') + 1):

if i != j:

for k in range(ord('x'),ord('z') + 1):

if (i != k) and (j != k):

if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):

print 'order is a -- %s b -- %s c--%s' % (chr(i),chr(j),chr(k))

25.题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

程序分析:请抓住分子与分母的变化规律。可以看出,分母是斐波那契数列哦~

方法一:第一个分数的分子分母之和是第二个数的分子。

# -*- coding: UTF-8 -*-

a = 2.0 #第一个数的分母

b = 1.0 #第一个数的分子

s = 0 #前20项的和

for n in range(1,21):

s += a / b

t = a #先把分子保存到t

a = a + b #分子是前一个分数的分子分母之和

b = t #分子分母交换

print s

方法二:

# -*- coding: UTF-8 -*-

a = 2.0

b = 1.0

s = 0.0

for n in range(1,21):

s += a / b

b,a = a , a + b

print s

方法三:

# -*- coding: UTF-8 -*-

a = 2.0

b = 1.0

l = []

for n in range(1,21):

b,a = a,a + b

l.append(a / b)

print reduce(lambda x,y: x + y,l)

26.题目:求1+2!+3!+…+20!的和。

程序分析:此程序只是把累加变成了累乘。想一想阶乘怎么算的?n!=n×(n-1)×(n-2)×(n-3)×…×1,所以只需要一个遍历,把n以内的数字相乘后,再加起来即可。

方法一:

# -*- coding: UTF-8 -*-

n = 0

s = 0

t = 1

for n in range(1,21):

t *= n #这里t就是20以内每个数的阶乘

s += t #把每次得到的阶乘值加到s

print '1! + 2! + 3! + ... + 20! = %d' % s

方法三:这里用定义函数的方法,使用sum函数。

# -*- coding: UTF-8 -*-

s = 0

l = range(1,21)

def op(x):

r = 1

for i in range(1,x + 1):

r *= i

return r

s = sum(map(op,l))

print '1! + 2! + 3! + ... + 20! = %d' % s

输出:1! + 2! + 3! + ... + 20! = 2561327494111820313

这里补充一下map()函数的用法:

很简单,第一个参数接收一个函数名,第二个参数接收一个可迭代对象

# -*- coding: UTF-8 -*-

ls = [1,2,3]

rs = map(str, ls)

#打印结果 ['1', '2', '3']

lt = [1, 2, 3, 4, 5, 6]

def add(num):

return num + 1

rs = map(add, lt)

print rs

#打印结果[2,3,4,5,6,7]

27.题目:利用递归方法求5!。

程序分析:递归公式:fn=fn_1*4!递归的方法就是自己调用自己。

# -*- coding: UTF-8 -*-

def jiecheng(n):

if n <= 1:

return 1

else:

return n * jiecheng(n-1)

print jiecheng(5)

输出:120

28.题目:将所输入的5个字符,以相反顺序打印出来。

方法一:利用递归函数调用方式

# -*- coding: UTF-8 -*-

def output(s,l):

if l==0:

return

print (s[l-1])

output(s,l-1)

s = raw_input('Input a string:')

l = len(s)

output(s,l)

输出:Input a string:1234

4

3

2

1

方法二:用reverse函数

# -*- coding: UTF-8 -*-

a = [1,2,3,4,5]

a.reverse()

print a

或者:

# -*- coding: UTF-8 -*-

s = list(raw_input('Input a string:'))

s.reverse()

print s

28.题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。

方法一:这个很简单吧,就是每次循环都加2,循环4次就好了啊!

# -*- coding: UTF-8 -*-

x = 10

for i in range(1,5):

x = x + 2

print x

方法二:定义函数的方法

# -*- coding: UTF-8 -*-

def age(n):

if n == 1:

x = 10

else:

x = age(n - 1) + 2

return x

print age(5)

29.题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

程序分析:将这个五位数从中间分开,根据对称性去切,然后比较是否相等。

# -*- coding: UTF-8 -*-

a = int(raw_input("请输入一个数字:"))

x = str(a)

flag = True

for i in range(len(x)/2):

if x[i] != x[-i - 1]: #如果不相等,直接跳出循环,直接判断不是回文数

flag = False

break

if flag:

print "%d 是一个回文数!" % a

else:

print "%d 不是一个回文数!" % a

输出:

请输入一个数字:

15651

15651 是一个回文数!

30.题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。。哇,这个题应该好简单啊~~先看一下星期的单词都有哪些“Monday Tuesday Wednesday Thursday Friday Saturday Sunday”,所有只有“T”和“S”要判断第二个字母。

# -*- coding: UTF-8 -*-

letter = raw_input("please input:")

#while letter != 'Y':

if letter == 'S':

print ('please input second letter:')

letter = raw_input("please input:")

if letter == 'a':

print ('Saturday')

elif letter == 'u':

print ('Sunday')

else:

print ('data error')

elif letter == 'F':

print ('Friday')

elif letter == 'M':

print ('Monday')

elif letter == 'T':

print ('please input second letter')

letter = raw_input("please input:")

if letter == 'u':

print ('Tuesday')

elif letter == 'h':

print ('Thursday')

else:

print ('data error')

elif letter == 'W':

print ('Wednesday')

else:

print ('data error')

这篇文章就介绍到这了,后面脚本之家小编将继续为大家分享更多的关于python的一些实例资料。

python简单编程例子-python简单实例训练(21~30)相关推荐

  1. python对象编程例子-Python 面向对象编程实例讲解

    如果你没有任何以往的经验与面向对象(OO)编程,你可能想咨询或至少某种教程的入门课程,所以,你必须掌握的基本概念. 然而,这里是小推出的面向对象编程(OOP)给你带来更好的学习速度: OOP的术语概述 ...

  2. python对象编程例子-python面向对象编程:python类和实例讲解

    东尧爱分享 这是东尧每天一篇文章的第51天 东尧写文章的目标:分享东尧的经验和思考,帮你获取物质和精神两方面幸福. 1 什么是对象 在python里面,一切皆为对象.也就是说python里的所有数据都 ...

  3. python简单程序实例-python简单实例训练(21~30)

    注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦!如果因为版本问题评论的,不做回复哦!! 21.题目:将一个正整数分解质因数.例如:输入90,打印出 ...

  4. python简单编程例子-Python入门 —— 用pycharm写一个简单的小程序3

    环境:Win10操作系统:Python3.7:Pycharm 题目来源:PTA 编程实例1:日期格式化 世界上不同国家有不同的写日期的习惯.比如美国人习惯写成"月-日-年",而中国 ...

  5. python简单编程例子-Python实现的简单万年历例子分享

    #!/usr/bin/env python2 #-*- coding:utf-8 -*- __author__ = 'jalright' """ 使用python实现万年 ...

  6. python对象编程例子-python编程进阶之类和对象用法实例分析

    本文实例讲述了python类和对象用法.分享给大家供大家参考,具体如下: 前面我们都是用python面向过程编程,现在来用python创建类和对象,面向对象编程.类和对象是面向对象编程的两个主要方面. ...

  7. python对象编程例子-python 面向对象编程 类和实例

    class Student(object): #class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的.通常,如果没有合适的继承 ...

  8. python对象编程例子-python面向对象编程练习

    练习题 1.面向对象三大特性,各有什么用处,说说你的理解. 面向对象的三大特性: 1.继承:解决代码的复用性问题 2.封装:对数据属性严格控制,隔离复杂度 3.多态性:增加程序的灵活性与可扩展性 2. ...

  9. python对象编程例子-python(十二)面向对象编程、类

    面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一个功 ...

最新文章

  1. docker启动nginx代理不上_Docker nginx 反向代理设置
  2. Java17-day08【File(创建和删除文件、判断和获取功能、遍历目录)、IO流(字节流写数据、异常处理、字节流读数据、复制文本文件、复制图片)】
  3. python创建提示用户输入查询条件_python流程控制练习
  4. split出现得问题
  5. CCF201409-4 最优配餐(100分)
  6. mysql常见字符串处理函数
  7. Windows 7 Ultimate Download (Windows 7 旗舰版下载)
  8. 教程,word导出为pdf既要书签和链接又要高清图片
  9. 粒子群算法(PSO)光伏发电 MPPT实现多峰值寻优,阴影遮蔽光伏发电算法 使用s函数编写粒子群算法,阴影遮蔽,实现多峰值寻优
  10. Simscape/Fluids液压元件 -- Pressure Reducing Valve(减压阀)
  11. 绩效管理系统(Performance Management System)
  12. VMware Workstation 14中文破解版下载(附密钥)(笔记)
  13. 腾讯云跨云迁移工具案例实践:阿里云迁移到腾讯云
  14. shiro学习详解(开篇)
  15. Web 面试之 HTTP和浏览器
  16. Python之第六章 内置容器 --- 字典(映射)
  17. jpg转bmp(使用libjpeg)
  18. https://www.cloudmidi.net/ableton-live-11-suite-v11-0-macos.html
  19. Linux系统连接校园网指南(JLU)
  20. POJ - 1723 Soldiers 士兵站队 排序+中位数

热门文章

  1. 关于git fetch 和git pull 的区别
  2. 【摘录】Ics4.0如何去除系统的状态栏
  3. Visual C++ Attribute Programming
  4. 【hard】146. LRU Cache
  5. asp.net的get和post请求
  6. Oracle For 循环,字符串拼接,查找
  7. 实验吧-catalyst-system
  8. 2017暑假 第四周 学习总结(复习)
  9. 文件写入(支持var_dump)
  10. 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)...