[Python]小甲鱼Python视频第017课(函数 - Python的乐高积木)课后题及参考解答
# -*- coding: utf-8 -*-
"""
Created on Wed Mar 6 18:49:30 2019
@author: Administrator
"""
"""
测试题:
0. 你有听说过DRY吗?
Don't repeat yourself
人类的本质是复读机,但不要总写重复的代码。
1. 都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢?
提高代码的复用性
2. 函数可以有多个参数吗?
可以
3. 创建函数使用什么关键字,要注意什么?
要有括号和冒号
def func_name():
4. 请问这个函数有多少个参数?
def MyFun((x, y), (a, b)):
return x * y - a * b
不允许这种写法
5. 请问调用以下这个函数会打印什么内容?
>>> def hello():
print('Hello World!')
return
print('Welcome To FishC.com!')
Hello World!
动动手:
0. 编写一个函数power()模拟内建函数pow(),即power(x, y)为计算并返回x的y次幂的值。
1. 编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数。
2. 编写一个将十进制转换为二进制的函数,要求采用“除2取余”(脑补链接)的方式,结果与调用bin()一样返回字符串形式。
"""
def dds0_pow(x,y):
result = 1;
negative = 0;
if y == 0:
if x == 0:
return None;
else:
return result;
elif y > 0:
negative = 0;
else:
negative = 1;
y = -y;
while True:
result *=x;
y = y - 1;
if y == 0:
break;
if negative == 1:
return 1/result;
else:
return result;
#辗转相除法 https://baike.baidu.com/item/辗转相除法
def dds1_gcd(x,y):
bigger , small = (x,y) if x > y else (y,x);
divided = bigger;
division = small;
leaves = 0;
while True:
leaves = divided % division;
if leaves == 0:
break;
else:
divided = division;
division = leaves;
return division;
#除2取余
def dds2_bin(num_dec):
result = '';
leaves = 0;
div_result = num_dec;
while True:
leaves = div_result % 2;
div_result = div_result // 2;
result = str(leaves) + result;
if div_result == 0:
break;
return '0b'+result;
print(dds2_bin(255));
~不再更新,都不让我写公式,博客园太拉胯了

浙公网安备 33010602011771号