[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));   

  

posted @ 2019-03-09 19:16  Alimy  阅读(515)  评论(0编辑  收藏  举报