Python学习--Day13--杂记

Day13--杂记

🧸用字典映射代替switch case 语句:

# 方法 1
switcher = {
    0: 'Sunday',
    1: 'Monday',
    2: 'Tuesday'
}

print('方法1.请输入:')
day = int(input())
# day_name = switcher[day]  # 使用下标访问
day_name = switcher.get(day, 'Unknown') # 输入值若不存在,返回Unknown
print(day_name)


# 方法 2   使用函数方式
def get_sunday():
    return 'Sunday'


def get_monday():
    return 'Monday'


def get_tuesday():
    return 'Tuesday'


def get_default():
    return 'Unknown'


switcher1 = {
    0: get_sunday,
    1: get_monday,
    2: get_tuesday
}

print('方法2.请输入:')
day1 = int(input())
# day_name = switcher[day]  # 使用下标访问
day_name1 = switcher1.get(day1, get_default)()  # 输入值若不存在,返回Unknown
print(day_name1)

🧸列表推导式:

# 列表推导式

a = [1, 2, 3, 4, 5, 6, 7, 8]

# i*i == i**2,  i*i*i == i**3
b = [i*i for i in a]
print(b)    # [1, 4, 9, 16, 25, 36, 49, 64]

# 条件筛选 a列表中 >=5的数字,平方后放入b

b = [i**2 for i in a if i >= 5]
print(b)    # [25, 36, 49, 64]

# 集合set也可以被推倒
a = {1, 2, 3, 4, 5, 6, 7, 8}
b = [i**2 for i in a if i >= 5]
print(b)    # [25, 36, 49, 64]

b = {i**2 for i in a if i >= 5}
print(b)    # {64, 25, 36, 49}
# 同理 字典和元组也可以

🎈字典的列表推导式:

# 字典的列表推导式

students = {
    '曹操': 28,
    '刘备': 25,
    '孙权': 18
}

b = {key for key,value in students.items()}
print(b)    # {'刘备', '孙权', '曹操'}

# key, value 互换
b1 = {value: key for key, value in students.items()}
print(b1)   # {28: '曹操', 25: '刘备', 18: '孙权'}

🧸空字符串 和 判空

'''
None    空

从 类型,值 讲   None 不等同于 空字符串、空列表 0 False
'''

a = 0
b = ''
c = []
d = False

print(a == None)
print(b == None)
print(c == None)
print(d == None)
# ------输出------
# False
# False
# False
# False

print(type(None))   # <class 'NoneType'>

# 判空操作
def fun():
    return None

# a = fun()
a = []
if not a:
    print('T')
else:
    print('F')

if a is None:
    print('T')
else:
    print('F')

# 判空一般使用
'''
if a:
...
if not a:
'''

🧸注意误区:

🎈对象存在不一定是True:

# 对象存在不一定是True

# 对象默认是True 
class Test():
    pass


test = Test()
print(bool(test))   # True
if test:
    print('T')  # T
    
# -----------------------------------------------------
class Test1():
    def __len__(self):
        return 0


test1 = Test1()
print(bool(test1))   # False
if test1:
    print('T')  #
else:
    print('F')  # T

# 因为此时Test1() 返回值是0,所以test1的布尔值为False


# 类似的
class Test2():
    def __bool__(self):
        return False


test2 = Test2()
print(bool(test2))   # False
if test2:
    print('T')  #
else:
    print('F')  # T

🎈__len____bool__ 内置方法

class Test():
    def __len__(self):
        return True         # __len__函数可以返回 True or False


# 此时的打印输出结果取决于 __len__函数
print(bool(Test()))     # True
print(len(Test()))      # 1


class Test1():
    def __len__(self):
        return 8

    def __bool__(self):
        return False        # __bool__函数 不可以返回0 or 1


# 此时的打印输出结果取决于 __bool__函数
print(bool(Test1()))     # False
print(len(Test1()))      # 8

Python 基础与进阶到了这里就结束了
敬请期待 Python进阶与强化
QWQ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值