大数据开发中级练习题目(python超详细)

  1. 给定长度为m的非重复数组p,以及从其中取n(n<m)个数字组成新的子数组q。现要对p进行排序,要求:q在数组的最前方,其余数字按从小到大的顺序依次排在后面

输入样例:

q = [3, 5, 4]

p = [5, 4, 3, 2, 1]

输出样例:

3 5 4 1 2

代码如下:

q = [3, 5, 4]
p = [5, 4, 3, 2, 1]

# 对 p 中的数字进行排序
sorted_p = sorted(p)

# 创建一个空的列表(数组)result
result = []
# 先把q中的数字依次放入result
for ele in q:
    result.append(ele)

# 遍历一下排好序的p,也即sorted_p, 将sorted_p 中不在q中的元素依次放到result
for num in sorted_p:
    if num not in q:
        result.append(num)

# 最后,输出结果
print(result)

运行结果:

2、

  1. 给定小写英文字符串a和一个非负数b(0<=b<26), 将a中的每个小写字符替换成字母表中比它大b的字母。这里将字母表的z和a相连,如果超过了z就回到了a。

输入样例:

a = "dfjkldfdfdl"

b = 5

输出示例:

ikopqikikiq

 代码如下:

a = "dfjkldfdfdl" 
b = 5

# 定义一个空的字符串,用于保存结果
result = ""

# 遍历a中的每个字符,并对其加5
for letter in a:
    # 计算出字母表中比letter大b(这里是5)的字符
    # 首先我们要得到 ascii码(使用ord函数)
    letter_new_code = (ord(letter) - ord('a') + b) % 26 + ord('a')
    # 然后我们将 ascii 码转为字母(使用chr函数)
    letter_new = chr(letter_new_code)

    result += letter_new

# 打印结果   
print(result)

运行结果:

3. 给定整数a,计算a在二进制表示下1的个数,并输出。

输入样例:

a = 39

输出样例:

4

代码如下:

a = 39

# 定义一个计数器,来统计1的个数
counter = 0 

# 遍历 a 的二进制表示中的每一位
for i in range(128):
    # 使用位运算符 & 来监测第i位是否为1
    if a & (1 << i) != 0:
        # 说明第i位上a有1, 那么计数器加1
        counter += 1

# 输出结果
print(counter)

运行结果:

4. 克拉兹猜想:任取一正整数(大于2),如果是偶数,将其除以2。如果是奇数,将其乘以3再加1,然后重复这个过程,最后结果都会陷入4 2 1 的循环。

请通过编程实现,当4,2,1重复第二次的时候,结束循环,并打印整数为16时的输出列表。(编写完程序后,讲数值未16的后续打印出来)

输入样例:

a = 19

输出样例:

19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1

代码如下:

# 定义一个克拉兹猜想(数学家杀手)的函数
def collaz_conjecture(a):
    # 定义一个输出的列表,来保存“线路”
    result = []

    while True:
        # 如果是偶数: 除以2
        if a % 2 == 0:
            a = a // 2
        # 如果是奇数: 乘3再加1
        else:
            a = 3 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值