print
在python 中要打印有两种做法,带格式,和不带格式,但容易混淆。%s\%d\%f到底要怎么用?
首先,限定输出长度。在前面加数字:%3s %3d
注意%f,数字前面还有个点:%.3f
如何打印出来呢?
1. 先来个错误示范
2. 再来个貌似正确示范
3. 最后来个标准示范
4. 来个究极版
5. ok
出现了一个问题,从文件中import然后执行,和直接复制代码运行,结果不一样如图:
出错信息为什么不一样?
其次学习了PYTHON的函数写法:
要注意定义可变参数和关键字参数的语法:
*args是可变参数,args接收的是一个tuple;
**kw是关键字参数,kw接收的是一个dict。
以及调用函数时如何传入可变参数和关键字参数的语法:
可变参数既可以直接传入:func(1,2,3),又可以先组装list或tuple,再通过∗args传入:func(∗(1,2,3));
关键字参数既可以直接传入:func(a=1,b=2),又可以先组装dict,再通过∗∗kw传入:func(∗∗′a′:1,′b′:2)。
如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:
from collections import Iterable
isinstance(‘abc’, Iterable) # str是否可迭代
True
isinstance([1,2,3], Iterable) # list是否可迭代
True
isinstance(123, Iterable) # 整数是否可迭代
False
**如果要对list实现类似Java那样的下标循环怎么办?**Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:
for i, value in enumerate([‘A’, ‘B’, ‘C’]):
… print(i, value)
…
0 A
1 B
2 C
问答环节:
alist = [0, 'list', 1.5, True]
atuple = ('tuple', False, 1.2, 1)
aset = {0,1.1,True, 'set'}
for first, *middle, last in (alist, atuple, aset):
print(first)
print(middle)
print(last)
middle加*后可以运行,为什么不加会报错?too many values to unpack
为什么单独循环for first in alist
出来的结果就是一个一个?把alist atuple aset 长度都改为4个了,循环还是不对,为什么?