eight
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eight相关的知识,希望对你有一定的参考价值。
1、range():
下面这两种用法的结果是一致的
print(range(100).__iter__()) print(iter(range(100))) # <range_iterator object at 0x000001C62FCB8EF0> # <range_iterator object at 0x000001C62FCB8EF0>
2、eval()和exec()
由下例可以看出来eval和exec都可以将引号去掉,但是eval是有返回值的,exec没有返回值,只会输出None
print(eval(‘1,2,3,4‘)) # (1,2,3,4) print(eval(‘1+2-3+4‘)) # 4 print(exec(‘1+2-3+4‘)) # None exec("print(‘1+2-3+4‘)") # 1+2-3+4 eval("print(‘1+2-3+4‘)") # 1+2-3+4
3、compile 将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值
参数说明:
1. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。
2. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。
3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为‘single‘。
codel=‘for i in range(0,10):print(i)‘ compilel=compile(codel,‘‘,‘exec‘) exec(compilel) # 0 # 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9
#简单求值表达式用eval code1=‘1+2+3+4‘ compile=compile(code1,‘‘,‘eval‘) print(eval(compile)) # 10
#交互语句用single code=‘name=input("please input your name:")‘ compile=compile(code,‘‘,‘single‘) name # 运行结果 # Traceback (most recent call last): # File "C:/Pythonbc/课堂/内置函数.py", line 177, in <module> # name # NameError: name ‘name‘ is not defined
code=‘name=input("please input your name:")‘ compile=compile(code,‘‘,‘single‘) exec(compile) name # please input your name:alex
4、iterator():下面代码中的两个print的效果是一样的,都是调用生成器,并从其中取值。
iterator=iter(range(100)) print(iterator.__next__()) # 0 print(next(iterator)) # 1
5、dir():判断某个数据类型中有什么用法。
print(dir([])) # [‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__delitem__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__gt__‘, ‘__hash__‘, ‘__iadd__‘, ‘__imul__‘, ‘__init__‘, ‘__init_subclass__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__reversed__‘, ‘__rmul__‘, ‘__setattr__‘, ‘__setitem__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘append‘, ‘clear‘, ‘copy‘, ‘count‘, ‘extend‘, ‘index‘, ‘insert‘, ‘pop‘, ‘remove‘, ‘reverse‘, ‘sort‘]
查看某数据类型的用法有3种:
1、ctrl +鼠标左键单击:这是pycharm提供的方法
2、help:会查看到所有的方法以及它的使用方法,但是不知道用法
3、dir:查看到的只是方法名,这个方法适用于查看某方法是否在这个数据类型中
6、callcble():
def func():pass a=1 print(callable(a)) # False 不可以调用 print(callable(print)) # True 可以调用 print(callable(func)) # True 可以调用
7、import():
用法:import+模块名
import time # 时间
import time for i in range(0,101,2): time.sleep(0.1) char_num = i//2 #打印多少个‘*‘ per_str = ‘\\r%s%% : %s\\n‘ % (i, ‘*‘ * char_num) if i == 100 else ‘\\r%s%% : %s‘%(i,‘*‘*char_num) print(per_str,end=‘‘, flush=True) #100% : ************************************************** #这是一个进度条的代码,调用time模块来调节代码运行的速度
import os # 操作系统
8、文件操作方法:open()
f=open(‘文件名‘,‘w‘,encoding=‘utf-8‘)
打开模式:r、w、a、rb、wb、ab
编码:utf-8/gbk
9、buffering(缓存)
10、hash(哈希)
print(id(1)) # 1779414080 print(id(2)) # 1779414080 print(hash(‘hdhshd‘)) # 7061084334364224280 print(hash(123445)) # 123445 print(hash((1,2,3,4))) # 485696759010151909
相同的内容的哈希结果是相同的
可用于:1、数据的存储和查找;2、模块:hashlib
判断一个数据类型是否可以hash,在一个程序执行过程中,对同一个值的hash的结果总是不变的;多次执行,对同一个值的hash结果可能改变。
11、 print():
def print(self,*args,sep=‘ ’,end=‘\\n‘,file=None)
print(1,2,3,4,sep=‘/‘) # 1/2/3/4 print(1,2,3,4,sep=‘*‘) # 1*2*3*4 print(1,2,sep=‘,‘) # 1,2
其中sep在print中默认为以空格来分隔,且在结尾的时候是有一个end的默认参数,传的是\\n(换行符)
print(‘abc\\n‘) print(2) # abc # # 2
在print中file的默认值是None,可以自己设定一个文件,如下所示,文件中存入了abc
f=open(‘a‘,‘w‘) print(‘abc\\n‘,file=f) # abc被写入了文件中 print(2) # 2
进度条:其中\\r:不论运行了多少,都要将光标移到最前面,相当于seek(0)。
import time for i in range(0,101,2): time.sleep(0.1) char_num=i//2 per_str = ‘\\r%s%%:%s\\n‘ % (i, ‘*‘ * char_num) if i == 100 else ‘\\r%s%%:%s‘ % (i, ‘*‘ * char_num) print(per_str,end=‘‘,flush=True) # 100%:**************************************************
12、 bool:只有True和False两个值;可以与int、str之间之间相互转换
print(bool(‘‘)) # False print(bool(0)) # False print(bool(‘a‘)) # True print(bool(1)) # True
13、int:整型,可以与bool、str之间相互转换
print(int(False)) # 0 print(int(True)) # 1
14、float:浮点型(可以理解为带小数点的数据)
15、abs:计算绝对值
print(abs(-24)) # 24
16、divmod:计算,并且返回除数和余数
print(divmod(35,4)) # (8,3)
17、round:保留小数点的位数,可自定义 round(number,ndigits)
print(round(3.1415926,3)) # 3.142
18、pow:幂运算
print(pow(2,2)) # 4 print(pow(2,2,2)) # 0 print(pow(2,2,3)) # 1
19、sum:计算数据的和
print(sum([1,2,3,4,5,6])) # 21
20、min:比较数据的大小,返回最小值min(iterable,key,default)
t=(-25,31,6,8) print(min(t)) # -25 print(min(t,key=abs)) # 6 print(min((),default=0)) # 0
21、max:比较数据的大小,返回最大值max(iterable,key,default)
t=(-25,31,6,8) print(max(t)) # 31 print(max(t,key=abs)) # 31 print(max((),default=0)) # 0
22、list:列表,以[‘列表中的内容‘]的形式表现出来,可以对列表内的元素进行增删改查,是可迭代对象,可强制转换成元组tuple(list)
23、tuple:元组,以(‘元组中的内容‘)的形式表现出来,是可迭代对象,但元组内的元素不可变,可强制转换成列表list(tuple)
24、reversed:返回的是迭代器,不改变原来的列表,在内存中额外开辟一个新的空间来存储新的序列迭代器,这样比较占内存,但是并不是在原来的列表上进行修改,这样保留了原来的列表中的内容。
25、reverse:返回的值是None,是在原列表的基础上对列表进行修改的,虽然节省了内存空间,但是改变了原列表中的内容。
26、bytes:
print(bytes(‘ab‘,encoding=‘utf-8‘)) # b‘ab‘
26、ascii:只要是ascii码中的内容就打印出来,如果不是就转换成\\u
print(ascii(2)) # 2 print(ascii(‘a‘)) # ‘a‘ print(ascii(‘哇哈哈‘)) # ‘\\u54c7\\u54c8\\u54c8‘
27、repr:用于%r格式化输出
print(repr(2)) # 2 print(repr(‘wahaha‘)) # ‘wahaha‘ print(repr(2+4)) # 6 print(repr(‘q‘+‘a‘)) # ‘qa‘
28、locals:局部变量,作用域根据locals的使用地方来确定其使用范围。
29、globals:全局变量,可在函数中使用globals来改变函数的使用范围,但最好不要用,在使用globals改变变量的值的同时,全局变量中的变量值也会同时发生改变。
30、next:迭代器包含有用法。
31、iter:可迭代对象同时拥有next和iter用法。
32、callable:判断是否为可迭代对象
def func():pass a=1 print(callable(a)) # False print(callable(print)) # True print(callable(func)) # True
33、id:可以很快的找到某数据的存储地址
print(id(1)) # 1888793664 print(id(2)) # 1888793696
以上是关于eight的主要内容,如果未能解决你的问题,请参考以下文章
CodeForces - 550C Divisibility by Eight