test
# print(-14/4) # print("ab"+"c"*2) # # print(('1',1,2,'2')[1]>1) # # dict_data= {'data1':1,'data2':2} # dict_data[0]=1 # print(dict_data) # # x = [1,2,3] # print(id(x)) # x = 3 # print(id(x)) print() """ 从键盘接收一个十一位的数字,判断其是否为尾号 5 连(最后5个数一样)的手机号。 规则:第 1 位是 1, 第二位可以是数字 358 其中之一, 后面 4 位任意数字, 最后 5 位为任意相同的数字。 例如:18601088888、13912366666 则满足。 注意:不满足的输出“false”,满足要求的输出“true”。 """ # number = list(input('请输入一个11位数的数字:')) # print(number) # # if len(number) == 11 \ # and number[0] == '1' \ # and number[1] in ['3', '5', '8'] \ # and ''.join(number[2:6]).isdigit() \ # and len(set(number[6:11])) == 1: # print('true') # else: # print('false') """ 一个球从 100 米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。 求它在第十次落地时,球共经过多少米? 第十次反弹多高? """ # # 定义一个容器用于存储每一个落地经过的高度 # jinguo_height = [] # # 定义一个容器用于存储每一次反弹的高度 # fandan_height = [] # # 初始高度 # start_height = 100.00 # for i in range(1, 11): # # i 控制的是落地的次数 # if i == 1: # jinguo_height.append(100) # else: # jinguo_height.append(start_height * 2) # # 每一次落地后初始高度减半 # start_height /= 2 # fandan_height.append(start_height) # # print(jinguo_height) # print('经过的总长',sum(jinguo_height)) # 经过的总长 299.609375 # print(fandan_height) # print('第十次反弹高度:',fandan_height[-1]) # 第十次反弹高度: 0.09765625 """ 判断一个整数是否为“水仙花数”。所谓“水仙花数”是指一个三位的整数, 其每个单独数字的立方和等于该数本身。例如:153 是一个“水仙花数”, 例如 153=1**3+5**3+3**3。 如果是水仙花数就输出YES,否则就输出No """ a = 0 num = input('请输入一个三位数:') for i in num: a += int(i) **3 if a == int(num): print('YES') else: print('No')
请输入一个三位数:120
No进程已结束,退出代码0
使用迭代器取数据
from collections.abc import Iterator,Iterable nums = [1, 2, 3] # 可迭代对象 nums = iter(nums) # 了迭代器 print("nums", isinstance(nums, Iterable)) # 判断是否是可迭代对象 print("nums", isinstance(nums, Iterator)) # 判断是否是迭代器 # 取出迭代器的数据 num1 = next(nums) print(num1) num1 = next(nums) print(num1) num1 = next(nums) print(num1) # num1 = next(nums) # print(num1)
C:\Users\LENOVO\AppData\Local\Programs\Python\Python39\python.exe C:\Users\LENOVO\PycharmProjects\pythonProject\day15三器一闭与试卷讲解\使用迭代器取数据.py
nums True
nums True
1
2
3进程已结束,退出代码0
判断数据是否可以迭代
from collections.abc import Iterable print(isinstance([], Iterable)) print(isinstance({}, Iterable)) print(isinstance((1,), Iterable)) print(isinstance(set(),Iterable)) print(isinstance('abc', Iterable)) print(isinstance(100, Iterable)) print(isinstance(range(1,10), Iterable))
True
True
True
True
True
False
True进程已结束,退出代码0
生成器
def intNum(): print("开始执行") for i in range(5): yield i # generator print("继续执行") num = intNum() print(num) # print(num.__next__()) # print(num.__next__()) # print(num.__next__()) # print(num.__next__()) # print(num.__next__()) # for i in num: # print(i)
<generator object intNum at 0x0000014D61AD9510>
进程已结束,退出代码0
自定义迭代器
from collections.abc import Iterator, Iterable class MyNumbers: def __iter__(self): # 返回的是迭代器对象 self.a = 1 print(self, 'self') return self # 表示实例对象本身是自己的迭代器对象 def __next__(self): self.a += 1 return self.a myclass = MyNumbers() # 创建对象 # print(isinstance(myclass, Iterable)) # print(isinstance(myclass, Iterator)) myiter = iter(myclass) # 获取迭代器 # print(myiter) # print(isinstance(myiter,Iterator)) # print(isinstance(myclass,Iterator)) # print(next(myiter)) # print(next(myiter)) # print(next(myiter)) # print(next(myiter)) # print(next(myiter)) # for i in myiter: # print(i) # if i ==123123: # break """ 迭代器一定是可迭代对象 但是可迭代对象不一定是迭代器 """
<__main__.MyNumbers object at 0x0000024E0D3BAFD0> self
进程已结束,退出代码0
装饰器
# def hello(): # print("你好,装饰器!") # import datetime # # # def hello(): # print("当前时间:", datetime.datetime.now()) # print("你好,装饰器!") import datetime # def print_time(func): # print("当前时间:", datetime.datetime.now()) # func() # # # def hello(): # print("你好,装饰器!") # # # print_time(hello) import datetime def my_decorator(func): def print_time(): print("当前时间:", datetime.datetime.now()) func() return print_time # hello = my_decorator(hello) # hello() @my_decorator def hello(): print("你好,装饰器!") hello()
当前时间: 2023-08-21 21:48:09.119422
你好,装饰器!进程已结束,退出代码0
闭包
def outer(x): def inner(y): return x + y return inner print(outer(6)(5))
11
进程已结束,退出代码0