python期末复习——函数

素数问题的延伸:哥德巴赫猜想。任何大于或等于6的偶数,都可以表示成两个奇素数之和。输出100以内的结果。

def sushu(n):
	for i in range(2,n):
		if n%i==0:
			return False
	return True
for x in range(6,101,2):
	for a in range(3,x,2):
		if sushu(a)==True:
			b=x-a
			if sushu(b)==True:
				print("%d=%d+%d"%(x,a,b))
				break

返回一个列表中的最大素数,如不存在素数 则返回-1。
sys 是和Python解释器打交道的
如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。
为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。

import random 
#import sys 
#sys.path.append(’subfunction’)#将文件目录添加到搜索目录 
from sushu import *
def maxListSushu(list_a): 
	max=-1 
	for i in list_a: 
		if sushu(i): 
			if i>max: 
				max=i 
	return max 

list_t=[random.randint(10,100) for i in range(10)] #生成10个10到100的随机数
list_t.sort() 
print(list_t) 
print(maxListSushu(list_t)) 

银行账户计算利率(为余额1000的账户上增加5%,账户余额变为1050)

def addInterest(balance,rate):
	for i in range(len(balance)):
		balance[i]=balance[i]*(1+rate)
def main():
	amounts=[1000,2100,3500,4000]
	rate=0.05
	amounts=addInterest(amounts,rate)
	print(amount)
main()

不定长参数

def demo(a,b,c):
	print(a+b+c)
dic={1:'a',2:'b',3:'c'}
demo=(*dic)#[Out]:6
demo=(*dic.values())#[Out]:abc

调用函数/对象方法时,注意有无返回值

a_list=[1,2,9,7]
print(sorted(a_list))#[Out]:[1,2,7,0]
print(a_list.sort())#[Out]:None
print(a_list)#[Out]:[1,2,7,9]

if _name _=="main"如何理解
print(id(object))返回对象的“身份证号”

判断字符串是否回文,也就是正过来反过来 都一样。

def huiwen(s): 
	n=len(s) 
	for i in range(n//2): 
		if s[i]!=s[-1-i]: 
			return False 
		return True 
a=input("请输入一个字符串:") 
if huiwen(a): 
	print(a,"是回文") 
else: 
	print(a,"不是回文") 

返回一句话中最长的英文单词。

def maxWord(s): 
	list_w=[] 
	list_w=s.split() 
	max=0 
	for i in list_w: 
		if len(i)>max: 
		max=len(i) 
		j=i 
	return j 
a=input("请输入空格间隔单词的语句:") print(maxWord(a)) 

递归

设计函数Rectorial计算i的阶乘,用局部变 量result记录i的阶乘,采用for循环, result *=i。

def Recursion(number):
	if number==1:
		return 1
	else:
		return number*Recursion(number-1)
print(Recursion(10))

Hanoi塔问题
规则:
(1)每次只能移动一个盘片;
(2)任何时候大盘片不能压在小盘片之上;
(3)盘片只允许套在三根针中的某一根之上。
分析:
Hanoi(n,x,y,z)可以分成三个子问题:
问题1:Hanoi(n-1,x,z,y)
将X柱上的n-1个圆盘借助Z柱移动到Y柱上,此时X柱只剩下第n个圆盘;
问题2:Move(n,x,z)
将X柱上的第n个移动到Z柱
问题3:Hanoi(n-1,y,x,z)
将Y柱上的n-1个圆盘借助X柱移到Z柱上

def Hanoi(n,x,y,z):
	if n==1:
		move(x,1,z)
	else:
		Hanoi(n-1,x,z,y)
		move(x,n,z)
		Hanoi(n-1,y,x,z)
def move(x,n,y):
	print("移动%d号盘子从柱子%s到柱子%s"%(n,x,y))
#汉诺塔MOOK的代码
count=0
def hanoi(n,x,z,y):
	global count
	if n==1:
		print("{}:{}->{}".format(1,x,z))
		count += 1
	else:
		hanoi(n-1,x,y,z)
		print("{}:{}->{}".format(n,x,z))
		count  += 1
		hanoi(n-1,y,z,x)
hanoi(3,"x","z","y")
print(count)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值