python算法(一)
python算法(一)
一、求数x的因子
x=100
divisors=()#初始化空的元组
for i in range(1,x):
if x%i==0:
divisors=divisors+(i,)
print divisors
二、求数x各个数位之和
sumdigits=0
for c in str(1952):
sumdigits +=int(c)
print sumdigits
print sumdigits
三、鸡兔同笼以及变形
1.有鸡兔两种,共有x个头,y只脚,求解鸡兔各有几只?
def slove(num_heads,num_legs):
for chicken_num in range(0,num_heads+1):
pig_num =num_heads-chicken_num
top_legs=pig_num*4+chicken_num*2
if top_legs==num_legs:
return [chicken_num,pig_num]
return [None,None] def barnYard():
heads=int(raw_input("Enter the number of heads: "))
legs=int (raw_input("Enter the number of legs: "))
chicken,pig=slove(heads,legs)
if chicken==None:
print "不可解"
else:
print "the number of chicken is:",chicken
print "the number of pig is:",pig barnYard()
2.有鸡兔,蜘蛛一共三种,共有x个头,y只脚,求解鸡兔,蜘蛛各有几只?
def slove1(num_heads,num_legs):
for spider_num in range(0,num_heads+1):
for chicken_num in range(0,num_heads-spider_num):
pig_num =num_heads-chicken_num-spider_num
top_legs=pig_num*4+chicken_num*2+spider_num*8
if top_legs==num_legs:
return [chicken_num,pig_num,spider_num]
return [None,None,None] def barnYard1():
heads=int(raw_input("Enter the number of heads: "))
legs=int (raw_input("Enter the number of legs: "))
chicken,pig,spider=slove1(heads,legs)
if chicken==None:
print "不可解"
else:
print "the number of chicken is:",chicken
print "the number of pig is:",pig
print "the number of spider is",spider barnYard1()
3.2中的问题或许不只有一个解答,依次输出符合要求的解答
def slove2(num_heads,num_legs):
solutionFound=False
for spider_num in range(0,num_heads+1):
for chicken_num in range(0,num_heads-spider_num):
pig_num =num_heads-chicken_num-spider_num
top_legs=pig_num*4+chicken_num*2+spider_num*8
if top_legs==num_legs:
print "the number of chicken is:", chicken_num
print "the number of pig is:", pig_num
print "the number of spider is", spider_num
solutionFound=True
if not solutionFound:
print "不可解" def barnYard2():
heads=int(raw_input("Enter the number of heads: "))
legs=int (raw_input("Enter the number of legs: "))
slove2(heads,legs) barnYard2()
四、递归判断字符串是否为回文
解法一:
def isPlalindrome(s):
if len(s)<=1:
return True
else :
return s[0]==s[-1] and isPlalindrome(s[1:-1])
解法二:
def isPlalindrome1(s,indent):
print indent, 'hisPalindromel called with', s
if 1 >= len(s):
print indent, 'About to return True from base case',s
return True
else:
ans= s[0] == s[-1] and isPlalindrome1(s[1:-1], indent + indent)
print indent, 'About to return ',ans
return ans isPlalindrome1("abccba",1)
五、斐波那契数列
def fib(x):
sum=1;
if x==1 or x==0:
return 1;
else:
return fib(x-1)+fib(x-2) print fib(4)
六、求数x平方根
1.二分法求解
def squrtRootBi(x,epsilon):
assert x>=0,"x must be positive"+str(x)
assert epsilon>0,"epsilon must be positive"+str(epsilon)
low=0
#high=x
high=max(x,1.0)
guess=(low+high)/2.0
ctr=1
while abs(guess**2-x)>epsilon and ctr<=100:
#print "low",low,"high",high,"guess",guess
if guess**2<x:
low=guess
else:
high=guess
guess=(low+high)/2.0
ctr+=1
assert ctr<=100,"not perfect square number!"
print "times of Iteration:",ctr," guess",guess
return guess def testBi():
squrtRootBi(4,0.0001)
squrtRootBi(2, 0.0001)
squrtRootBi(0.25, 0.0001) testBi()
2.牛顿迭代法求解
def squrtRootNR(x,epsilon):
assert x >= 0, "x must be positive" + str(x)
assert epsilon > 0, "epsilon must be positive" + str(epsilon)
x=float(x)
guess=x/2.0
#guess=0.001
diff=guess**2-x
ctr=1
while abs(diff)>epsilon and ctr<=100:
# print "error",diff,"guess",guess
guess=guess-diff/(2.0*guess)
diff=guess**2-x
ctr+=1
assert ctr <= 100, "not perfect square number!"
print "times of Iteration:", ctr, " guess", guess
return guess def testBi1():
squrtRootNR(4,0.0001)
squrtRootNR(2, 0.0001)
squrtRootNR(0.25, 0.0001) testBi1()
python算法(一)的更多相关文章
- 安装Python算法库
安装Python算法库 主要包括用NumPy和SciPy来处理数据,用Matplotlib来实现数据可视化.为了适应处理大规模数据的需求,python在此基础上开发了Scikit-Learn机器学习算 ...
- Python算法与数据结构--求所有子数组的和的最大值
Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室-玄魂 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个 ...
- Python算法:推导、递归和规约
Python算法:推导.递归和规约 注:本节中我给定下面三个重要词汇的中文翻译分别是:Induction(推导).Recursion(递归)和Reduction(规约) 本节主要介绍算法设计的三个核心 ...
- Python算法(含源代码下载)
关键字:Python Algorithms Python算法 Mastering Basic Algorithms in the Python Language 使用Python语言掌握基本算法 P ...
- python算法题 python123网站单元四题目
目录 一:二分法求平方根 二:Collatz猜想 三:算24(只考虑满足,不考虑把所有情况找出来) 下面向大家介绍几个python算法题. 一:二分法求平方根 1.题目要求为 2.输入输出格式为 ...
- python算法介绍:希尔排序
python作为一种新的语言,在很多功能自然要比Java要好一些,也容易让人接受,而且不管您是成年人还是少儿都可以学习这个语言,今天就为大家来分享一个python算法教程之希尔排序,现在我们就来看看吧 ...
- Java && Python 算法面试常用类以及方法总结
数据结构 逻辑结构上: 包括集合,线性结构,非线性结构. 存储结构: 顺序存储,链式存储,索引存储,散列存储. Java 常见数据结构 大专栏 Java && Python 算法面试 ...
- GitHub标星2.6万!Python算法新手入门大全
今天推荐一个Python学习的干货. 几个印度小哥,在GitHub上建了一个各种Python算法的新手入门大全,现在标星已经超过2.6万.这个项目主要包括两部分内容:一是各种算法的基本原理讲解,二是各 ...
- python算法常用技巧与内置库
python算法常用技巧与内置库 近些年随着python的越来越火,python也渐渐成为了很多程序员的喜爱.许多程序员已经开始使用python作为第一语言来刷题. 最近我在用python刷题的时候想 ...
随机推荐
- Java经典案例之-“成绩等级划分”
/** * 描述:在对话框中输入学习成绩,利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示, * 60分以下的用C表示. * 分析:可以利用三目运算符 ...
- 选择排序法-java详解案例
/** * 功能:选择排序法 * 思想:第一次从R[0]-R[N-1]中选取最小值,与R[0]交换,第二次从R[1]-R[N-1]中选取最小值,与R[1]交换, * 第三次从R[2]-R[N-1]中 ...
- 用JS的数组缓存一些东西
var cache_index = new Array(); //首页的ajax缓存 //ajax 推荐的游戏和软件 function change_tuijian(sid,div_class){ i ...
- mysql调优 参数说明
原文地址:http://wenku.baidu.com/view/49087bbafd0a79563c1e72c8.html 关键字: mysql *1, 查看 MySQL 服务器配置信息 *1. m ...
- js判断MAC地址
function white_mac_FormCheck(mac) { var temp = /[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0- ...
- Usermod:user oracle is currently logged in 家目录不能改变解决方法
[root@HE1 ~]# usermod -u 200 -g oinstall -G dba,asmdba,oper oracle[root@HE1 ~]# id oracleuid=200(ora ...
- 部署Replica Sets及查看相关配置
MongoDB 支持在多个机器中通过异步复制达到故障转移和实现冗余.多机器中同一时刻只有一台是用于写操作.正是由于这个情况,为MongoDB 提供了数据一致性的保障.担当Primary 角色的机器能把 ...
- vue原来可以这样上手
今儿与一群友讨论vue相关问题让我思量极深,1.我们是否在争对性解决问题或者说是帮助别人:2.我们是否在炫耀自己的技能.以下是被戏剧化的对白: "群友":最近按照vue官网示例学习 ...
- HDU3068(Manacher算法)
最长回文 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- ubuntu 笔记一
注:ubuntu14.04 64位 1.刚安装的ubuntu无法在终端使用su 原因:root没有默认密码,需要手动设定. 解决方法:以具有sudo权限的用户登录 给root用户设置密码:打开一个te ...