找回密码
 中文实名注册
查看: 209|回复: 3

Python 等级考试试卷(四级) 测试卷 编程题

[复制链接]

694

主题

1082

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
22801
发表于 2021-8-26 15:37:14 | 显示全部楼层 |阅读模式
36.  要求:利用递归思路将十进制数转二进制,编写自定义函数实现程序功能,完善划线处代码。
"""
函数名def getBin(n)
参数表:整数n表示待转化的十进制数
返回值:整数n对应的二进制数
"""
def getBin(n):
    if n == :
        return ""
    else:
        r =
        return   ③ + str(r)
print(getBin(18))




37.  要求:设计一个算法,给出9块硬币,其中有一块不合格,已知不合格的硬币比正常硬币轻,现用一天平,请利用它找出不合格的硬币,并且用天平的次数最少。请补全下列代码。
参考算法:我们容易想到用二分查找,将硬币分为2堆,“折半”比较,找出那个不合格的硬币。但这样还不够优化,我们可以随机等分成三份,拿出两组比较,划分的对称性更强,查找也更快。比如本题9块硬币,二分最坏的情况是3次查找,而三分最坏的结果是2次查找。本题算法只是针对了3^n的情况。
主要函数名:1.sp_coin(coin_list),2.coin_comp(coin_list)
参数表:1.coin_list--硬币序列,2.coin_list--硬币序列。
返回值:1.硬币序列分为三组,2.不合格硬币在原列表中的位置和查找次数。
示例:当输入硬币序列1 1 1 1 1 1 1 0 1时(硬币序列只能是3^n),返回:不合格硬币在原列表中的位置是 8 号硬币
查找次数是: 2 次


def comp(groA, groB):
    if sum(groA) < sum(groB):
        result = '左'
    elif sum(groB) < sum(groA):
        result = '右'
    else:
        result = '相等'
    return result


def sp_coin(coin_list):
    th = len(coin_list)
    gro1 = coin_list[0:th//3]
    gro2 = coin_list[  ①    ]
    gro3 = coin_list[th//3*2:th]
    return gro1, gro2, gro3


def find_group(gro1, gro2, gro3):
    res_land2 =   ②   
    if res_land2 == '左':
        f_Group = gro1
    elif res_land2 == '右':
        f_Group = gro2
    elif res_land2 == '相等':
        f_Group = gro3
    return f_Group


def coin_comp(coin_list):
    counter = 0
    currList = coin_list
    while len(currList) > 1:
        gro1, gro2, gro3 = sp_coin(currList)
        currList = find_group(gro1, gro2, gro3)
          ③   
    fake = ④   
    print('不合格硬币在原列表中的位置是',coin_list.index(fake)+1,'号硬币')
    print('查找次数是:', counter,'次')


arr = input("请输入一个硬币序列(1代表真硬币,0代表假硬币):")   
arr_list = [int(n) for n in arr.split()]
coin_comp(arr_list)




38.  设计一个算法,求1!+2!+3!+...+(n-1)!+n!。
根据上述计算规则,编写自定义函数完成程序功能,或补全代码。
函数名:jc(n)
参数表:n -- n为正整数。
返回值:阶乘值。
示例:当n=10时,返回:阶乘和结果是:4037913。


def jc(n):
    if   ①   
        return 1
    else:
        return   ②   
n = int(input("请您输入一个整数n:"))
sum = 0
for i in range(1,n+1):
    sum =   ③   


print("阶乘和结果是:%d"% sum)

回复

使用道具 举报

10

主题

21

帖子

424

积分

版主

Rank: 7Rank: 7Rank: 7

积分
424
发表于 2021-8-26 16:00:52 | 显示全部楼层
此帖仅作者可见

使用道具 举报

694

主题

1082

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
22801
 楼主| 发表于 2021-8-26 15:59:55 | 显示全部楼层
此帖仅作者可见

使用道具 举报

24

主题

86

帖子

1842

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1842
发表于 2021-8-26 15:52:43 | 显示全部楼层
此帖仅作者可见

使用道具 举报

您需要登录后才可以回帖 登录 | 中文实名注册

本版积分规则

小黑屋|东台市机器人学会 ( 苏ICP备2021035350号-1;苏ICP备2021035350号-2;苏ICP备2021035350号-3 )

GMT+8, 2024-5-1 01:44 , Processed in 0.045343 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表