1、给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n), 可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数
def repeat(ls:list) -> list:#把个数超过1的数,放进另一个列表中a = []for i in ls:if ls.count(i) >= 2:a.append(i)print(a)#去掉a列表中重复的数,是源列表中重复的整数b =[]for n in a:if n not in b:b.append(n)return bls = [4,5,7,2,9,4,0,2]
print(ls)
print(f"重复的值有{repeat(ls)}")
2、找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)
def Divisible_by_5_6(x:int)->list:arr=[]for i in range(1,x+1):if (i % 5 == 0 or i % 6 ==0 ):if i % 5 == 0 and i % 6 ==0:continue #利用continue跳过能被5和6整除的数else:arr.append(i)return(arr)print(Divisible_by_5_6(1000))
3、写一个方法,计算列表所有偶数下标元素的和(注意返回值)
def ouxiabiao_sum(ls=[]):sum = 0for i in range(len(ls)):xiabiao = iif int(ls[xiabiao]) % 2 == 0:sum += xiabiao return sumn = int(input('请输入列表包含的元素个数:'))
ls = []
for i in range(1,n+1):item = input(f'请输入列表1的第{i}个元素:')ls.append(item)print(f"列表所有偶数下标元素的和{ouxiabiao_sum(ls)}")
【选做】某个人进入如下一个棋盘中,要求从左上角开始走, 最后从右下角出来(要求只能前进,不能后退), 问题:共有多少种走法?
(我不会,看了别人的,懂了点)
def board(arr:list):if arr is None:return -1 if len(arr) == 1 and len(arr[0]) == 1:return 1for i in range(len(arr[0])):arr[0][i] = 1for i in range(len(arr)):arr[i][0] = 1for i in range(1, len(arr)):for j in range(1, len(arr[0])):arr[i][j] = arr[i - 1][j] + arr[i][j - 1]return arr[len(arr) - 1][len(arr[0]) - 1]ls = [[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],]
count = board(ls)
print(f"从左上角开始走,到右下角,共有{count}种走法")
【选做】汉诺塔:
汉诺塔也没写出来