------------------------------------------------可能存在问题,可大家探讨---------------------------------------------
1、 筛选满足条件的整数
代码:
N,M=map(int,input().split(' '))
list = []
for i in range(N+1,M):
# 如果i能被整除5则加入集合
if 3*i%5 == 0:
list.append(i)
a = len(list)
# 当集合里面有三个值则退出循环
if a == 3:
break
# 当循环在最后都没有3个值,则缺几个加几个-1
if i == M-1 and a < 3:
for i in range(3-a):
list.append(-1)
# 输出值
print(list[0],list[1],list[2])
2、连续M个数之积最小
代码:
N,M=map(int,input().split(' '))
list = list(map(int,input().split(' ')))
list1 = []
# 需要连续M个数,所以最多循环到N-M+1
for i in range(N-M+1):
a = list[i]
# 计算连续M个数之积
for j in range(1,M):
a = a*list[i+j]
list1.append(a)
b = max(list1)
# 找到最大数的第一个出现的位置
for i in range(len(list1)):
if list1[i] == b:
print(b,(i+1))
break
3、字符串中最长连续非降序子串
代码:
S = input()
n1 = ""
n2 = ""
for i in range(len(S)):
# 防止过界
if i == 0 :
n2 += S[i]
# 判断该值是否是升序值
if S[i]>=S[i-1]:
n2 += S[i] # 升序则为一个子串
if S[i]<S[i-1]:
if len(n2) > len(n1): # 不是则断掉,将大的子串存进n1中
n1 = n2
n2 = S[i] # n2重新存子串
if len(n2)>len(n1):
print(n2)
else:
print(n1)
4、病毒信息筛选
代码:
S = input()
a = "_1234.exe"
b = 0 # 嫌疑片段数
c = []
for i in range(len(S)-len(a)+1):
if S[i:len(a)+i] == a:
b += 1
c.append(i)
s= str(b)
for i in range(b):
s = s + " "+ str(c[i])
print(s)
5、货物摆放
代码:
N = int(input())
list1 = []
# 将值存进list
for i in range(N):
list2 = list(map(str,input().split(' ')))
list1.append(list2)
# 比较颜色大小排序
for i in range(len(list1)-1):
for j in range(len(list1)-1):
if list1[j][1] > list1[j+1][1]:
temp = list1[j +1 ]
list1[j + 1] = list1[j]
list1[j] = temp
# 如果有两个颜色相同就看货物字母排序
for i in range(len(list1)-1):
for j in range(len(list1)-1):
if list1[j][1] == list1[j+1][1]:
if list1[j][0] > list1[j+1][0]:
temp = list1[j + 1]
list1[j + 1] = list1[j]
list1[j] = temp
# 输出
for i in range(len(list1)):
print(list1[i][0],list1[i][1])
6、投石饮水
代码:
# 直接体积求解
l,h = map(int,input().split(' '))
if h <= 2:
print(0)
else:
# 计算需要上升的体积
s = (l**2)*(h-2)
num = s//8
if s % 8 != 0:
num += 1
print(num)
7、学科竞赛
代码:
# 拿到所有学生参加竞赛需要科目的最大分,然后看哪些学生有资格
n,c = input().split(maxsplit=1)
n = int(n)
list1 = []
for i in range(n):
list2 = list(map(int,input().split(' ')))
list1.append(list2)
big = 0
if c == "B": # 参加的竞赛
for i in range(n):
b_num = list1[i][2]+list1[i][4] # 当前学生参加竞赛需要科目的分数
if b_num > big: # 拿到最高分
big = b_num
for i in range(n): # 看哪些学生有资格
b_num = list1[i][2]+list1[i][4]
if b_num == big:
print(list1[i][0])
elif c == "I":
for i in range(n):
b_num = list1[i][2] + list1[i][3]
if b_num > big:
big = b_num
for i in range(n):
b_num = list1[i][2]+list1[i][3]
if b_num == big:
print(list1[i][0])
else:
for i in range(n):
b_num = list1[i][5] + list1[i][6]
if b_num > big:
big = b_num
for i in range(n):
b_num = list1[i][5]+list1[i][6]
if b_num == big:
print(list1[i][0])
8、集合位置
# 算出以每个机器人为集合点所需要的能量,找到最低耗能
k = int(input())
list1 = []
for i in range(k):
list2 = list(map(int, input().split(' ')))
list1.append(list2)
little = 0
for i in range(k):
now = 0
for j in range(k): # 计算以每个机器人为集合点所需要的能量
if list1[i][0] >= list1[j][0]:
now += list1[i][0] - list1[j][0]
else:
now += list1[j][0] - list1[i][0]
if list1[i][1] >= list1[j][1]:
now += list1[i][1] - list1[j][1]
else:
now += list1[j][1] - list1[i][1]
if i == 0: # 找到最低耗能
little = now
elif now < little:
little = now
print(little)
总结:自己的代码还不够精炼,代码逻辑还存在部分问题,希望能和大家能讨论学习!