美文网首页程序员
Python3函数习题解析

Python3函数习题解析

作者: 阿Q说代码 | 来源:发表于2018-07-05 11:45 被阅读0次

             Hello,大家好,小编最近在学习廖雪峰老师官网的Python3,想通过解答每节知识点后的练习题的的方式来检验自己的学习成果,也希望能帮助和小编一样的小白解决心中的疑惑,大家共同进步。

    (1)调用函数练习题:

            请利用Python内置的hex()函数把一个整数转换成十六进制表示的字符串:

    代码部分:

    # -*- coding: utf-8 -*-

    n1 = 255

    n2 = 1000

    print(str(hex(n1)))

    print(str(hex(n2)))     #hex()将整数转换为十六进制数,str()将十六进制数转换为对应的字符串。

    (2)定义函数练习题:

            请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程:

    ax2+ bx + c = 0的两个解。

    提示:计算平方根可以调用math.sqrt()函数:

    代码部分:

    # -*- coding: utf-8 -*-

    import math

    def quadratic(a, b, c):

        x = (-b+math.sqrt(b*b-4*a*c))/2/a

        y = (-b-math.sqrt(b*b-4*a*c))/2/a

        return (x,y)

    注意:解决该题的关键就是要了解一元二次方程有两个根的条件,即△=b²-4ac>0,则根为


    (3)函数的参数练习题:

        以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积:

    代码部分:

    def product(x, *args):

        sum =1

        for num in args:

            sum = sum*num

        return x*sum

    *args是可变参数,args接收的是一个tuple;

    (4)递归函数练习题:

            汉诺塔的移动可以用递归函数非常简单地实现。请编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法

    汉诺塔的原理解析: 

    当n=1时 ,直接:A—>C,只需一步。

    当n=2时,我们可以先把小盘子从A—>B ,然后把大盘子从A—>C, 最后再把小盘子从B–>C, 一共需要三步。

    当n=3时,我们可以先把上面的两个盘子按照n=2的做法先移动到B,上面已经分析出来需要三步,(其实也是把n个盘子从一个地方移到另一个地方的一种实现,只不过这里n=2,C变为B了而已) ,然后把最下面的大盘子从A–>C,最后再把上面的两个盘子从B–>C 也是需要三步,总共需要七步。 

    代码部分:

    # -*- coding: utf-8 -*-

    def move(n, a, b, c):

    if n == 1:

            print(a, '-->', c)

    else:

          move(n-1,a,c,b)   #将A中的n-1个盘子借助C移动到B上

          move(1,a,b,c)    #将A中最后一个盘子直接移动到C上

          move(n-1,b,a,c)   #将B中的n-1个盘子借助A移动到C上

    注意:递归其实就是找到规律,然后不断调用方法本身的过程。

          综上这就是在廖雪峰老师的官网Python3中的函数练习题了。大家有什么不懂得地方欢迎留言,如果小编哪里写错了或者您有更好的解决方案,请联系小编吧!小编期望与您共同进步。

         

    相关文章

      网友评论

        本文标题:Python3函数习题解析

        本文链接:https://www.haomeiwen.com/subject/gdbuuftx.html