第五次作业

1.有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币[10, 8, 5, 3, 27, 99]

import random
num = 0
coins = [10, 8, 5, 3, 27, 99]
for c in coins:
    if c % 2 ==0:
        num += c // 2
    else:
        num += c // 2 + 1
print(f"用户最少需要{num}次,可以拿完硬币")

 2.如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".

 

primes = []
for i in range(2,101):
    flag = True
    for j in range(2,i // 2):
        if i % j == 0:
            flag = False
            break
    if flag:
        primes.append(i)
index = 0
print(primes)
while index < len(primes) - 1:
    first = primes[index]
    second = primes[index + 1]
    if second- first == 2:
        print(f"{first}和{second}之间是孪生素数")
    index += 1

注意: 素数就类似于质数,所以在判断是否是孪生数之前就要判断一下是否是质数

 3.给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和

A.使用opi系统

   print(f"最大值是{max(arr)}")
    print(f"最小值是{min(arr)}")
    print(f"和值是{sum(arr)}")
    print(f"平均值是{sum(arr) / len(arr)}")

B.不使用opi系统

arr_max = arr[0]
arr_min = arr[0]
arr_sum = 0
for i in arr:
    if i > arr_max:
        arr_max = i
    if i < arr_min:
        arr_min = i
    arr_sum += i
print(f"最大值{arr_max}")
print(f"最小值{arr_min}")
print(f"和值{arr_sum}")
print(f"平均值{arr_sum / len(arr)}")

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

A.第一种

list_1 = [1,3,4,6,8,2,3]
result = list(set(list_1))
print(result)

        优点:操作简单;

        缺点:使用set方法无法保证去重后的顺序

B.第二种

list_1 = [1,3,4,6,8,2,3]
list_2 = list(set(list_1))
list_2.sort(key = list_1.index)
print(list_2)

        使用位置坐标来去重

 5.两个列表进行合并操作

A.第一种

list_1 = [1,2,3,4]
list_2 = [2,3,4,5,6]
list_1.extend(list_2)
print(list_1)

B.第二种

list_1 = [1,2,3,4]
list_2 = [2,3,4,5,6]
list_1 += list_2
print(list_1)

注意:在使用 += 或 extend() 方法合并列表时,会直接在第一个列表中添加第二个列表的元素,并不会创建新的列表

C.第三种

list_1 = [1,2,3,4]
list_2 = [2,3,4,5,6]
merged_list = list_1 + list_2
print(merged_list)

注意:merged也可以被concat替用。两者都是python中常用与列表合并的函数!

 6.使用列表判断一个列表是否在另外一个列表中

list1 = [1,2,3,4]
list2 = [2,3,4,5,6,7]
for i in list1:
    if i not in list2:
        print("列表1不在列表2中")
        break
    else:
        print("列表1在列表2中")
        break

注意:列表中的值要有顺序!

 7.列表的反转  列表的排序

1.列表排序

a=[4,3,2,-43]
print(sorted(a))
print(sorted(a, key=abs))#按绝对值进行排序

[-43, 2, 3, 4]
[2, 3, 4, -43]

2.列表反转

ls=[2,4,6,7,89]
for i in ls:
	ls.reverse()
print("反转后的元素为:%s"%ls)

8.如何将0-10随机存入列表中     

import random
arr = list()
for i in range(20):
    a = random.randint(0,10)
    arr.append(a)
print(arr)

结果:

 9.存在一个1~n的连续列表,在其中不小心重复了一个值,请找出这个重复值

res = 0
arr	= [1,2,3,3,4,5]
for i in range(0,len(arr)):
    res ^= i ^ arr[i]
    # 0 ^= 0 ^ 1    res = 1
    # 1 ^= 1 ^ 2    res = 2
    # 2 ^= 2 ^ 3    res = 3
    #······
print(res)

 结果:

你可能感兴趣的:(1024程序员节,python)