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 b
ls = [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 = 0
for i in range(len(ls)):
xiabiao = i
if int(ls[xiabiao]) % 2 == 0:
sum += xiabiao
return sum
n = 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 1
for i in range(len(arr[0])):
arr[0][i] = 1
for i in range(len(arr)):
arr[i][0] = 1
for 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}种走法")
【选做】汉诺塔:
汉诺塔也没写出来