您的位置:首页 > 编程语言 > Python开发

head first python 第二章代码

2017-02-17 22:13 369 查看
第二章代码

print_list(the_list,indent=False,level=0,out_file=sys.stdout)

这是一个递归方法,用为输出the_list 中的数据

the_list 输入要打印的数据类型,可以为任意

indent=False 是否打印缩进

level 打印缩进的级别,如the_list元素的缩进为0,the_list的自己元素中的list的元素缩进就为+1 就为1;如此递加

out_file=sys.stdout默认值为stdout,即输出在console窗口中。

流程图如下:



import sys
def print_list(the_list,indent=False,level=0,out_file=sys.stdout):

if(isinstance(the_list,list)):
#isinstance 运行时识别,判断变量“the_list”是否为一个list类型。
for each_item in the_list:
#this funciton takes one positional argument called "the list",which is any Python list()
if(isinstance(each_item,list)):
print_list(each_item,indent,level+1,out_file)
#判断each_item是否为list,如果是进行递归调用,并在‘t’后加+1
else:
if(indent):
for tab_stop in range(level):
print("\t",end='',file=out_file)
print(each_item,file=out_file)
else:
if(indent):
for tab_stop in range(level):
print("\t",end='',file=out_file)
print(the_list,file=out_file)


-

一 isinstance()

>>> help(isinstance)
Help on built-in function isinstance in module builtins:
isinstance(obj, class_or_tuple, /)
Return whether an object is an instance of a class or of a subclass thereof.

A tuple, as in ``isinstance(x, (A, B, ...))``, may be given as the target to
check against. This is equivalent to ``isinstance(x, A) or isinstance(x, B)
or ...`` etc.


二 range()

class range(object)
|  range(stop) -> range object
|  range(start, stop[, step]) -> range object
|
|  Return an object that produces a sequence of integers from start (inclusive)
|  to stop (exclusive) by step.  range(i, j) produces i, i+1, i+2, ..., j-1.
|  start defaults to 0, and stop is omitted!  range(4) produces 0, 1, 2, 3.
|  These are exactly the valid indices for a list of 4 elements.
|  When step is given, it specifies the increment (or decrement).
|  start
|
|  step
|
|  stop


range 是一个类。

range(10)返回的是0..<10的一个range实例,可以用for in遍历。

range(0,10,2)返回0..10并且以2为增量的一个range实例。

其中有两个函数

|  count(...)
|      rangeobject.count(value) -> integer -- return number of occurrences of value
|
|  index(...)
|      rangeobject.index(value, [start, [stop]]) -> integer -- return index of value.
|      Raise ValueError if the value is not present.


第一个函数统计某一个值在range中出现的次数,不在时返回0,有是返回数字。既然是range为什么会出现两次…有什么意义?

第二个函数返回value对应的索引位值,如果value不在range会抛出 ValueError异常,x is not in range

>>> item = range(2,10,2)
>>> index=item.index(9)
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
index=item.index(9)
ValueError: 9 is not in range
>>> index=item.index(8)
>>>
>>> print(index)
3


三 print

print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file:  a file-like object (stream); defaults to the current sys.stdout.
sep:   string inserted between values, default a space.
end:   string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.


end=”可以输出将多个值输出在一行

sys.stdout默认输出在console中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: