通过一些练习题分析函数和模块的用途:
- 编写函数 evalQuadratic(a, b, c, x),返回二项式 a⋅x2+b⋅x+c 的值。
- 简单定义函数,返回,调用赋值。
-
def evalQuadratic(a,b,c,x): return a*x**2+b*x+c a=evalQuadratic(1,2,3,4) print(a)
- 编写判断素数的函数 isprime(x)。在主调函数中输出 1-100 之间的素数。
- 这道题的关键是分析什么是素数,通过余数的方式,控制输出为零即可。
-
def isprime(): M=[] for i in range(2,101): for j in range(2,i): if i % j == 0: break else: print(i) isprime()
分别用迭代(gcdIter(a, b))和递归(gcdRecur(a, b))方法编写函数求两个正整数的最大公约数。
如:
gcd(2, 12)=2
gcd(6, 12)=6
gcd(9, 12)=3
gcd(17, 12)=1
- 迭代和递归是python 环境中非常有用的两种方式:
- 迭代是通过循环过程的while实现对变量的控制:
-
def gcdIter(x,y): r=1 while r!=0: r=x%y x=y y=r print(x) gcdIter(2,12) gcdIter(6,12) gcdIter(9,12) gcdIter(17,12)
递归是返回的函数值再次调用函数,这个算法针对汉诺塔问题十分有效:
-
def gcdRecur(a, b): if a>b: a, b=b, a if b%a==0: return a else: return(a,b%a) print(gcdRecur(2,12)) print(gcdRecur(6,12)) print(gcdRecur(9,12)) print(gcdRecur(17,12))
创建一个模块 calculator.py,完成任意两个数的加(add)、减(sub)、乘(mult)、 除(div)运算;再编写一个主调程序 exec.py,导入该模块,分别调用其中的函 数,完成如下操作:
-
模块的创建和调用是作为一种基础的范例:
-
编写函数:calculator.py
-
def add(x,y): return x+y def sub (x,y): return x-y def div(x,y): return x/y def mult(x,y): return x*y
然后再调用:
-
from calculator import * print(add(25,36)) print(sub(86,68)) print(mult(50,60)) print(div(99,25))