习题39
程序思路:一个字符串/使用split获取一个包含字符串中单词的列表/键入添加元素列表//
将添加元素列表的最后一个元素增加至字符串列表,循环知道长度为10//
打印第二个和最后一个元素/在元素间插入空格,在第四个和第五个元素之间插入#
知乎上的一些答案对面向对象的解释很生动通俗。和面向过程是相对性的,解决一定的复杂性。
class:类,把具有相同属性和方法的对象可以归为一类,定义出的具体作为对象实例。拥有属性(类本身的特性)和功方法(类所能实现的行为)
class xxx(xxxx):#可继承父类,拥有其相应的属性和方法
def _init_(self):#构造函数,初始化各对象的属性,默认self这个参数代表类定义的对象本身,并放在第一位
pass
def _del_(self)#析构函数,在程序退出时调用的,删除成员数据
pass
dir() 是 Python 提供的一个 API 函数,自动寻找一个对象的所有属性,而something是class的一个实例。S所以 dir(something)中肯定包含了class类属性,先暂时理解这么多。
函数式编程:对需达到的目的的描述,而不是讲为了达到目的的这个过程。
命令式编程:要做什么事情,你得把达到目的的步骤详细的描述出来,然后交给机器去运行
现在还是一个很浅显或者片面的认识,留坑。
习题40
容器型数据结构:字典(dictionary)
python中为dict,有些语言为hash
list:可以通过数字找到列表的元素
dict:通过任何东西找到元素,不只是数字。不管是什么,都可以将一个物件与另一个东西关联。
程序思路:
建立一个cities字典,原有三个含有对应物件的元素,又增加两个\定义一个寻找城市函数\\
在cities字典里新建一个元素,索引为_find,元素值为执行寻找城市函数的返回值,现在这个函数还没有参数\\
True开始了一个无限循环直到输入内容为空时终止程序。循环内容是调用寻找城市函数,\\
如果输入内容state在cities这个字典中,将state索引到的cities元素返回至新增的_find索引元素\\
cities[_find]这个元素赋给另一变量city_found并且打印出来。这两行内容为一次循环。
学到了一个多行加注释的方法,目前第三种没有成功。
1.用 一对""" 括起来要注释的代码块。
2.用一对'''括起来要注释的代码块。
3.选中要注释的代码,按下ctrl+/注释。
2.用一对'''括起来要注释的代码块。
3.选中要注释的代码,按下ctrl+/注释。
可变参数:*args表示任何多个无名参数,它是一个tuple;
**kwargs表示关键字参数,它是一个dict
同时使用*args和**kwargs时,*args参数必须列在**kwargs前
dict一些感觉可能会用到的东西:
dict(**kwargs) -> new dictionary initialized with the name=value pairs
in the keyword argument list. For example: dict(one=1, two=2)
in the keyword argument list. For example: dict(one=1, two=2)
d[k] = v
__repr__(self, /)
Return repr(self). repr()出来的值是给python看的,可以通过eval()重新变回一个Python对象???
Return repr(self). repr()出来的值是给python看的,可以通过eval()重新变回一个Python对象???
__len__(self, /)
Return len(self).
*__new__(*args, **kwargs) from builtins.type
Create and return a new object. 还不会用
*__sizeof__(...)
D.__sizeof__() -> size of D in memory, in bytes#dict object has no attribute 'sizeof'
clear(...)
D.clear() -> None. Remove all items from D.
copy(...)
D.copy() -> a shallow copy of D
D.copy() -> a shallow copy of D
get(...)
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None
keys(...)
D.keys() -> a set-like object providing a view on D's keys
values(...)
D.values() -> an object providing a view on D's values
pop(...)
D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised
D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised
popitem(...)
D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty.
D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty.
上边我执行popitem时也不是按顺序出来的,因为字典根据字符串选择存储位置,输出时也是遍历整个表,就不能够保证顺序。
然后是for 循环items()