,46,47,48,49
昨天写了忘了保存了 呜呜
第四十六讲:
0:类中类
1:__get__、__set__ 和 __delete__
2:竟然都会
3:20,0
4:test.x是一个类的实例对象
5:
class MyDes: def __init__(self,value,str1): self.value = 10 self.str1 = str1 def __get__(self, instance, owner): print('正在获取变量'+self.str1) return self.value def __set__(self, instance, value): print('正在修改变量:'+self.str1) self.value = value def __delete__(self, instance): print('噢~这个变量没法删除~')
6:
class Record: def __init__(self,value,str1): self.value = value self.str1 = str1 self.f = open('record.txt','a') def __get__(self, instance, owner): self.f.write('%s变量于北京时间%s被读取,%s=%s\n'%(self.str1,time.ctime(),self.str1,str(self.value))) return self.value def __set__(self, instance, value): self.value = value self.f.write('%s变量于北京时间%s被修改,%s=%s\n'%(self.str1,time.ctime(),self.str1,str(self.value))) def __delete__(self, instance): print('噢~这个变量没法删除~') class Test: x = Record(10, 'x') y = Record(8.8, 'y') test = Test() print(test.x) test.y = 'dsads'
7:
import pickle class MyDes: saved = [] def __init__(self,str1): self.str1 = str1 self.filename = str1+'.pkl' def __get__(self, instance, owner): if self.str1 not in MyDes.saved: raise AssertionError("还未赋值") with open (self.filename,'rb') as f: value = pickle.load(f) return value def __set__(self, instance, value): with open (self.filename,'wb') as f: pickle.dump(value,f) MyDes.saved.append(self.str1) def __delete__(self, instance): os.remove(self.filename) MyDes.saved.remove(self.str1) class Test: x = MyDes('x') y = MyDes('y') test = Test() test.y = 'dsads' print(test.y)
第四十六讲!!!!!!!
0: 大概是 序列 字典 元组? 对不起 没有字典 是字符串
1:__setitem__ __delitem__
2:__reversed__
3:__len__
4:__getitem__ __setitem__ __delitem__
5:因为很自由
6:
下面的是错误的 ,,我忽略了字典键值是不变的这一事实。
class CountList: def __init__(self, *args): self.values = [x for x in args] self.count = {}.fromkeys(range(len(self.values)), 0) def __len__(self): return len(self.values) def __setitem__(self, key, value): if key<len(self.values): self.values[key] = value else: print("越界访问") def __delitem__(self, key): if key<len(self.values): del self.count[key] self.values.remove(self.values[key]) else: print("越界访问") def counter(self,index): return self.count[index] def append(self,value): self.values.append(value) self.count[len(self.values)] = 0 def pop(self): if len(self.values) ==0: print('抱歉 空的') else: value = self.values[len(self.values)-1] self.values.remove(self.values[len(self.values)-1]) del self.count[len(self.values)-1] def reverse(self): new_count = {} self.values = self.values[::-1] for i in range(len(self.count)): new_count[len(self.count)-1-i] = self.count[i] self.count = new_count def __getitem__(self, key): self.count[key] += 1 return self.values[key]
下面是答案
class CountList(list): def __init__(self, *args): super().__init__(args) self.count = [] for i in args: self.count.append(0) def __len__(self): return len(self.count) def __getitem__(self, key): self.count[key] += 1 return super().__getitem__(key) def __setitem__(self, key, value): self.count[key] += 1 super().__setitem__(key, value) def __delitem__(self, key): del self.count[key] super().__delitem__(key) def counter(self, key): return self.count[key] def append(self, value): self.count.append(0) super().append(value) def pop(self, key=-1): del self.count[key] return super().pop(key) def remove(self, value): key = super().index(value) del self.count[key] super().remove(value) def insert(self, key, value): self.count.insert(key, 0) super().insert(key, value) def clear(self): self.count.clear() super().clear() def reverse(self): self.count.reverse() super().reverse()
答案就硬作弊呗
第四十八讲:
0:就是可以逐个访问的一个对象
1:是吧
2:不行
3: iter() 看报不报错
4: 报错 stopiteration
5:
a = iter(range(5)) while True: try : b = next(a) except StopIteration: break print(b)
6: 想不 出来 。。。。。。中午遇到了好可爱的妹妹 呜呜呜 不敢要联系方式
import datetime as dt class LeapYear: def __init__(self): self.now = dt.date.today().year def isLeapYear(self, year): if (year%4 == 0 and year%100 != 0) or (year%400 == 0): return True else: return False def __iter__(self): return self def __next__(self): while not self.isLeapYear(self.now): self.now -= 1 temp = self.now self.now -= 1 return temp leapYears = LeapYear() for i in leapYears: if i >=2000: print(i) else: break
7: 对不起 可是函数真的很简单
def MyRev(str1): str1_re = list(reversed(str1)) return str1_re myRev = MyRev("FishC") for i in myRev: print(i, end='')
class MyRev: def __init__(self,str1): self.str1 = str1 self.index = len(self.str1) def __iter__(self): return self def __next__(self): if self.index == 0: raise StopIteration temp = self.str1[self.index-1] self.index -= 1 return temp
49讲:
0: 出错时 结束时 return时
1: 想暂停的地方暂停 下次造访这个函数时 从暂停的地方运行
2:不行把 错 !可以 实际上 生成器就是迭代器实现的
3:return 嘛
4:保存函数进度?防止重复执行?
5:下次执行函数时还能从头来
6:
def myRev(data): for index in range(len(data)-1, -1, -1): yield data[index]
7: sorry
import math def is_prime(number): if number > 1: if number == 2: return True if number % 2 == 0: return False for current in range(3, int(math.sqrt(number) + 1), 2): if number % current == 0: return False return True return False def get_primes(number): while True: if is_prime(number): yield number number += 1 def solve(): total = 2 for next_prime in get_primes(3): if next_prime < 2000000: total += next_prime else: print(total) return if __name__ == '__main__': solve()

浙公网安备 33010602011771号