一、实验目的
1.掌握函数的定义和调用格式和注意点;
2.理解函数的形参与实参间的区别和关系。
二、实验环境
多媒体计算机 Windows 操作系统 Python3.7
三、实验内容及要求
(一).编写程序,定义一个求阶乘的函数fact(n),并编写测试代码,要求输入整数n(n>=0)。请分别使用递归和非递归方式实现。
(二).编写程序,定义一个求Fibonacci(斐波那契)数列的函数fib(n) ,并编写测试代码,输出前20项(每项宽度5个字符,右对齐),每行输出10个。请使用递 归和非递归方式实现。
(三).编写程序,利用可变参数定义一个求任意个数数值的最小值的函数min_n(a,b,*c),并编写测试代码。例如:对于“print(min_n(8,2)”以及“ print(min_n(16,1,7,4,15)) ”的测试代码。
(四).编写函数,判断一个整数是否为素数,并编写主程序调用该函数。
(五).编写函数,接收一个字符串,分别统计大写字母、小写字母、数字、其他字符的个数,并以元组的形式返回结果。
四、实验相关步骤及代码、结果
(一).编写程序,正确运行并截图显示结果。
n = int(input('请输入一个大于零的整数:'))
#递归
def fact(n):
fact1 = 0
if n == 0:
fact1 = 1
else:
fact1 = n * fact(n - 1)
return fact1
#非递归
def nofact(m):
num = 1
if n == 0:
num = 1
else:
for i in range(m):
num = m * num
m = m-1
return num
print("递归方式:{0}!= {1}".format(n, fact(n)))
print("非递归方式:{0}!= {1}".format(n, nofact (n)))
(二) 编写程序,正确运行并截图显示结果
def fib(n):
if n == 1 or n == 2:
return 1
else:
return fib(n - 1) + fib(n - 2)
for i in range(20):
print(format(fib(i + 1), '>10.0f'), end='')
if (i + 1) % 10 == 0:
print()
(三).编写程序,正确运行并截图显示结果。
def min_n(a,b,*c):
if a<b:
n=a
else:
n=b
for i in c :
if i<n:
n=i
return n
#测试代码
print('最小值为',min_n(8,2))
print('最小值为',min_n(16,1,7,4,15))
(四).编写程序,正确运行并截图显示结果。
方法1
n = int(input("输入一个正整数n(n>=2):"))
for i in range(2,n):
if n%i==0:
print(n,"不是素数")
break
else:
print(n,"是素数")
方法2
def prime_num(num_):
for i in range(2, num_):
if num_ % i == 0:
return False
return True
if __name__ == '__main__':
num = eval(input("请输入一个整数:"))
if prime_num(num):
print("{}是素数".format(num))
else:
print("{}不是是素数".format(num))
(五).编写程序,正确运行并截图显示结果。
def stringutil():
str = "智多星736 Python第6次作业!?"
word_list = {'upper':0,'lower':0,'number':0,'other':0}
for s in str:
if s>='A' and s<='Z' :
word_list['upper']+=1
elif s>='a' and s<='z' :
word_list['lower']+=1
elif s>='0' and s<='9' :
word_list['number']+=1
else:
word_list['other']+=1
return word_list
list1 = stringutil()
print(list1)
五、总结和体会
目前学习的状态:虽然理解起来不难,但是在实战练习的时候还是会不知所措,首先是知识点的不连贯应用,记忆力不够;其次是编程思维的转换,这与我们平常生活中经常应用到的思维逻辑还是有一定的区别,需要慢慢的消化理解,并努力转过弯来。比较欣慰的是,目前学习了八周,还是能很好的坚持下来,没有特别繁忙的工作情况下,闲暇时间比较多的时候还是能主动的学习。
随意将自己作业共享给大家参考,本人不是专业的,如有错误请自行订正哈~