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中的函数练习题了。大家有什么不懂得地方欢迎留言,如果小编哪里写错了或者您有更好的解决方案,请联系小编吧!小编期望与您共同进步。
网友评论