测试题:
0. 你有听说过DRY吗?
emmm,DYP是程序员工人的指导原则:Don't Repeat Youself。
武装自己的思想,拿起函数,不要再去重复拷贝一段代码。
1. 都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢?
使用函数的优点:
0)可以降低代码量(调用一行即可,粘贴复制将增加大量代码)
1)可以降低维护成本(若修改只需要修改函数内部)
2)更容易阅读
2. 函数可以有多个参数吗?
任意多个。只不过参数越多,出现错误的几率就越多。
3. 创建函数使用什么关键字,要注意什么?
关键字“def”,函数名后加“()”,小括号后加“:”。eg:
1 def first(name,sex="girl"): 2 print(name+"是一个"+sex) 3 4 return 5 output1 = first ("小白") 6 output2= first(sex = "boy",name ="小黑") 7 output2= first( "boy","小黑")
4. 请问这个函数有多少个参数?
- def MyFun((x, y), (a, b)):
- return x * y - a * b
欧吼!我错了~~
原来是0。因为类似于这样的写法是错误的。函数的参数需要的是变量,而这里试图用元组的形式传递是不可行的。
修改:
1 def MyFun (x,y): 2 return x[0]*x[1]-y[0]*y[1] 3 result = MyFun((3,5),(1,4)) 4 print(result)
5. 请问调用以下这个函数会打印什么内容?
- >>> def hello():
- print('Hello World!')
- return
- print('Welcome To FishC.com!')
会打印:Hello World!
因为python在执行函数的时候,遇到return就默认函数结束,需要返回,不对函数进行下一步运行。(尽管没有返回值)
动动手:
0. 编写一个函数power()模拟内建函数pow(),即power(x, y)为计算并返回x的y次幂的值。
1 #方法一: 2 def power1(x,y): 3 return x**y 4 g =power1(2,3) 5 print(g) 6 #方法二: 7 def power2(x,y): 8 result = 1 9 for i in range(y): 10 result *=x 11 return result 12 print(power2(3,3))
1. 编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数。
1 print("求解最大公约数") 2 def gcd(x,y): 3 while y != 0 : 4 result= x % y 5 x=y 6 y=result 7 return x 8 x = int (input("请输入一个正整数x:")) 9 y = int (input("请输入一个正整数y:")) 10 g = gcd(x,y) 11 print(g)
2. 编写一个将十进制转换为二进制的函数,要求采用“除2取余”(脑补链接)的方式,结果与调用bin()一样返回字符串形式。
1 print("十进制转二进制") 2 def tansl(x): 3 list = [] 4 number = "" 5 while x : 6 y = x%2 7 x= x//2 8 list.append(y) 9 while list: 10 number += str(list.pop()) 11 return number 12 x = int(input("请输入一个正整数:")) 13 print(tansl(x))
3. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式