计蒜客python刷题笔记_Python刷题笔记
Python 刷题笔记
本⽂记录了我在使⽤python刷题的时候遇到的知识点。
选择、填空题
Python3 中,布尔型只有 True 和 False 两个值,但它们的值本质上是 1 和 0,因此它们可以和数字进⾏数学运算。 正确 e.g. True+1 == 2
在Python 3.X版本中,整除运算符产⽣的结果的数据类型可能为浮点型 正确 e.g. 33.2 // 3 == 11.2
要将3.1415926变成00003.14,如何进⾏格式化输出 "%08.2f"% 3.1415926
如果⼀句Python代码过长,可在⾏末写下符号"/",然后换⾏继续写 错误 分⾏是\或者()
字典的键可以是字符串常量也可以是整型常量,甚⾄还可以是列表 错误 列表不能作为字典的键
对于数字n,如果表达式 0 not in [n%d for d in range(2, n)]的值为True,则说明n是素数 正确
列出了所有的 n% 2~n的数字值 如果0不在就说明是素数
for循环结束后,循环变量i不存在,导致程序错误 错误!
i变量会是最后的值
表达式(i**2 for i in range(100))的结果是个元组 错误! 这是⼀个⽣成器 e.g.
(i**2 for i in range(10))
python基础代码实例
> for i in a:
... print(i)
0 1 4 9 16 25 ...
正则表达式'\d{5}'可⽤来检查字符串是否为5个数字字符组成的字符串 错误
可匹配5个数字的模式 但是⼀串可能有多个这样的⼦串?
下⾯不能严格匹配YYYY-MM-DD这样⽇期格式的正则表达式是
A.\d{4}-\d{2}-\d{2}
B.[0-9]-[0-9]-[0-9]
C.[0-9]{4}-[0-9]{2}-[0-9]{2}
D.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]
如果递归函数没有递归结束的语句,将会导致⽆穷递归,从⽽执⾏时出现“死循环” 错误
解释:递归是不断有函数进⼊栈,就像翻不完的书,不是死循环。
write⽅法⽤于把字符串写⼊⽂本⽂件并在最后添加换⾏符。 错误
如果⾸先以读模式打开⼀个⽂件,然后⽤seek⽅法把⽂件指针定位到⽂件的最后,再通过tell⽅法就可以得到⼀个⽂件的长度。 ** 正确**
异常 a undefined
def main():
a,b=eval(input())
try:
s=a/b
print(s)
except:
print("Divide 0!")main()
基本输⼊输出
sys.stdin 与input
adlines() or readline
前者⼀次读⼊多⾏,返回⼀个⾏列表,每个元素为输⼊的每⾏内容。
结束输⼊Linux: ctrl+d+enter, Windows: ctrl+z+enter
import sys
#实现和input⼀样的功能
print("please input something\n")
s = adline()
print(s, end='') #会读⼊\n, input不会
#⽂件作为整体的输⼊
for line in adlines():
if not line:
break
else:
print (line)
C:\> python test.py <
对输⼊结束的判断
sys.stdin
for lin in sys.stdin:
vertical row
input()
try:
...
except EOFError:
pass
运⾏脚本时传⼊参数
sys.argv
argv[0] 是被调⽤的脚本的⽂件全名或全路径,argv[1]和⼀会的就是传⼊的数据python filename.py 1,2,3 10
import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]
print(arg1, type(arg1), type(arg2))
1,2,3 str str
argparse
import argparse
parser = argparse.ArgumentParser(description='manual to this script')
parser.add_argument('--gpus', type=str, default = None)
parser.add_argument('--batch-size', type=int, default=32)
args = parser.parse_args()
print(args.gpus, type(args.gpus))
print(args.batch_size, type(args.batch_size))
D:\>python argv_test.py --gpus=0,1,2 --batch-size=20
0,1,2
20
Python语⾔基础
Python的浮点数常量也有⼗进制、⼆进制、⼋进制和⼗六进制等表⽰⽅式 X ⼗进制, 科学计数法
pow(x,y,z) -> x**y%z
type(1+8.0//4) == float 整除的结果取决于被除数和除数的类型
序列
列表
replace card battery雷诺只能通过切⽚访问列表中的元素,不能使⽤切⽚修改列表中的元素 错误
两个列表相加 newlist = [x+y, for x,y in zip(list1, list2)]
现有列表 k = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0],那么Python3解释器执⾏ k.insert(-2, 'b')后执⾏k[-2]的结果是 9 b插⼊在9的位置 9 0 向后移动
元组
创建只包含⼀个元素的元组时,必须在元素后⾯加⼀个逗号,例如 a = (3,)正确
如果是a = (3) 或者a = ('a') 类型分别为int和str,只有⼀个元素的元组⼀定要加上,
列表可以是元组内的元素,可以改变元组内列表的值
字典
合并两个字典
a={'a':1,'b':2}
b={'a':3,'c':4}
a.update(b)
c = dict(a,**b)
字典中的“键”必须是可哈希对象,不能是列表,可以是元组,字符串,数值
集合
集合中的元素必须是不可变类型,即列表不可以是集合内的元素
选择与循环
ascii码是源码还是补码a = range(100) 哪些操作合法:a[-3],a[2:13], a[::3]
a[a  c] range(a, b, c)
s
字符串与正则表达式
字符串
要⼀次去掉字符串中的 , . 等符号,可以使⽤maketrans和translate⽅法
'GUN's Not %s %%' % 'UNIX' >> "GUN's Not UNIX %"
表达式'a' + 1 的值为 'b' 错误
chr(ord('a') + 1)
s
正则
假设re模块已成功导⼊,并且有pattern = repile('^'+'\.'.join([r'\d{1,3}' for i in range(4)]) + '$'),那么表达式pattern.match('192.168.1.103')的值为None
'back' match 'backup'√ match 'text.back' X
函数
在函数中修改传⼊参数的值
整数,浮点数等不会因函数内变化⽽变
列表对象在id不变的时候会影响到外部的
输出结果 F f C ls是全局变量
ls = ["F", "f"]
def fun(a):
ls.append(a)
returncpu socket
fun("C")
print(ls)
输出结果10 None ss⽐函数迟声明 函数内的ss为局部变量
def hub(ss, x=2.0, y=2.0):
ss += x*y
ss = 10
print(ss, hub(ss, 3))
对于组合数据类型的全局变量,如果在函数内部没有被真实创建的同名变量,则函数内部不可以直接使⽤并修改全局变量的值 错误 类似上述1 的情况
Python函数⽀持可变数量的参数,实参⽤“ *参数名 ”表⽰ 错误 形参⽤*参数名表⽰
⾯向对象
中易广告联盟程序授权是几年的⽂件
参数encoding是指明对⽂件编码,仅适⽤于⽂本⽂件。如果不明编码⽅式,默认是使⽤preferredencoding()函数返回的编码⽅式。
seek(offset, from)⽅法
offset ⽂件指针偏移量, from: 0 ⽂件开头 1当前位置 2⽂件末尾 默认为0 可以通过seek(0,2)定位到⽂件末尾
⽤python删除⽂件和⽤linux命令删除⽂件
异常
Python中,对于代码中的每个try,必须⾄少有⼀个except与它匹配 错误可以只有try finally
未分类
常见数学
3.5题⽬※
因数 i%n ==0 且n!=i n!=1 n是i的因数
素数 ⼤于1的⾃然数中,除了1和它本⾝以外不再有其他因数的⾃然数。
完全数
真因⼦
完全平⽅数: 2 * 2 = 4 8 * 8 =64
互质:互质是公约数只有1的两个整数,叫做互质整数。公约数只有1的两个⾃然数,叫做互质⾃然数,后者是前者的特殊情形。
完数
⽔仙花数
欧⼏⾥得(辗转相除法)求两个正整数a, b的最⼤公约数
1)如果a
快速判断是否是素数
原理:所有⾃然数可以⽤集合A = { 6n, 6n+1, 6n+2, 6n+3, 6n+4, 6n+5 }表⽰,其中 n >= 0,显然,⼦集B = {6n, 6n+2, 6n+3,
6n+4}内的元素都不是素数,所以只有6n+1和6n+5可能是素数,素数⼀定可以⽤6n+1和6n+5其中的⼀个形式表⽰,即⼤于等于5的素数与6的倍数相邻
判断⼀个数num是否是素数时,需要判断num是否有除1和⾃⾝之外的因⼦。这时只需要判断x是否是num的因⼦,其中1 < x <=
int(sqrt(num)),⽽x的范围⼜可以⽤集合{ 6i, 6i+1, 6i+2, 6i+3, 6i+4, 6i+5 }表⽰。当num与6的倍数相邻时,num才可能是素数,因为num(奇数)和{6i, 6i+2, 6i+3, 6i+4}(偶数)互素,也就是{6i, 6i+2, 6i+3, 6i+4}不可能是num的因⼦,此时只需判断x = 6i+1和x = 6i+5是否是num的因⼦即可,如果都不是,则num是素数。
————————————————

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。