杂记——python基础

40 阅读3分钟

from functools import reduce

def print\_grade (grade: int):
if grade > 85:
print("good")
else:
print("no good")

def greeting():
print("welcome")

# 打印1到n的数

def print\_num(n:int):
print(n)

    next_num = n -1

    if next_num > 0:
        print_num(next_num)

# lambda 表达式其实是在定一个匿名函数

# lambda 参数列表:表达式

f = lambda name: print(f'hello {name}')

if **name** == "**main**":
\# print\_num(10)
f("codeyu")
\# greeting()
\# print\_grade(90)
\# print\_grade(80)
serials = \[5000,8000,6000,10000]
result = list(map(lambda item: item \* 1.1, serials))
result\_filter = list(filter(lambda item: item > 6000, serials))
print(result,result\_filter)

    students = [
        ('jack',23),
        ('mary',21),
        ('liming',34)
    ]

    ages = list(map(lambda s: s[1],students))# 提取所有学生的年龄  map(function,list)
    ages_stu = list(filter(lambda s: s[1] > 22,students))
    print(ages,ages_stu)

    # filter,过滤掉不符合要求的数据,并生成一个新的集合,返回一个可迭代对象
    # filter(function,list)

    # reduce()对一个列表进行求解,并获得一个唯一的结果
    # reduce(function,list)
    # 求和
    nums = [2,3,4,5]
    print(reduce(lambda x,y: x+y,nums))
    # 列表解析:对一个列表进行操作生成新列表
    # 【输出表达式 for 元素 in 列表】

    nums1 = [2,3,4,5]
    print([item *item for item in nums1])
    # 带条件的列表过滤
    # 【输出表达式 for 元素 in 列表 if】
    print([a * a for a in nums1 if a > 3])

    # 字典数据类型:存放键值对数据。键唯一

    school = {
        "name": "tom",
        "age": 23,
        "like": ["game","study"]
    }
    # 根据key取值,根据get方法取值,直接使用key来进行修改,删除,del student['name']
    # print(school["name"])
    # print(school.get("name"))
    # 遍历:dict.items(), dict.keys(),dict.values()
    print(school.items())

    # 字典解析
    # {key: value for (key,value) in dict.items()}
    scores = {
        "tom":50,
        "wang": 56,
        "yu" : 90
    }
    new_scores = {key: int(val * 1.1) for (key,val) in scores.items() if val > 60}
    print(new_scores)
    # 字典合并 {**dict,** dict2}
    school_1 = {
        "name": "tom",
        "age": 23,
        "like": ["game","study"]
    }
    scores_1 = {
        "tom":50,
        "wang": 56,
        "yu" : 90
    }

    print({** school_1, ** scores_1})

    # set集合  元素不重复 ,无顺序{"tom","mary"},空集合用set()定义
    # 元素在不在集合中 e in set
    # set添加元素:add() 删除: remove()删除不存在的会报错    discard()不存在会忽略  pop()删除一个随机元素并返回删除元素
    # frozenset()不可修改集合
    # 遍历:for in  带索引 emunerate(set,1)
    #  集合运算:交集并集
    # 集合解析 {biaodashi for in if}
    # union() 并集,可以和可迭代对象如list  使用| 运算符实现,只能合并set
    set1 ={11,22,33}
    set2 = {33,44,55}
    print(set1.union(set2))
    print(set1 | set2)
    # 交集:intersection  &运算符
    print(set1.intersection(set2))
    print(set1 & set2)
    # 差集合 - 运算符
    print(set1.difference(set2))
    # 对称差集 ^ 运算符


    # 异常处理:try: 可能产生异常的代码 except: 出现异常的时候执行
    # else 没有异常执行
    # finally 有没有异常都会执行
    n = input("input a number: ")

    try: 
        ss = int(n)
        res = 10 / ss
        print(res)
    except ValueError as e:
        print("请输入一个整数:")
    except ZeroDivisionError as e:
        print("非0输入:")
    else:
        print("run successfully")
    finally:
        print("end")

    # 模块和包
    """
        模块:一个.py文件就是一个模块 可包含多个函数和类信息
        引入模块:from  ... import ...  as 别名、
        模块的搜索路径:
            当前路径
            环境变量中定义的路径pythonpath
            安装python时所配置的依赖路径
            搜索路径都被保存在sys.path变量中
        
            __name__变量:
                当执行一个程序文件时,__name__的值就是__main__
                当一个程序文件被其他文件引入时,__name__的值就是模块名
        
        包:
            包对应着文件夹
            每一个包文件夹下面需要一个__init__.py文件
            可以使用 from ... import ...来引入不同包中的模块
            from 包名 import 模块名
            from 包名.子包名 import 模块名
        
        命令行参数:
            输入命令行参数:
                > python3 程序文件名 参数1 参数2...
            如何得到命令行参数:
        import sys

        def main():
            for arg in sys.argv:
                print(arg)
        if __name__ == "__main__":
            main()

    """