# -*- 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));