ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

第017讲:函数 - Python的乐高积木

2021-06-05 12:04:03  阅读:176  来源: 互联网

标签:return 函数 power Python 乐高 017 print dec def


第017讲:函数 - Python的乐高积木


测试题

0. 你有听说过DRY吗?

# DRY(Don't Repeat Yourself.)原则
# 不要重复拷贝一段代码

1. 都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢?

使用函数有以下好处:

  • 可以降低代码量(调用函数只需要一行,而拷贝黏贴需要N倍代码)
  • 可以降低维护成本(函数只需修改def部分内容,而拷贝黏贴则需要每一处出现的地方都作修改)
  • 使序更容易阅读(没有人会希望看到一个程序重复一万行“I love FishC.com”

2. 函数可以有多个参数吗?

  • 理论上可以无限个,但要你能记得住这么多
  • 建议三五个就够了,太多反而影响阅读

3. 创建函数使用什么关键字,要注意什么?

  • 关键字 def
  • 函数名后边要加上小括号 ()
  • 小括号后边是冒号 :
  • 缩进部分属于函数内容
def MyFun():
    # 函数体

# 非函数体

4. 请问这个函数有多少个参数?

def MyFun((x, y), (a, b)):
    return x * y - a * b
  • 这个函数是错的,函数参数是变量
  • 这里试图用 元祖 来传递是不可行的
# 修改方式
>>> def MyFun():
        return x[0]*x[1] - y[0]*y[1]

>>> MyFun((1,3),(2,5))
-7

5. 请问调用以下这个函数会打印什么内容?

>>> def hello():
        print('Hello World!')
        return
        print('Welcome To FishC.com!')

>>> hello()
'Hello World!'
  • 因为当Python 执行到 return 语句时,Python 认为函数到此结束,需要返回了(尽管没有任何返回值)

动动手

0. 编写一个函数 power() 模拟内建函数 pow(),即 power(x, y) 为计算并返回 x 的 y 次幂的值。

def power(x,y):
    c = x**y
    print(c)
power(2,2)

1. 编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如 gcd(x, y) 返回值为参数 x 和参数 y 的最大公约数。

def gcd(x,y):
    while y: # y没被除尽就表示余数不为0,及True,则继续循环下去
        t = x % y
        x = y
        y = t
    return x

2. 编写一个将十进制转换为二进制的函数,要求采用“除2取余”(补脑链接)的方式,结果与调用 bin() 一样返回字符串形式。

def bin(dec):
    temp = [] # 空列表,存放计算的值
    result = '' # 空字符串,最后来拼接每一个值
    while dec:
        quo = dec % 2 # 把十进制除以2的余数赋予变量
        dec = dec // 2 # 第一次循环后将十进制除以2取整赋值用于下一次计算
        temp.append(quo) # 将余数写入列表保存

    while temp: # 将列表中每一个值提取出来
        result += str(temp.pop()) # 倒序形式拼接

    return result

print(bin(181))

标签:return,函数,power,Python,乐高,017,print,dec,def
来源: https://www.cnblogs.com/jaderadish/p/14852377.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有