扫雷: map函数 :a=map(int,input().split()) list(a) 方向数组 print(,end=" ")
一大哥写的题解有注解
import os
import sys
# 请在此输入您的代码
# 大体思想是开两个数组,一个放输入的样例 一个放vis标记数组,然后遍历样例,
# 如果碰到雷,就在标记数组把这个位置标为9.然后把这个位置相邻的八个位置+1
# 由于不是雷的位置周围最多有八个雷,所以那些位置标记不会超过8 不会和9冲突
n,m = map(int,input().split())
tu = []#用来存输入
for i in range(n):#存进去
tu.append(list(map(int,input().split())))
vis = [[0 for j in range(m)]for i in range(n)]#写一个与tu行数和列数都一样的标记数组
dir = [(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1)]#写一个方向数组
for i in range(n):#遍历整个tu
for j in range(m):
if tu[i][j]==1:#如果这个位置是有雷
vis[i][j]=9#就将标记数组标记为9
for x in dir:#然后对周围八个位置进行检查遍历
xi = i +x[0]
xj = j +x[1]
if 0<=xi<=n-1 and 0<=xj<=m-1:#筛选八个位置中不出界的位置
if vis[xi][xj]!=9:#如果这个位置不是9
vis[xi][xj]+=1#就将这个位置+1 表示周围有一个雷了
# #位置上的数会不断累加,而且最多不会超过8 因为最多只有周围八个有雷 所以vis标记
# 的9和这个不会冲突
for i in range(n):#循环遍历输出
for j in range(m):
print(vis[i][j],end=' ')
print()
明明的随机数:list和set的区别,set里无重复的成分
n = int(input())
lis = list(set(map(int, input().split(" "))))
lis.sort()
print(len(lis))
print(*lis) # *的解包操作
灌溉:2次列表的命名顺序 先m后n dir的方位列表
n,m=map(int,input().split())
t=int(input())
lst=[]
vis=[[0]*m for i in range(n)]
dir=[(0,1),(0,-1),(1,0),(-1,0)]
cnt=t
def fun(x,y):
global cnt
vis[x][y]=1
for i,j in dir:
nx,ny=x+i,y+j
if nx<0 or nx>=n or ny<0 or ny>=m:
continue
if vis[nx][ny]==0:
cnt+=1
vis[nx][ny]=1
for i in range(t):
a,b=map(int,input().split())
x,y=a-1,b-1
fun(x,y)
print(cnt)
绝对值函数:abs()
串的处理
"""
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
把每个单词的首字母变为大写。
把数字与字母之间用下划线字符(_)分开,使得更清晰
把单词中间有多个空格的调整为 1 个空格。
"""
sequence = input()
# 把单词中间有多个空格的调整为 1 个空格。
sequence = ' '.join(sequence.split())
# 把每个单词的首字母变为大写。
words = sequence.split()
sequence = ' '.join(word[0].upper() + word[1:] for word in words)
# 把数字与字母之间用下划线字符(_)分开,使得更清晰
result = []
for char in sequence:
if result and char.isdigit() and result[-1].isalpha():
result.append('_')
elif result and char.isalpha() and result[-1].isdigit():
result.append('_')
result.append(char)
print(''.join(result))
幸运数字:int(h,16) 二进制转换
import os
import sys
# 请在此输入您的代码
i = 0
count = 0
def add(num): #定义函数,用来计算二进制,八进制,十进制数的和
lst = []
for j in num:
lst.append(int(j))
return sum(lst)
while i >= 0:
i += 1
if count < 2023:
two = bin(i)[2:] #取对应二进制的数
eight = oct(i)[2:] #取对八进制的数
sixteen = hex(i)[2:] #取对应十六进制的数
lst1 =[]
for j in sixteen:
lst1.append(int(j,16))
if i % add(two) == 0 and i % add(eight) == 0 and i % sum(lst1) == 0 and i % add(str(i)) == 0: #用来判断是否满足题目条件
count += 1
# print(i)
lst1 = []
else:
break
print(i-1)
二进制的转换
def my_bin(n):
res = []
while n != 0:
res.append(str(n & 1))
n = n >> 1
res.reverse()
return "".join(res)
n = 10
n = my_bin(n)
print(n)
sum(map) 迭代器
num = 12345
result = sum(map(int, str(num)))
print(result)
str(num)
12345
"12345" map(int, "12345")int[1, 2, 3, 4, 5] sum([1, 2, 3, 4, 5])
15