一、实验目的

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)

、总结和体会

目前学习的状态:虽然理解起来不难,但是在实战练习的时候还是会不知所措,首先是知识点的不连贯应用,记忆力不够;其次是编程思维的转换,这与我们平常生活中经常应用到的思维逻辑还是有一定的区别,需要慢慢的消化理解,并努力转过弯来。比较欣慰的是,目前学习了八周,还是能很好的坚持下来,没有特别繁忙的工作情况下,闲暇时间比较多的时候还是能主动的学习。

随意将自己作业共享给大家参考,本人不是专业的,如有错误请自行订正哈~