实验8 函数(一)
实验目的:
1、 理解自定义函数过程的定义和调用方法; 2、 掌握自定义函数的定义和调用方法; 3、 理解函数中的参数的作用;
实验内容:
1、 编写一函数Fabonacci(n),其中参数n代表第n 次的迭代。
While循环 def fib(n): 或者用for循环 if n==1 or n==2: def fib(n): return 1 a=1 a=1 b=1 b=1 c=0 i=2 if n==1 or n==2: while True: return 1 c=a+b else: a=b for i in range(3,n+1): b=c c=a+b i+=1 #第i次迭代,也就是第i个数 a=b if i==n: b=c return c return c break def main(): def main(): n=input(\ n=input(\ print fib(n) print fib(n) main() main()
2、 编写一函数Prime(n),对于已知正整数n,判断该数是否为素数,如果是素数,返回True,否则返回
False。
def prime(n): Or: if n<2: def prime(n): return False if n<2: a=0 return False for i in range(1,n+1): if n==2: if n%i==0: return True a+=1 for i in range(2,n): if a>2: if n%i==0: return False return False else: return True return True def main(): def main(): n=input(\ n=input(\ print prime(n) print prime(n) main() main()
3、利用上题中判断素数的函数,编写程序找出1~100之间的所有孪生素数(若两个素数之差为2,则这两个素数就是一对孪生素数)。例如:3和5、5和7、11和13等都是孪生素数。
【提示】如果n和n+2都是素数,那就是孪生素数。 def prime(n): if n<2:
return False if n==2:
return True for i in range(2,n): if n%i==0:
return False return True
def main():
for i in range(1,100):
if prime(i) and prime(i+2): print i,i+2
main()
4、 求润年Leapyear(n),输入年份,统计该年是不是润年,如果是润年,返回True;否则返回False。 def leapyear(n):
if n%4==0 and n0!=0 or n@0==0: return True else:
return False def main():
n=input(\ print leapyear(n) main()
5、 计算三角形面积函数,TriangleArea(a,b,c),其中a,b,c为分别为三角形三条边,面积公式为
1area?c(c?x)(c?y)(c?z)c?(x?y?z)。
2def TriangleArea(a,b,c): C=0.5*(a+b+c)
area=(C*(C-a)*(C-b)*(C-c))**0.5 return area
def main():
a,b,c=input(\ print TriangleArea(a,b,c) main()
可编辑word,供参考版!
6、 思考题.豆堆
堆里有16颗豆子,有两个玩家(假设一个玩家是电脑)。每个玩家都可以从堆中的16颗豆子中取出1颗,2颗或者3颗豆子。每个玩家在每回合中必须从堆中取出一定数目的豆子。玩家轮流取出豆子,取到最后一颗豆子的玩家是输家。 思路:
写一个人取豆子的函数
帮电脑设计一个算法,实现取豆子的函数
在主程序中进行输流调用,谁最后拿到1粒豆子谁就输
import random def pp(n):
while True:
num=input(\ if num<1 or num>3:
print \ continue return n-num
def cp(n): if n==4: return 3 if n==3: return 2 if n==2: return 1 else:
i=random.randint(1,3) return i
def main(): total=16 while True:
ppickrest=pp(total) cpick=cp(ppickrest) total=ppickrest-cpick if ppickrest==1:
print \ break
print \ if total==1:
print \ break
main()
【此文档部分内容来源于网络,如有侵权请告知删除,本文档可自行编辑和修
可编辑word,供参考版!