1、编写程序,定义一个求阶乘的函数fact(n),并编写测试代码,要求输入整数n(n>=0)。请分别使用递归和非递归方式实现。
法①
n=eval(input('请输入整数n(n>=0):'))
def fact(n):
if n==0 or n==1:
return 1
else:
return n*fact(n-1)
s=fact(n)
print(n,"!=",s,sep='')
法②
def fact(n):
if n==0:
f=1
else:
f=1
for i in range(1,n+1):
f*=i
return f
n=int(input('请输入整数n(n>=0):'))
print(n,'!=',fact(n))
法③
n=eval(input('请输入整数n(n>=0):'))
s=1
for i in range(1,n+1):
s*=i
print(str.format("{}!={}",n,s))

2、编写程序,定义一个求Fibonacci(斐波那契)数列的函数fib(n),并编写测试代码,输出前20项(每项宽度5个字符位置,右对齐),每行输出10个。
法①
def fib(n):
fibs=[]
for i in range(n):
if i==0 or i==1:
fibs.append(1)
else:
fibs.append(fibs[i-2]+fibs[i-1])
for i in range(n):
if i==9:
print("{:>5}".format(fibs[i]))
else:
print("{:>5}".format(fibs[i]),end='')
fib(20)
法②
def fib(n):
a,b=0,1
for i in range(n):
a,b=b,a+b
if i==9:
print("{:>5}".format(a))
else:
print("{:>5}".format(a),end='')
fib(20)
法③
def fib(n):
if n <= 1:
return n
else:
return (fib(n - 1) + fib(n - 2))
m = 20
for i in range(1,m+1):
if i==10:
print("{:>5}".format(fib(i)))
else:
print("{:>5}".format(fib(i)),end='')

3、编写程序,利用可变参数定义一个求任意个数数值的最小值的函数 min_n(a, b, *c),并编写测试代码。例如,对于 “print(min_n(8, 2))”以及 “print(min_n(16, 1, 7, 4, 15))”的测试代码。
def min_n(a,b,*c):
return min(a,b,*c)
print('最小值为',min_n(8,2))
print('最小值为',min_n(16,1,7,4,15))

4、编写程序,利用元组作为函数的返回值,求序列类型中的最大值、最小值和元素个数,并编写测试代码,假设测试数据分别为s1=[9,7,8,3,2,1,55,6]、s2=[“apple”,“pear”,“melon”,“kiwi”]和s3=“TheQuickBrownFox”。提示:函数形参为序列类型,返回值是形如“(最大值, 最小值, 元素个数)”的元组。
def f01(list):
max_n=max(list)
min_n=min(list)
length=len(list)
print('list=',list)
return (max_n,min_n,length)
s1=[9,7,8,3,2,1,55,6]
s2=["apple","pear","melon","kiwi"]
s3="TheQuickBrownFox"
def print_s(list):
print("最大值= {0[0]},最小值= {0[1]},元素个数= {0[2]}".format(f01(list)))
print_s(s1)
print_s(s2)
print_s(s3)

5、利用循环结构和函数定义,并使用turtle库绘制类似斯洛克形状图案。
import turtle as t
t.speed(0)
def drawCircle():
t.pendown()
t.circle(20)
t.penup()
t.fd(40)
def drawRowCircle(n):
for i in range(n,1,-1):
for j in range(i):
drawCircle()
t.fd(-i*40-20)
t.right(90)
t.fd(40)
t.left(90)
t.fd(40)
drawCircle()
drawRowCircle(5)
t.hideturtle()
t.done()

|