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上

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