素数问题的延伸:哥德巴赫猜想。任何大于或等于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)