像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没有毫秒