day15三器一闭与试卷讲解

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值