一.目的与要求
(一) 目的
通过函数的设计,熟练掌握函数的使用,进一步了解函数的各类参数、及参数传递过程,实现减少程序的代码量,同时提高程序执行时的效率和可维护性。
(二) 要求
1. 掌握函数的定义
2. 掌握函数的调用
3. 掌握函数的形参、实参及返回值
4. 掌握位置参数
5. 掌握序列作为参数
二.实验内容
- 编写函数,求出一个数除1和自身以外的因子。从键盘输入一个数,调用该函数输出除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
提示:
函数形参为系列类型,返回值形如“(最大值,最小值,元素个数)”
三. 实验代码清单
- 编写函数,求出一个数除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和它自身以外的所有因子。
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
18和16的最大公约数是:2
18和16的最小公倍数是:144
进程已结束,退出代码为 0
-
编写程序,利用元组作为函数的返回值,求系列类型的最大值、最小值和元素个数,并编写测试代码。假设测试数据分别为:
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
四.小结(运行结果分析)
- 求得的每一个因子,后面加 end=“,” 使因子一行显示。
- 输出结果,使用str(num)和format()函数,规范输出。
- 将返回的元组搭配str() 输出。