Python 五级编程题
  TnD0WQEygW8e 2023年11月14日 18 0

python_五级_中国电子学会_2021年_真题_汉诺塔

汉诺塔是一道非常经典的题,12月5日悦儿姐在考python五级时又遇见它了,在这里给大家分享一下。

题目:设计一个算法,汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘,大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。有三个单字符串和一个整数。三个字符表示三个杆子的编号,整数为盘子的数目。

根据上述计算规则,补全下列代码。

函数名:hannota(n,a,b,c)

参数表:n--正整数表示盘子数,a--a杆子,b--b杆子,c--c杆子。

返回值:移动路径。

示例:n=3,返回:A-->C

A-->B

C-->B

A-->C

B-->A

B-->C

A-->C

代码:

def hannota(n,a,b,c):
        if n==1:
            print(a,'-->',c)
            return None
        if n==2:
            print(a,'-->',b)
            print(①)
            print(b,'-->',c)
            return None
        hannota(②)
        print(a,'-->',c)
        hannota(③)
    a='A'
    b='B'
    c='C'
    n=int(input('请输入黄金圆盘数量n:'))
    hannota(n,a,b,c)



好啦,题目说完了,我们来讲怎么填这些东东。真的是,填空题真的是嗷嗷烦人,还不如我这位原创选手自己写呢!总是要我们理解别人的意思,真的好难。

该抱怨的抱怨完了,我们来回归正题......这类填空题主要要做到几点:1.审题   2.想自己的思路  3.读别人的思路   4.填空

这道题和我们之前的数麦子那题特别像,每后一步移动的步数也是前一步的两倍,不信的话可以去4399小游戏里玩一玩、感受感受。总结如下规律:要移动的那片圆盘对应的那根柱子上的圆盘数如果是奇数,那么圆盘直接移动到终点(c柱子)。如果是偶数,那就先放在空的那根柱子上,再按照奇数的方法做,最后把那片圆片移过去。

so...understand?不懂看程序,看着看着就会懂的:

def hannota(n,a,b,c):  # 定义函数,参数代表的是什么在前面的参数表中看
        if n==1:  # 只剩一步
            print(a,'-->',c)
            return None
        if n==2:  # 还剩两步
            print(a,'-->',b)  # 先借助b柱子
            print(a,'-->',c)  # 再到终点
            print(b,'-->',c)  # 把b柱上快被忘掉的东东拿回来
            return None
        hannota(n-1,a,c,b)  # 把a柱上的借助c柱放在b柱上
        print(a,'-->',c)  # a上的移过去了
        hannota(n-1,b,a,c)  # 把b柱上的移到c柱上
    a='A'
    b='B'
    c='C'
    n=int(input('请输入黄金圆盘数量n:'))
    hannota(n,a,b,c)



好啦,有什么缺点放在评论区,我在这里,等你哦!

 

Python 五级编程题_python

 

 

Python 五级编程题_因式分解_02

 

 

Python 五级编程题_python_03

 

Python 五级编程题_因式分解_04

 

 

 https://blog.51cto.com/myunix/2399892

 

python_五级_中国电子学会_真题_计算天数

话不多说我们直接单刀直入进入题目:

输入年月日,计算这一天是这一年的第几天,编写自定义函数完成程序功能,完善程序代码。——根据年月日,计算这一天是这一年的第几天。函数名   def getDays(year)。      参数       year:表示日期,字符串类型如:20211201。      返回值     整数,表示这一天是这一年的第几天。

代码:

   

def getDays(year):
        s=0
        y=int(year[:4])
        m=int(year[4:6])
        d=int(year[6:8])
        mothdays=(31,28,31,30,31,30,31,31,30,31,30,31)
        for i in range(①):
            s=s+②
        if (y%4==0 and y%100!=0 or y%400==0) and ③:
            s=s+1
        s=s+d
        return s
    year='20211201'
    theday=④
    print(theday)



好,开始讲解。整个程序写的还是不错的,只不过有些地方有点让悦儿姐匪夷所思。比如③.....还记得我们填空题的步骤吗?1.审题   2.想自己的思路   3.读别人的思路    4.填空

这段代码很好读,我们直接填空去。

def getDays(year):  # 定义函数
        s=0  # 你们要学好英语啊,s就是sum的简称,sum你别告诉我你不知道,就是和。
        y=int(year[:4])  #   y   m  z
        m=int(year[4:6])  # 2021|12|01
        d=int(year[6:8])
        monthdays=(31,28,31,30,31,30,31,31,30,31,30,31)  # 月份列表
        for i in range(m-1):  # 求月(最后一个月份不要加,因为没有完全过完)
            s=s+monthdays[i]
        if (y%4==0 and y%100!=0 or y%400==0) and True:  # 求年是否是闰年。四年一闰,百年不闰,四百年再闰。前一个空好像都包括了,后一个小女就瞎填了,如有更好的想法,欢迎来找我。
            s=s+1
        s=s+d  # 求日
        return s
    year='20211201'
    theday=getDays(year)
    print(theday)



Good bey😉 ,我们下期不见不散。

 

 

python_中国电子学会_五级_真题_因式分解

题目is this:素数是只能被1和本身整除的正整数,因式分解就是将一个正整数分解成若干个素数相乘的形式。用户从键盘输入小于1000的整数,对其进行因式分解,例如:10=2*5,60=2*2*3*5。完善程序代码。

     

#用户从键盘输入小于1000的整数,对其进行因式分解。例如:10=2*5,60=2*2*3*5。
    x = input('Please input an integer less than 1000:')
    x = int(x)
    t = x
    ①  
    result = []
    while True:
        if t == 1:
            break
        if t % i == 0:
            result.  ②
            t = t/i
        else:
              ③
    s=''
    for i in result:
        s=  ④
    s=  ⑤
    print( x,'=',s)


程序就是这么个程序,悦儿姐看了半天就看出了一点皮毛,准确来说是一撮毛。于是我当场就GAMEOVER了。毕竟本孩子还只10岁哎!

我去你管这玩应叫一般???

但是今天,我做出来啦!来分享一下。填空题步骤:1.审题   2.想自己的思路  3.读别人的思路   4.填空。好,我们一步一步来:

题,就是分解质因数嘛。自己的思路:把因数罗列出来,就2,3,5,7,11就差不多了,然后一点一点除。别人的思路:i代表一个又一个的自然数,用t去除,最后把每一次的i穿起来。

填空:

#用户从键盘输入小于1000的整数,对其进行因式分解。例如:10=2*5,60=2*2*3*5。
    x = input('Please input an integer less than 1000:')  # 好家伙 考我英文?不就是输入1000以内的整数吗
    x = int(x)  # 化成整数 
    t = x   # x就是个样子 拿t霍霍
    i = 2  # 最小的质数是2 不用我说吧
    result = []  # 一个列表(存i用的)
    while True:
        if t == 1:
           break
        if t % i == 0:  # 除它
           result.append(i)  # 存它
           t = t/i  # t的商保存在t里
        else:
           i+=1
    s=''
    for i in result:
        s=  s+str(i)+'*'  # 穿串
    s= s[:-1]  # 把最后的*删了
    print( x,'=',s)  # 打印出来



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  2Fnpj8K6xSCR   2024年05月17日   104   0   0 Python
  xKQN3Agd2ZMK   2024年05月17日   73   0   0 Python
  Ugrw6b9GgRUv   2024年05月17日   41   0   0 Python
TnD0WQEygW8e