PYTHON自学笔记3包含一些出错问题

来源:互联网 发布:我的淘宝主页打不开 编辑:程序博客网 时间:2024/06/05 06:05

print
在python 中要打印有两种做法,带格式,和不带格式,但容易混淆。%s\%d\%f到底要怎么用?
首先,限定输出长度。在前面加数字:%3s %3d
注意%f,数字前面还有个点:%.3f

如何打印出来呢?
1. 先来个错误示范注意%s
2. 再来个貌似正确示范没了
3. 最后来个标准示范对的
4. 来个究极版这里写图片描述
5. ok
出现了一个问题,从文件中import然后执行,和直接复制代码运行,结果不一样如图:
直接运行
从文件导入

出错信息为什么不一样?

其次学习了PYTHON的函数写法:
要注意定义可变参数和关键字参数的语法:
*args是可变参数,args接收的是一个tuple;
**kw是关键字参数,kw接收的是一个dict。
以及调用函数时如何传入可变参数和关键字参数的语法:
可变参数既可以直接传入:func(1,2,3),又可以先组装list或tuple,再通过argsfunc((1,2,3))
关键字参数既可以直接传入:func(a=1,b=2),又可以先组装dict,再通过kwfunc(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)
  1. middle加*后可以运行,为什么不加会报错?too many values to unpack

  2. 为什么单独循环for first in alist
    出来的结果就是一个一个?

  3. 把alist atuple aset 长度都改为4个了,循环还是不对,为什么?

0 0
原创粉丝点击