Python3函数习题解析

         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,则根为


Python3函数习题解析_第1张图片

(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函数习题解析)