python第五次作业

1.有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币
[10, 8, 5, 3, 27, 99]
 
num = [10,8,5,3,27,99]
count = 0
for i in num :
    if i % 2 == 0:
        count += i // 2
    else :
        count += i // 2 + 1 
print(f"最少需要{count}次")


2.如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".
list = []
for num in range(2,101) :
    flag = True
    for i in range(2,num) :
        if num % i == 0 :
            flag = False
            break
    if flag:
        list.append(num)
    else:
        pass
print("1~100以内的素数有:")
print(list)
i = 1
while i < len(list):
    if list[i] - list[i - 1] == 2:
        print("{}和{}是孪生数".format(list[i], list[i - 1]),end="\n")
    
    i += 1

3.给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和
list = [1,54,46,613,4561,45,8,6,2,89] 

max = 0
for i in list :
    if i > max :
        max = i
min = 2
for i in list :
    if i < min :
        min = i
count = 0
for i in list:
    count += i

print("最大值是:", max)
print("最小值是:", min)
print("平均值是:", count /len (list))

4.将list中的重复数据去重,至少使用两种方案

第一种:转化为set去重

ls = [1,2,3,35,44,1,55,26,66,35,44]
print(f'原列表为:{ls}')
 
ls = list(set(ls))
print(f'去重后的列表为:{ls}')

第二种:遍历

ls = [1,2,3,35,44,1,55,26,66,35,44]
print(f'原列表为:{ls}')
 
ls1 = []
for n in ls:
    if n not in ls1:
        ls1.append(n)
ls = ls1
print(f'去重后的列表为:{ls}')


两个列表进行合并操作

方法一:直接用加号拼接

a = [1,2,3]
b = [4,5,6]
c = a + b
print(c)

方法二:使用extend

a = [1,2,3]
b = [4,5,6]
 
a.extend(b)
print(f'将b合并到a中:{a}')


使用列表判断一个列表是否在另外一个列表中
a = [1,2,3]
b = [2,3,4,5]
c = []
for i in b :
    if i in a :
        c.append(i)
print(c)


列表的反转 列表的排序
 
a = [1,8,6,96,41,53,51,74]

a.reverse()
print(f"反转后的列表为{a}")

a.sort()
print(f"排序反转后的列表为{a}")

5.如何将0-10随机存入列表中
import random

a = []
while True :
    i = random.randint(0,10)
    if i not in a :
        a.append(i)
    if len(a) == 11 :
        break
print(f"列表为{a}")


6.存在一个1~n的连续列表,在其中不小心重复了一个值,请找出这个重复值
[1,2,3,4,5]
a = [1,2,3,4,5,5]
for i in range(1,len(a)) :
    for j in range(1,i) :
        if a[i] == a[j] :
            print(f"重复的值为:{a[i]}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值