像IP判断 这道题一个用例有多行:

输入由多行组成,每行是一个字符串,输入由“End of file”结束。 字符串长度最大为30,且不含空格和不可见字符

就需要写while True,但是不要只使用while True:还需要加上try,except。 其他的情况直接写主要代码,

while True:
	try:
	except:
		break

1.python的建立数组

f3=[ 1 for i in range(n)]
arr = [list(map(int, input().split())) for _ in range(row)]
#建立二维数组的简单方式

初始化都是12. 如果结果输出整数。必须按照这样规格输出,直接输出可能是小数

print('%d' % s)

3. map函数将输入的字符串分割并且转化成int列表,然后赋值给a,b

a,b=map(int,input().split())
print(a+b)

注意map的结果是迭代器,有时候还要转成list类型

另外:写代码input的时候要养成习惯,加上strip():

s=list(input().strip())
s.reverse()#这里的反转直接把s这个列表反转了,
#并不会返回任何值,所以不应该在join里面使用
ans="".join(s)
print(ans)

4. print 会自动在行末加上回车, 如果不需回车,只需在 print 语句的结尾添加一个逗号 , 并设置分隔符参数 end,就可以改变它的行为。直接输出print(n),最后是有一个空行的,加了end=“ ”没有空行,但最后有1个空格

>>>for i in range(0,6):
...     print(i)
... 
0
1
2
3
4
5
>>> for i in range(0,6):
...     print(i, end=" ")
... 
0 1 2 3 4 5

5.进制转化 将2,8,16进制数字转成10进制的int,x是str类型,base表示转化之前的进制2,8,16

class int(x, base)

将10进制数字转成2,8,16进制类型,注意这里的x是int不是str,转换后的2 8 16也没有前缀,“X”可以大写也可以小写,表示转换之后的字母是大写还是小写。

x = 1234
>>> format(x, 'b')
'10011010010'
>>> format(x, 'o')
'2322'
>>> format(x, 'x')
'4d2'

6./和//

>>> 54/2
27.0
>>> 54//2
27

所以如果需要整数int,最后再强制转换一下比较安全

取整除 - 返回商的整数部分(向下取整)

>>> 9//2
4
>>> -9//2
-5

7.字符串 s[::-1]可以反转字符串

8.循环一般使用while,特殊遍历使用for,但此时的for不好使用下标9. python建立二维数组,先建立一个list,然后不断append新的list进去:

n=int(input())
arr=[]
for i in range(n):
    arr.append([1 for j in range(n)])#全部赋值为1,相当于nXn的二维数组

10. input().split()的结果是list类型,可以用来将数据的输入存储在list列表中

arr=input().split()

11. 快速建立nXm的二维数组

graph = [[0 for j in range(m)] for i in range(n)] # 空二维数组
graph=[[0]*m for i in range(n)]

12. 字符转ASCII码函数:ord(‘A’)–>64 ASCII码转字符函数:chr(64)–>A

13.判断是不是闰年 当以下情况之一满足时,这一年是闰年: 年份是4的倍数而不是100的倍数; 年份是400的倍数。

14.datetime的timedelta 类构成:计算2个datetime对象的差值; 有7个可选参数,默认值为0: datetime.timedelta(weeks=0, days=0, hours=0, minutes=0, second=0, microsecond=0, milliseconas=0); 有3个只读属性:1)timedelta.min:负数最大时间差;2)timedelta.max:正数最大时间差;3)timdelta.resolution:两个时间的最小差值;

15. 如果要反过来遍历列表,那么应该是有s[倒数第二位索引::-1]

s=[0,1,2,3]
>>> s[3:-1-1]
[]
>>> s[3::-1]
[3, 2, 1, 0]

对于range来说,使用range(len(s1)-1,-1,-1)可以倒着遍历全部

range(len(s1)-1,-1,-1)

16.python的被引用的函数需要在主函数之前,同样,函数必须放在引用语句之前。

17. 输入的字符串转成列表 s.reverse()#这里的反转直接把s这个列表反转了, 并不会返回任何值,所以不应该在join里面使用

list(input())

18. print输出多个变量用括号括起来,没有逗号

str = "the length of (%s) is %d" %('runoob',len('runoob'))
>>> print(str)
the length of (runoob) is 6

19. 列表转成字符串 “”.join(s_list) 就能转回字符串,

20. str.upper str.lower可以转大小写

21. print的sep函数可以分割字符,如果为空,那么就相当于挨个输出,如果没有sep,每个变量之间默认是空格

print("1","2","3")
1 2 3
>>> print("1","2","3",sep="")
123

22.

r=[]
b=["A"]
r.append(b)
r.append(b)
b[0]="B"
print(r)

这里b引用的是r列表,改变b的话也会改变b

[[‘B’], [‘B’]]

浅拷贝只拷贝顶层数据,在涉及到引用变量的时候深拷贝和浅拷贝就会有出入。 浅拷贝包括`

arr=list.copy(num)
arr=num.copy()#需要import copy
arr=copy.copy(num))#需要import copy

深拷贝包括:

import copy
arr=copy.deepcopy(num)

点击参考资料深拷贝和浅拷贝 在Python中,按更新对象的方式,可以将对象分为2大类:可变对象与不可变对象。可变对象: 列表、字典、集合。所谓可变是指可变对象的值可变,身份是不变的。不可变对象:数字、字符串、元组。不可变对象就是对象的身份和值都不可变。新创建的对象被关联到原来的变量名,旧对象被丢弃,垃圾回收器会在适当的时机回收这些对象。

22.stip()删除字符串2边的字符,还有strip()和lstrip()23.itertools库中的函数可以返回字符串的排列组合参考链接24. 当样例输入这样的时候: 样例输入 10 5105 19400 27309 19892 27814 25129 19272 12517 25419 4053不要使用map算子,因为input()就是接收到回车结束

n=int(input())
arr=[int(input()) for i in range(n)]

25. 注意排序默认是升序,但是reverse是False,如果想降序,需要将reverse设为True。

list.sort(cmp=None, key=None, reverse=False)

26. list和str的互转注意join()里面只能放列表list,join不能连接2个字符串

s="abcd"
list1=list(s)

arr=["a","b","c"]
s="".join(a)

27.将列表的字符串全部变成小写的map写法

s=["Abc","abc"]
s=list(map(lambda x:x.lower(),s))

[‘abc’, ‘abc’]

27. list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

28.python打开文件并读取字符,注意这里的字符中带有\n,所以需要分割字符串

f = open("C:\\Users\\zzl261004\\Desktop\\22.txt","r")#设置文件对象
str1 = f.read() #将txt文件的所有内容读入到字符串str中
str1=str1.split("\n")[0:30]
f.close() #将文件关闭

注意如果有文档中有中文,这段代码就会出错

f = open("C:\\Users\\zzl261004\\Desktop\\22.txt","r")#设置文件对象
arr = f.readlines() #将txt文件的所有内容读入到字符串str中
print(arr)#这里是列表了
for line in arr:
    s = line.split()
    print(s)

29. python怎么定义类。

[菜鸟教程](https://www.runoob.com/python3/python3-class.html)https://www.runoob.com/python3/python3-class.html

30. 1、最大公约数2、最小公倍数公式:lcm = a*b/gcd(a, b)

import math
a=math.gcd(4,8)
b=4*8/a

31. 注意有时候把字符串的32.3转成浮点型,不要写成int,而应该写float

32. 注意python的str没有reverse功能,如果需要反转可以用s[::-1]进行输出。

s=list(input())
s.reverse()#这里的反转直接把s这个列表反转了,
#并不会返回任何值,所以不应该在join里面使用
ans="".join(s)
print(s)

下面的也可以

l = list(s)
result = "".join(l[::-1])

33. 注意字典查找键最好用get来查找,如果找不到返回None,不要用dict[“key”]来找,如果找不到会报错的。删除键用del

34. python的输出".2f"%num,可以四舍五入,但是存在bug,这个不用管。并且还会补零

print("%.3f"%2.5457)
2.546

print("%.2f"%2.545)
2.54

print("%.3f"%2.56)#补零
2.560

但是round就不存在这种情况了。round不可以补零,所以最好不要用。

print(round(2.56,3))
2.56

35.python的join这里不要写成"".join(arr[0]).join(arr[1]).join(arr[2])。 使用join的时候最好只使用一次,并且最前面字符是“”

36. sort(*, key=None, reverse=False) sorted(iterable, key=None, reverse=False) 两者功能相似,参数设置相同,不同之处在于 sort() 是列表 List 的内置(built-in)方法,不需要复制原有列表,直接对列表进行操作,无返回值。消耗的内存较少,效率也较高。而 sorted() 是 Python 的内置函数,可操作任意可迭代的对象,并返回排序后的列表。当实际应用过程中需要保留原有对象时,使用 sorted() 函数较为适合。

37. 对于其他进制转成10进制,用到int 进制的转换,hex,oct,bin产生的结果都带有前缀,而format没有前缀。

a=12
print(hex(a))
print(oct(a))
print(bin(a))
print(format(a,"x"))
print(format(a,"o"))
print(format(a,"b"))
print(format(a,"d"))

0xc 0o14 0b1100 c 14 1100 12

38. 注意使用list之后相当于新建立了一个列表,改变原列表,不影响

a=[1,2,3]
>>> ans=[]
>>> ans.append(list(a))
>>> ans
[[1, 2, 3]]
>>> a[0]="1"
>>> ans
[[1, 2, 3]]

39. level[:]==level[::-1]: 判断列表是不是回文列表 最好不要用字符串,因为如果有负数,那么字符串不好分回文

40. 难点:注意list是可变元素,所以不能加入到set集合中,所以把list变成tuple加入到set中,dfs完了再把再把里面的元组变成list,然后把集合ans变成list注意这种情况下使用tuple元组,通常需要对原来的数组进行排序。

41."".join(temp),temp必须是字符串的列表

42.注意列表如果要当成队列来使用,应该是que.pop(0),不是pop(-1)43.注意dfs最后结束的判断条件不要写错了,是if row<0 or col<0 or row>=m or col>=n,不是==0

43. 由二叉树的一个重要性质:具有n个结点的完全二叉树的深度为[log2n]+1.(这是在根节点层次为1时,若为0,将+1去掉即可) log2n是以2为底n的对数 [log2n]为不大于log2n的最大整数

x 代表 度为2的结点 ,y代表叶子结点 ,x+1= y,即叶子节点等于度数为2的节点+144. 输出二维数组

for i in range(n):
    print(*arr[i], sep="")

输出一维数组

print(*arr, sep="")

45. 注意对于列表list来说没有find,只有index,但对于字符串来说有index和find。 find找不到的话会返回-1,index找不到会报错

46. round直接保留整数没问题,但是如果保留小数就有问题

microsecond是微妙,datetime没有毫秒