函数简单作业题、以及列表的合并

1.不死兔子

def fib(n):

    
    if n <= 4:
        return 1
    else:
        return fib(n-1) + fib(n-2)
print("一年后共繁殖{}对兔子".format(fib(12)))

2.输入字符串,判断该字符串是否是回文字符串

s = input("请输入一个字符串:")
if not s:
    print("请不要输入空字符串!")
    s = input("请重新输入一个字符串:")

a = reversed(list(s))
if list(a) == list(s):
    print("该字符串是回文")
else:
    print("该字符串不是回文")

3.给定一个正整数N,找出1到N(含)之间所有质数的总和

def zhishu(n):
    #判断是否是质数
    for i in range(2, n // 2 + 1):
        if n % i == 0:
            return False
    return True

n = int(input("输入你想要的正整数:"))
num = 0
for i in range(2, n):
    if zhishu(i):
        num += i
print(f"质数的总和:{num}")

4.求  a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。

a = int(input("请输入所相加的数字:"))
b = int(input("请输入相加的次数:"))
temp = ""
res = 0
for i in range(b):
    temp = temp + "1"
    res = res + a * int(temp)
print(res)

5.合并两个有序数组,合并后还是有序列表

a = [1,2,3,8,9,10]
b = [2,6,8,14,50,60]
def merge2(a, b):
    la,lb = len(a), len(b)
    c = []
    i = j = 0
    while i <la and j < lb:
        if a[i] < b[i]:
            c.append(a[i])
            i += 1
        else:
            c.append(b[j])
            j += 1
    if i < la:
        c.extend(a[i:])
    if j < lb:
        c.extend(b[j:])
    return c

print(merge2(a, b))

结果:

6.给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前

#给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前
def even_before_odd(ls=[]):
    '''
    将一个非负整数数组中的所有偶数都放在奇数元素之前
    '''
    for i in range(len(ls)):
        if ls[i] % 2 != 0:
            for j in range(i + 1, len(ls)):
                if ls[j] % 2 == 0:
                    ls[i], ls[j] = ls[j], ls[i]
                    break
    return ls
 
 
ls = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(f'原列表为:{ls}')
print(f'将偶数置于奇数前,列表变为:{even_before_odd(ls)}')

7.给定一个非负整数数组A,该数组的元素都是从1~N的元素组成,现在发现其中确实一个,请找出这个确实的元素

[1,3,1,2,2,8,8]
def notpair(ls):
    '''
    找出不成对的元素
    '''
    temp = 0
    for i in ls:
        temp ^= i
    return temp
 
 
ls = [1, 4, 1, 3, 3, 8, 9, 8, 9]
print(f'{ls}中不成对的元素为:{notpair(ls)}')

结果: 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值