输入输出

a = "hh"
a = 1.1
a = 2
print(a)  

格式化

a = 1.1
print("%s" % a)   1.1
print("%.2f" % a)  1.1
print("%f" % a)    1.100000

快速格式化

语法:

  • f " 内容 { 变量 } " 的格式来快速格式化
  • 示例:
name = "张三"  
price = 11.12  
year = 34  
print(f"我是{name},今年{year},这个价格是{price}")
print("请输入")
name = input()

与
name = input("请输入")
等效

注意:

  • input 语句输入默认为字符串类型
  • 要用其他类型需要强制转换
  • int() 、str()、float()

语法

布尔类型 TrueFalse

赋值

** 为幂运算 2 ** 3.1 = 8.574187700290345

a, b = 12, 13  #这是合法的

if

age = 12  
year = 12  
if age >= 18:  
    print("成年了")    # 四个空格缩进
    print("哈哈")  
elif year == 12:  
    print("OHOHOH")  
else:  
    print("NO")

循环

i = 1;  
while i < 3:  
    print(i)  
    i += 1
    j = 1
    while j < 10:
        print("hh")
name = "zhangsan"  
for x in name:  
    print(x)         将name中的内容挨个取出,然后打印

数据容器

list(容器):将给定容器转换为列表 str(容器):将给定容器转换为字符串 tuple(容器):将给定容器转换为元组 set(容器):将给定容器转换为集合

字符串转为其他是一个一个字符取出,字典转为其他是将 key 取出

sorted(容器,reverse=true):使用这个函数,会自动将其转换为列表,第二个参数不写,默认为升序,写 false 为降序

集合---set

内部和 C++的 set 容器一样,会进行升序排列

集合的定义:{3,2,1} 空集合的定义:temp = set()

操作 说明
集合. add (元素) 集合内添加一个元素
集合. remove (元素) 移除集合内指定的元素
集合. pop () 从集合中随机弹出一个数
集合. clear () 清空集合
集合 1. difference (集合 2) 得到一个新集合,内含 2 个集合的差集(集合 1 中不包含集合 2 的元素集合),原有的 2 个集合内容不变
集合 1. difference_update (集合 2) 在集合 1 中,删除集合 2 中存在的元素,集合 1 被修改,集合 2 不变
集合. union (集合 2) 得到一个新集合,内含 2 个集合的全部元素。原有的 2 个集合内容不变
len (集合) 得到一个整数,记录了集合的元素数量
max (集合),min (集合) 获得集合里的最大值最小值

字典---dict

会自动去重,按照键去重,直接定义的,相同键,后面的 value 会替换到在之前的 格式:{键:值,键:值}

例子

temp = {11:10, 11:20}
# 最终保留的是 11:20

定义字典:{"张三": 14, "李四": 15} 空字典:temp = dict ()

获取值:temp[键key] 即可

操作 说明
字典[key] 获取指定 key 对应的 value 值
字典[key] = value 添加或更新键值对
字典. pop (key) 取出 key 对应的 value 并在字典内删除此 key 的键值对
字典. clear () 清除字典
字典. keys () 获取字典的全部 key,可用于 for 循环遍历字典
len (字典) 计算字典内的元素数量
max (字典),min (字典) 获取字典中 key 的最大值最小值

列表、元组

切片

  • 起始下标表示从何处开始,留空视作从头开始
  • 结束下标表示结束,留空视作截取到结尾,含的下标,截取不会包含当前下标
  • 步长表示取的间隔
    • n 表示每次跳过 n-1 个元素取
    • 负数表示反向

例子

"""  
"万过月薪, 员序程马黑来, nohtyp学"  
"""  
my_str = "万过薪月,员序程马黑来,nohtyp学"  
  
# 倒序字符串,切片取出  
result1 = my_str[::-1][9:14]  
print(result1)  
  
# 切片取出,然后倒序  
result2 = my_str[5:10][::-1]  
print(result2)  
  
# split分隔", " replace替换"来"为空,倒叙字符串  
result3 = my_str.split(",")[1].replace("来", "")[::-1]  
print(result3)
函数 功能
列表. append (元素) 向列表中追加一个元索
列表. extend (容器) 将数据容器的内容依次取出,追加到列表尾部
列表. insert (下标,元素) 在指定下标处,插入指定的元素
del 列表[下标] 删除列表指定下标元素
列表. pop (下标) 删除列表指定下标元素
列表. remove (元素) 从前向后,删除此元素第一个匹配项
列表. clear () 清空列表
列表. count (元素) 统计此元素在列表中出现的次数
列表. index (元素) 查找指定元素在列表的下标,找不到报错 ValueError
len (列表) 统计容器内有多少元素

函数

多返回值

def func():
    return 10, 20
    
x, y = func()

函数传参

位置参数

def func(x, name):  
    print(f"{x}, {name}")  
  
func(10,"z")

关键字参数

def func(x, name):  
    print(f"{x}, {name}")  
  
func(x = 10, name = "z")

缺省参数

不传参数,就使用默认的,传了参数,使用传的

def func(x, name = "zhangsan"):  
    print(f"{x}, {name}")  
  
func(x = 10)

不定长与定长参数

不定长:一个 * 号,原理是一个元组,args 是元组

def func(*args):  
    print(args)  
  
func(1,2,3,4)

不定长:两个 * 号,原理是一个字典

def func(**args):  
    print(args)  
  
func(name='zhangsan',age=12 ,gender='男')

函数作为参数传参

def func(add):  
    add('zhang', 20)  
  
def add(name, age): 
    print(f"{name}, {age}")  
  
func(add)

匿名函数

语法:lambda 传入参数: 函数体(一行代码)

def func(add):  
    add('zhang', 20)  
  
func(lambda name, age: print(f"{name}, {age}"))

异常

try:
    可能要发生异常的语句
except:
    出现异常后的执行语句
else:
    未出现异常时可以做的事情
finally:
    无论是否出现异常,都要执行,一般用于关闭文件
    
# 未出现异常时:执行 try, else, finally 语句
# 出现异常时:执行 except, finally 语句
# 顶级父类 Exception
# 可以捕获多个异常,只要出现异常,后面不在执行,也就是这里只捕获到 name 异常
try:  
    print(f"{name}, {1/0}")  
except (ZeroDivisionError, NameError) as e:  
    print("出现异常了")  
    print(e)

异常的传递性

def func1():  
    num = 1/0  
    print(name)  
  
def func2():  
    func1()  
  
def main():  
    try:  
        func2()  
    except ZeroDivisionError:  
        print("有异常")  
  
main()

可视化图表

json 格式

  • 列表(但是内部仍然是字典)
  • 字典
import json  
data = [{"老王": 1, "age": 16}, {"张三":2, "age": 20}]  
  
# 转换为 json 格式  
j_str = json.dumps(data, ensure_ascii=False)  
print(j_str)  
print(type(j_str))  # 实际是个字符串
  
# 转换为列表  
data1 = json.loads(j_str)  
print(data1)

pyecharts 基础使用

from pyecharts.charts import Line  
from pyecharts.options import TitleOpts, LegendOpts, ToolboxOpts, VisualMapOpts  
  
# 创建一个折线图对象  
line = Line()  
  
# x 轴添加数据  
line.add_xaxis(["中国", "美国", "英国"])  
# y 轴添加数据  
line.add_yaxis("GDP", [30, 20, 10])  
  
# 设置全局配置项  
line.set_global_opts(  
    # 标题  
    title_opts=TitleOpts(title="GDP展示", pos_left="center", pos_bottom="1%"),  
    # 图例,默认也是 True    legend_opts=LegendOpts(is_show=True),  
    toolbox_opts=ToolboxOpts(is_show=True),  
    visualmap_opts=VisualMapOpts(is_show=True),  
)  
  
# 通过 render 方法,将代码生成图像  
line.render()

类和对象

类里面的魔术方法

类似于运算符重载

方法 功能
__int__ 构造方法,初始化
__str__ 实现直接输出对象
__lt__ 实现对象的小于大于比较
__le__ 实现对象的小于等于和大于等于比较
__eq__ 实现对象是否等比较
示例
class Student:  
    name = None  
    age = None  
    def __init__(self, name, age):  
        self.name = name  
        self.age = age  
  
    def __str__(self):  
        return f'{self.name} {self.age}'  
    def __le__(self, other):  
        return self.age < other.age  
  
student1 = Student('John', 23)  
student2 = Student('Jack', 25)  
print(student1)  
print(student1 <= student2)

# 输出
# John 23
# True

封装、继承、多态

私有成员和方法

加 "__" 两个下划线

继承

# 单继承
class Student(父类名)
# 多继承
class Student(父类1,父类2)

# pass 用法,补全语法
class Student(父类1,父类2)
    pass
# 这样防止语法报错,因为感觉功能多了,不需要实现体了

只管努力,剩下的交给天意