ICode9

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

Python语言程序设计——实验五

2022-02-04 21:34:51  阅读:190  来源: 互联网

标签:__ Python move -- 实验 print 程序设计 盘子 def


1、编程求组合程序调用函数comb();comb()在执行过程中又调用了函数fac()。fac()的调用被嵌套在函数comb()的调用中。

n = eval(input("Input n: "))
m = eval(input("Input m: "))
def fac(k) :
    i = f = 1
    while i<=k :
        f = f*i
        i = i+1
    return f
def comb(n, m) :
    c = fac(m)//(fac(n)*fac(m-n))
    return c
print(comb(n, m))

2、请改正下面程序中存在的错误?

                def Sum(a,b,c):

                        print(a+b+c)

                t=(1,2,3)

                Sum(**t)      改为:Sum(*t)

3、请定义一个函数q(a, b, c),接收3个参数,可以使用全局变量__name__,进行测试,返回一元二次方程:ax2 + bx + c = 0的两个解。提示:计算平方根可以调用math.sqrt()函数。

 

import math
def q(a, b, c):
    if a == 0:
        print('函数无解。')
    else:
        dert = b * b - 4 * a * c
        x1 = (- b + math.sqrt ( dert )) / ( 2 * a )
        x2 = (- b - math.sqrt ( dert )) / ( 2 * a )
        return x1,x2
if __name__ == '__main__':
    print ( 'q(2, 3, 1) =' , q ( 2 , 3 , 1 ) )
    print ( 'q(1, 3, -4) =' , q ( 1 , 3 , -4 ) )

    if q ( 2 , 3 , 1 ) != (-0.5 , -1.0):
        print ( '测试失败' )
    elif q ( 1 , 3 , -4 ) != (1.0 , -4.0):
        print ( '测试失败' )
    else:
        print ( '测试成功' )

4、编写程序解决汉诺塔问题:有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置n个盘子(编号从n至1,即最下面盘子编号为n,最上面盘子编号为1)。目标:把A杆上的盘子全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。提示:编写递归函数解决该问题。

        我们可以理解move(n,a,b,c)函数中对应的a表示起始位置,b表示中间位置,c表示最终要移到的位置,可以分为下面3个部分理解:

                                1.将n-1个盘子从a移到b

                                2.将最后1个盘子从a移到c

                                3.将n-1个盘子从b移到c

def move (n,a,b,c):
    if n ==1:
        print('move',a,'-->',c)
    else:
        move(n-1,a,c,b) #把上面n-1个从a-->b
        move(1,a,b,c) #把最下面一个从a-->c
        move(n-1,b,a,c) #把上面n-1个从b-->c
n=float(input('请输入n='))
print('结果如下所示:')
print(move(n,'A','B','C'))

                第二种:

step=0
def move(n,a,b,c):
    global step
    if n==1:  #这个地方就是递归函数调用终止的条件
        print(a,'-->',c)
        step=step+1
    else:
        move(n-1,a,c,b)  #把上面n-1个从a-->b
        move(1,a,b,c)    #把最下面一个从a-->c
        move(n-1,b,a,c)  #把上面n-1个从b-->c

def main():
    n=eval(input("please input the numbers of the plates:"))
    move(n,'A','B','C')  #这里的A B C 表示圆柱
    print("the total steps to move the plates from a to c is {}".format(step))
main()

标签:__,Python,move,--,实验,print,程序设计,盘子,def
来源: https://blog.csdn.net/qq_44485283/article/details/122785927

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

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

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

ICode9版权所有