python作业3

本文包含一系列编程问题的解决方案,如找出1到N之间的所有质数之和,实现选择排序算法对列表进行排序,利用特定公式计算PI值,求解特定形式的多项式和,以及对数组进行特定操作,如合并有序数组、调整偶数和奇数顺序,找寻未配对元素等。
摘要由CSDN通过智能技术生成

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

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


n = int(input('正整数N:'))
num = 0
for i in range(2, n):
    if ping(i):
        num += i
print(f'质数的总和:{num}')

2.给定一个10个元素的列表,请完成排序(注意,不要使用系统api)

def selection_sort(ls=[]):
    '''
    选择排序法
    '''
    for i in range(len(ls)):
        index_min = i
        for j in range(i + 1, len(ls)):
            if ls[index_min] > ls[j]:
                index_min = j
        ls[index_min], ls[i] = ls[i], ls[index_min]
    return ls


ls = [23, 5, 12, 67, 64, 87, 3, 1, 2, 28]
print(f'原列表为:{ls}')
print(f'选择排序法排序后的列表为:{selection_sort(ls)}')

3.计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1.......)

def PI():
    '''
    计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-.......)
    '''
    n = 0
    sum_PI = 0
    for i in range(1, 10000, 2):
        sum_PI += ((-1) ** n) * (1 / i)
        n += 1
    PI = 4 * sum_PI
    return PI


print(f'PI = {PI()}')

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

def one_sum(a, n):
    '''
    求 a + aa + aaa +.......+ aaaaaaaaa = ? (其中a为1至9之中的一个数,项数可以指定)
    '''
    sum_a = 0
    for i in range(1, n + 1):
        num = int(f'{a}' * i)
        sum_a += num
    return sum_a


a = int(input('请输入一个在区间[1,9]的正整数:'))
n = int(input('请输入指定的项数:'))
print(f'所求多项式的和为:{one_sum(a, n)}')

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

#合并两个有序数组,合并后还是有序列表
def selection_sort(ls=[]):
    '''
    选择排序法
    '''
    for i in range(len(ls)):
        index_min = i
        for j in range(i + 1, len(ls)):
            if ls[index_min] > ls[j]:
                index_min = j
        ls[index_min], ls[i] = ls[i], ls[index_min]
    return ls


ls_1 = [1, 3, 5, 7, 9]
ls_2 = [2, 4, 6, 8, 10]
print(f'原有序列表1为:{ls_1}')
print(f'原有序列表2为:{ls_2}')
ls_1.extend(ls_2)
print(f'合并后的有序列表为:{selection_sort(ls_1)}')

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.将10进制数据转换为二进制,并且统计其中的0和1的数量

# 将10进制数据转换为二进制,并且统计其中的0和1的数量
def ten_to_two(num):
    '''
    将十进制数据转换为二进制,并且统计其中的0和1的数量
    '''
    binary_num = bin(num)
    ls = list(str(binary_num))[2:]
    count_0 = 0
    count_1 = 0
    for i in ls:
        if int(i) == 0:
            count_0 += 1
        else:
            count_1 += 1
    return count_0, count_1


num = int(input('请输入一个整数:'))
print(f'将{num}转换为二进制为:{bin(num)[2:]}')

8.给定一个数组,已知数组中的元素都是成对出现,现在数组中只有一个元素没有成对,请找出这个元素。[1,3,1,2,2,8,8]

# 给定一个数组,已知数组中的元素都是成对出现,现在数组中只有一个元素没有成对,请找出这个元素。[1,3,1,2,2,8,8]
def notpair(ls):
    '''
    找出不成对的元素
    '''
    temp = 0
    for i in ls:
        temp ^= i
    return temp


ls = [1, 3, 1, 2, 2, 8, 8]
print(f'{ls}中不成对的元素为:{notpair(ls)}')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值