Python函数

一.目的与要求

(一) 目的

通过函数的设计,熟练掌握函数的使用,进一步了解函数的各类参数、及参数传递过程,实现减少程序的代码量,同时提高程序执行时的效率和可维护性。

(二) 要求

1. 掌握函数的定义
2. 掌握函数的调用
3. 掌握函数的形参、实参及返回值
4. 掌握位置参数
5. 掌握序列作为参数

二.实验内容

  1. 编写函数,求出一个数除1和自身以外的因子。从键盘输入一个数,调用该函数输出除1和它自身以外的所有因子。
  2. 编写两个函数,分别求两个整数的最大公约数和最小公倍数,在主函数调用这两个函数,并输出结果。两个整数由键盘输入。
  3. 编写程序,利用元组作为函数的返回值,求系列类型的最大值、最小值和元素个数,并编写测试代码。假设测试数据分别为:
    S1=[9,7,8,3,2,1,55,6]
    S2=[“apple”,“pear”,“melon”,“kiwi”]
    S3=”TheQuickBrownFox”。
    程序运行效果如下所示:
    List =[9,7,8,3,2,1,55,6]
    最大值=55,最小值=1,元素个数=8
    List =[“apple”,“pear”,“melon”,“kiwi”]
    最大值= pear,最小值= apple,元素个数=4
    List =“TheQuickBrownFox”
    最大值=x,最小值=B,元素个数=16
    提示:
    函数形参为系列类型,返回值形如“(最大值,最小值,元素个数)”

三. 实验代码清单

  1. 编写函数,求出一个数除1和自身以外的因子。从键盘输入一个数,调用该函数输出除1和它自身以外的所有因子。
def export(num):
    print(str(num) + " 除了1和自身以外的因子有:")
    for i in range(2,num):
        if(num%i==0):
            print(str(i),end=",")
    return 0

if __name__ == "__main__":
    num = int(input("请输入一个整数:"))
    export(num)

运行结果:
 F:\pythonProject\venv\Scripts\python.exe F:/pythonProject/main.py
请输入一个整数:18
18 除了1和自身以外的因子有:
2,3,6,9,
进程已结束,退出代码为 0
  1. 编写函数,求出一个数除1和自身以外的因子。从键盘输入一个数,调用该函数输出除1和它自身以外的所有因子。
import math

def gcdnumber(num1,num2):
    number = math.gcd(num1,num2) # 使用math中的gcd 函数,可以直接判断两个数的最大公约数
    return number

def leastnumber(num1,num2):

    if num1>num2 :
        bigger = num1
        smaller = num2
    else :
        bigger = num2
        smaller = num1
    i = 0
    flag = bigger
    # 思路:先算到较大数的倍数 bigger = flag*i ,然后判断这个数,是否可以被smaller 整除,如果可以,就说明是最小公倍数
    while bigger % smaller != 0: 
        i=i+1
        bigger = flag * i
    return bigger

if __name__ == "__main__":
    num1 = int(input("请输入第一个整数:"))
    num2 = int(input("请输入第二个整数:"))
    test1 = gcdnumber(num1,num2) #求最大公约数
    test2 = leastnumber(num1,num2) #求最小公倍数
    print("{}和{}的最大公约数是:{}".format(num1,num2,test1)) #使用format 函数 格式化输出
    print("{}和{}的最小公倍数是:{}".format(num1,num2,test2))
    #print(str(num1) + "和" +str(num2) +"的最大公约数是:" + str(test1))
    #print(str(num1) + "和" + str(num2) + "的最小公倍数是:" + str(test2))  // 使用str()格式化输出 

运行结果:
 F:\pythonProject\venv\Scripts\python.exe F:/pythonProject/main.py
请输入第一个整数:18
请输入第二个整数:16
1816的最大公约数是:2
1816的最小公倍数是:144

进程已结束,退出代码为 0
  1. 编写程序,利用元组作为函数的返回值,求系列类型的最大值、最小值和元素个数,并编写测试代码。假设测试数据分别为:
    S1=[9,7,8,3,2,1,55,6]
    S2=[“apple”,“pear”,“melon”,“kiwi”]
    S3=”TheQuickBrownFox”。
    程序运行效果如下所示:

    List =[9,7,8,3,2,1,55,6]
    最大值=55,最小值=1,元素个数=8
    List =[“apple”,“pear”,“melon”,“kiwi”]
    最大值= pear,最小值= apple,元素个数=4
    List =“TheQuickBrownFox”
    最大值=x,最小值=B,元素个数=16
    

    提示:
    函数形参为系列类型,返回值形如“(最大值,最小值,元素个数)”

def demo(S):
    S_max = max(S) #引用字符串方法
    S_min = min(S)
    S_len = len(S)
    return S_max,S_min,S_len # 元组作为返回值

def judge(S):
    if len(S) == 1:
        # 当只传入一个字符串时
        string = S[0]
        S_max, S_min, S_len = demo(string)
        return S_max, S_min,S_len
    else:
        S_max, S_min,S_len = demo(S)
        return S_max, S_min,S_len

if __name__ == "__main__":
	flag = 3
	while flag :
    	liststr = input("请输入测试代码(逗号分隔):").split(",")
    	if liststr[0].isdigit(): //判断输入的是否为数字,需要把列表元素转换成int类型
            liststr = [int(liststr[i]) for i in range(len(liststr))]
    	flag = flag - 1
    	tuplenum = judge(liststr)
    	print("最大值=" + str(tuplenum[0]) + ",最小值=" + str(tuplenum[1]) + ",元素个数=" + str(tuplenum[2]))

运行结果:
F:\pythonProject\venv\Scripts\python.exe F:/pythonProject/main.py
请输入测试代码(逗号分隔)9,7,8,3,2,1,55,6
最大值=55,最小值=1,元素个数=8
请输入测试代码(逗号分隔):“apple”,“pear”,“melon”,“kiwi”
最大值=“pear”,最小值=“apple”,元素个数=4
请输入测试代码(逗号分隔):TheQuickBrownFox
最大值=x,最小值=B,元素个数=16

进程已结束,退出代码为 0

四.小结(运行结果分析)

  1. 求得的每一个因子,后面加 end=“,” 使因子一行显示。
  2. 输出结果,使用str(num)和format()函数,规范输出。
  3. 将返回的元组搭配str() 输出。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值