Python快速入门-零基础也能掌握的编程技巧,基础方法和API整理

目录

前言

数据结构

数字

数学运算

随机数

字符串

列表

元组

字典

面向对象

JSON

文件操作

扩展

制作一个简易时钟


前言

环境什么就不在赘述,可以参考其他文章,也可以在线运行

CSDN在线运行地址:InsCode - 让你的灵感立刻落地

Python基础 - 从数据类型到面向对象_for var in vartuple-CSDN博客

python入门-从安装环境配置(Anaconda)到做一个下班打卡提醒.exe小工具_开发电脑软件提醒下班-CSDN博客

数据结构

数字、字符串、列表、元组、字典

数字

Python Number 数据类型用于存储数值,包括整型、长整型、浮点型、复数。

数学运算
import math

print("1.1向上取整:", math.ceil(1.1))  # 返回数字的上入整数
print("1.9向下取整:", math.floor(1.9))  # 返回数字的下舍整数
print("-2:的绝对值:", math.fabs(-2))  # 返回数字的绝对值
print("3的平方根:", math.sqrt(3))  # 返回数字的平方根

# math.exp(1) 会打印出自然数 e(约等于 2.71828)的指数值,因为 math.exp() 函数用于计算一个数的自然指数(以 e 为底)。当参数为 1 时,它计算的就是 e 的 1 次方,即 e 本身。
print("返回e的x次幂:", math.exp(1))  # 返回e的x次幂(自然指数)

print("3的2次方:", math.pow(3, 2))  # 返回 x 的 y 次方。
print("2的阶乘:", math.factorial(2))  # 返回数字的阶乘
print("78和186的最大公约数:", math.gcd(78, 186))  # 返回 x 和 y 的最大公约数
print("是否是无穷数:", math.isinf(3.1415926))  # 如果数字是正无穷或负无穷,返回 True。
print("是否是NaN:", math.isnan(33))  # 如果 x 是 NaN(不是一个数字),返回 True。
print("π 的值:", math.pi)  # math.pi:π 的值。
print("角度转换弧度:", math.radians(30))  # 将角度转换为弧度
print("弧度转换角度:", math.degrees(1))  # 弧度转换为角度。

1.1向上取整: 2
1.9向下取整: 1
-2:的绝对值: 2.0
3的平方根: 1.7320508075688772
返回e的x次幂: 2.718281828459045
3的2次方: 9.0
2的阶乘: 2
78和186的最大公约数: 6
是否是无穷数: False
是否是NaN: False
π 的值: 3.141592653589793
角度转换弧度: 0.5235987755982988
弧度转换角度: 57.29577951308232

随机数
import random

print(random.random()) # 生成一个 [0.0, 1.0) 之间的随机浮点数
print(random.randint(1,20)) # 生成一个指定范围内的随机整数,范围在1-20 之间
# 0.346862053678905
# 18

更多

random.uniform(1, 10)  # 生成一个指定范围内的随机浮点数,范围在 [1, 10) 之间。
random.randrange(10)  # 生成一个从0到9(包含0但不包含10)的随机整数
random.randrange(1, 10)  # 生成一个从0到9(包含0但不包含10)的随机整数
random.randrange(0, 100, 2)  # 生成一个从0到99(包含0但不包含100)的随机整数,步长为2(每次增加的数量)本示例会跳过非 2 的倍数的整数

seq = ['apple', 'banana', 'cherry', 'date', 'elderberry']
random.choice(seq)  # 从序列 seq 中随机选择一个元素。
random.shuffle(seq)  # 将序列seq随机打乱顺序
random.sample(seq, 3)  # 从seq中随机选择3个元素,返回一个列表。
random.seed(a=None)  # 设置随机数生成器的种子值。如果是None或者未提供,则使用当前系统时间。
random.getrandbits(5)  # 生成一个5位长的随机无符号整数。它的范围是从 0 到 2**k - 1,  0 到 2 的 k 次方减 1 之间的随机整数。

random.expovariate(0.5) # 生成一个指数分布的随机浮点数,其中0.5是分布的参数。越大,分布就越向右倾斜,意味着事件发生的频率越高。
random.gammavariate(alpha, beta) # 生成一个伽马分布的随机浮点数,其中alpha和beta是分布的参数。
random.gauss(mu, sigma) # 生成一个正态(高斯)分布的随机浮点数,其中mu是均值,sigma是标准差。

字符串

# 字符串连接:+
print("Hello " + "World ")
# 重复输出字符串:*
print('a ' * 3)
# 首字母大写,其余字母小写
print("hello World".capitalize())
# 所有大写字母转换为小写
print("HELLO WORLD".lower())
# 所有小写字母转换为大写
print("hello world".upper())
# 将字符串中的大写字母转换为小写,小写字母转换为大写。
print("Hello World".swapcase())  # 输出 "hELLO wORLD"
# 将字符串中每个单词的首字母大写,其余字母小写。
print("hello world".title())  # 输出 "Hello World"
# 通过索引获取字符串中字符[]
print("Hello"[0])
# 字符串截取[:] :左闭右开
print("Hello"[1:3])
# 判断字符串中是否包含给定的字符: in, not in
print('e' in 'Hello')
print('e' not in 'Hello')
# join():以字符作为分隔符,将字符串中所有的元素合并为一个新的字符串
print('-'.join('Hello'))
# 字符串单引号、双引号、三引号(纯文本,包括引号和特殊字符串)
print('Hello World!')
print("Hello World!")
print('''I'm going to the movies''')
# 转义字符 \
print("The \t is a tab")
# 返回字符串的长度
print(len("hello"))  # 输出 5
# 计算子字符串 substr 在字符串中出现的次数。
print("banana".count("a"))  # 输出 3
# 查找子字符串在字符串中首次出现的位置。如果未找到,find() 返回 -1,而 index() 会引发 ValueError 异常
print("banana".find("a"))  # 输出 1
print("banana".index("a"))  # 输出 1
# 字符串替换
print("banana".replace("a", "o"))  # 输出 "bonono"
# 以 , 为分隔符将字符串分割成一个列表。如果 maxsplit 指定了,则最多分割 maxsplit 次。
print("apple,banana,cherry".split(","))  # 输出 ['apple', 'banana', 'cherry']
# 移除字符串开头和结尾的空白字符
print("   hello   ".strip())  # 输出 "hello"
# 仅移除左侧的空白字符、仅移除右侧的空白字符。
print("   hello   ".lstrip())  # 输出 "hello   "
print("   hello   ".rstrip())  # 输出 "   hello"
# 检查字符串是否以指定的前缀或后缀开始或结
print("banana".startswith("ban"))  # 输出 True
print("banana".endswith("ana"))  # 输出 True
# 格式化字符串
name = "Alice"
age = 25
print("My name is {} and I am {} years old.".format(name, age))

列表

类似其他语言中的数组

# 声明一个列表
names = ['jack', 'tom', 'tonney', 'superman', 'jay']

# 通过下标或索引获取元素
print(names[1])  # tom
# 获取最后一个元素
print(names[-1])  # jay
print(names[len(names) - 1])  # jay
# 获取第一个元素
print(names[-5])  # jack
# 遍历列表,获取元素
for name in names:
    print(name)
# 列表元素添加
names.append('杨超越')
# 一次添加多个。把一个列表添加到另一个列表 ,列表合并。
models = ['刘雯', '奚梦瑶']
names.extend(models)
print(names)
# 列表元素修改
names[-1] = 'strawberry'
# 列表元素删除
del names[0]
names.remove('杨超越')
names.pop(0)
# 列表切片,根据下标切取列表,返回列表
print(names)  # ['tonney', 'superman', 'jay', '刘雯', 'strawberry']
print(names[-1:])  # ['strawberry']
print(names[2:5])  # ['jay', '刘雯', 'strawberry']

list = [0, 10, 3, 5, 8]
# 默认升序
print(sorted(list))
# 降序
print(sorted(list, reverse=True))
# 在指定索引处插入一个元素
list.insert(1, 100)
# 返回列表中某个元素的出现次数
list.count(1)
# 反转列表中的元素
list.reverse()
# 将可迭代对象转换为列表
list(iterable)
# 移除列表中的所有元素
list.clear()

元组

与列表类似,元组中的内容不可修改,元组类型提供了一些常用的内置函数来操作元组

# 相连
t1 = (1, 2, 3) + (4, 5)
print(t1)  # (1, 2, 3, 4, 5)
# 乘2
t2 = (1, 2) * 2
print(t2)  # (1, 2, 1, 2)
# 将可迭代对象转换为元组。
t = tuple([1, 2, 3])  # 从列表转换为元组
# 返回元组中的元素个数。
t = len((1, 2, 3))
# 返回元组中的最大值
t = (1, 3, 2)
print(max(t))  # 输出 3
# 返回元组中的最小值。
t = (1, 3, 2)
print(min(t))  # 输出 1
# 返回元组中所有元素的和(仅适用于数值类型元素)。
t = (1, 2, 3)
print(sum(t))  # 输出 6
# 返回元组中某个值出现的次数。
t = (1, 2, 3, 2, 1)
print(t.count(2))  # 输出 2
# 返回元组中第一个匹配值的索引,如果没有找到则引发ValueError。
t = (1, 2, 3)
print(t.index(2))  # 输出 1
# 使用切片操作从元组中获取子序列。
t = (0, 1, 2, 3, 4, 5)
print(t[1:4])  # 输出 (1, 2, 3)

字典

# list可以转成字典,但前提是列表中元素都要成对出现
dict3 = dict([('name', '杨超越'), ('weight', 45)])

# clear(): 移除字典中的所有项。
my_dict = {'a': 1, 'b': 2}
my_dict.clear()  # {}
# 返回字典的一个浅复制。
my_dict = {'a': 1, 'b': 2}
copy_dict = my_dict.copy()  # {'a': 1, 'b': 2}
# 返回指定键的值,如果键不存在则返回默认值。
my_dict = {'a': 1, 'b': 2}
print(my_dict.get('a'))  # 输出 1
print(my_dict.get('c'))  # 输出 None
print(my_dict.get('c', 0))  # 输出 0
# 返回字典中所有键值对的视图。
my_dict = {'a': 1, 'b': 2}
items_view = my_dict.items()
print(items_view)  # dict_items([('a', 1), ('b', 2)])
# 返回字典中所有键的视图。
my_dict = {'a': 1, 'b': 2}
keys_view = my_dict.keys()  # keys_view现在是dict_keys(['a', 'b'])
# 移除并返回指定键的值,如果键不存在则返回默认值。
my_dict = {'a': 1, 'b': 2}
print(my_dict.pop('a'))  # 输出 1
print(my_dict.pop('c', 0))  # 输出 0
# my_dict现在是{'b': 2}

# 移除并返回字典中的最后一个键值对(随机)。
my_dict = {'a': 1, 'b': 2}
print(my_dict.popitem())  # 输出 ('b', 2) 或 ('a', 1),取决于Python实现
# my_dict现在是{'a': 1} 或 {'b': 2}

# 如果键在字典中,返回它的值;否则,插入键和默认值,并返回默认值。
my_dict = {'a': 1, 'b': 2}
print(my_dict.setdefault('a', 0))  # 输出 1
print(my_dict.setdefault('c', 0))  # 输出 0,且'c': 0被添加到字典中
# my_dict现在是{'a': 1, 'b': 2, 'c': 0}

# 使用另一个字典更新当前字典。
my_dict = {'a': 1, 'b': 2}
my_dict.update({'b': 3, 'c': 4})
# my_dict现在是{'a': 1, 'b': 3, 'c': 4}

# 返回字典中所有值的视图。
my_dict = {'a': 1, 'b': 2}
values_view = my_dict.values()
# values_view现在是dict_values([1, 2])

面向对象

class Animal:

    # init()定义构造函数,与其他面向对象语言不同的是,Python语言中,会明确地把代表自身实例的self作为第一个参数传入
    # init()方法接收参数,使用点号 . 来访问对象的属性
    def __init__(self, name):
        self.name = name
        print('动物名称实例化', name)

    # 创建一个实例化对象 cat,
    def eat(self):
        print(self.name + '要吃东西啦!')

    def drink(self):
        print(self.name + '要喝水啦!')


cat = Animal('dog')
print(cat.name)
cat.eat()
cat.drink()

动物名称实例化 dog
dog
dog要吃东西啦!
dog要喝水啦!

class Dog(Animal):  # 定义子类
    def __init__(self, name):
        super().__init__(name)
        print('调用子类构造方法')

    def study(self):
        print('调用子类方法')

动物名称实例化 旺财
调用子类构造方法
调用子类方法
旺财要吃东西啦!

JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。

import json

# Python 对象编码成 JSON 字符串
data = [{'b': 2, 'd': 4, 'a': 1, 'c': 3, 'e': 5}]
jsonStr = json.dumps(data)
print(jsonStr)

# sort_keys=True表示按照字典排序(a到z)输出。
# indent参数,代表缩进的位数
# separators参数的作用是去掉,和:后面的空格,传输过程中数据越精简越好
jsonStr = json.dumps(data, sort_keys=True, indent=4, separators=(',', ':'))
print(jsonStr)

# 将string转换为dict
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'
text = json.loads(jsonData)
print(text)

文件操作

# 打开一个文件并返回文件对象。filename 是文件名,mode 是文件访问模式,默认为 'r'(只读)。其他常见的模式包括 'w'(写入,如果文件已存在则覆盖)、'a'(追加,如果文件已存在则在文件末尾添加内容)、'r+'(读写)等。
import os

f = open("test1.py", mode='r')

# 读取文件内容。size 参数指定读取的字节数,如果为负数或省略,则读取整个文件。
f.read(size=-1)
# 读取文件的一行。size 参数指定读取的字节数。
f.readline(size=-1)
# 读取文件的所有行并返回一个包含每行内容的列表。sizehint 参数是一个可选参数,用于指定读取的行数。
f.readlines(sizehint=-1)
# 将字符串写入文件。
f.write("string")
# 将一个字符串列表写入文件。
f.writelines(["1", "2", "3"])
# 改变文件对象的当前位置。offset 参数表示偏移的字节数,whence 参数指定起始位置,默认为 0(文件开头),其他可选值包括 1(当前位置)和 2(文件末尾)。
f.seek(offset, whence=0)
# 返回文件对象的当前位置。
f.tell()
# 刷新文件对象的缓冲区,确保所有待写入的数据都被写入文件。
f.flush()
# 关闭一个打开的文件。
f.close()

os.path.exists(path)  # 检查文件或目录是否存在。
os.path.isfile(path)  # 检查指定路径是否为文件。
os.path.isdir(path)  # 检查指定路径是否为目录。
os.path.getsize(path)  # 返回文件的大小(以字节为单位)。
os.remove(path)  # 删除文件。
os.rename(src, dst)  # 重命名文件或目录。
os.makedirs(path, exist_ok=False)  # 递归创建目录。如果 exist_ok 为 True,则当目录已存在时不会引发异常。
os.rmdir(path)  # 删除目录(必须为空)。
# 使用 with 语句可以自动处理文件的打开和关闭,避免忘记关闭文件。例如:
with open('file.txt', 'r') as f:
    content = f.read()

扩展

制作一个简易时钟

import turtle
import datetime


# 悬空移动
def move(distance):
    turtle.penup()
    turtle.forward(distance)
    turtle.pendown()


# 创建表针turtle
def createHand(name, length):
    turtle.reset()
    move(-length * 0.01)
    turtle.begin_poly()
    turtle.forward(length * 1.01)
    turtle.end_poly()
    hand = turtle.get_poly()
    turtle.register_shape(name, hand)


# 创建时钟
def createClock(radius):
    turtle.reset()
    turtle.pensize(7)
    for i in range(60):
        move(radius)
        if i % 5 == 0:
            turtle.forward(20)
            move(-radius - 20)
        else:
            turtle.dot(5)
            move(-radius)
        turtle.right(6)


def getWeekday(today):
    return ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'][today.weekday()]


def getDate(today):
    return '%s年%s月%s日' % (today.year, today.month, today.day)


def startTick(second_hand, minute_hand, hour_hand, printer):
    today = datetime.datetime.today()
    second = today.second + today.microsecond * 1e-6
    minute = today.minute + second / 60.
    hour = (today.hour + minute / 60) % 12
    # 设置朝向
    second_hand.setheading(6 * second)
    minute_hand.setheading(6 * minute)
    hour_hand.setheading(12 * hour)
    turtle.tracer(False)
    printer.forward(65)
    printer.write(getWeekday(today), align='center', font=("Courier", 14, "bold"))
    printer.forward(120)
    printer.write('12', align='center', font=("Courier", 14, "bold"))
    printer.back(250)
    printer.write(getDate(today), align='center', font=("Courier", 14, "bold"))
    printer.back(145)
    printer.write('6', align='center', font=("Courier", 14, "bold"))
    printer.home()
    printer.right(92.5)
    printer.forward(200)
    printer.write('3', align='center', font=("Courier", 14, "bold"))
    printer.left(2.5)
    printer.back(400)
    printer.write('9', align='center', font=("Courier", 14, "bold"))
    printer.home()
    turtle.tracer(True)
    # 100ms调用一次
    turtle.ontimer(lambda: startTick(second_hand, minute_hand, hour_hand, printer), 100)


def start():
    # 不显示绘制时钟的过程
    turtle.tracer(False)
    turtle.mode('logo')
    createHand('second_hand', 150)
    createHand('minute_hand', 125)
    createHand('hour_hand', 85)
    # 秒, 分, 时
    second_hand = turtle.Turtle()
    second_hand.shape('second_hand')
    minute_hand = turtle.Turtle()
    minute_hand.shape('minute_hand')
    hour_hand = turtle.Turtle()
    hour_hand.shape('hour_hand')
    for hand in [second_hand, minute_hand, hour_hand]:
        hand.shapesize(1, 1, 3)
        hand.speed(0)
    # 用于打印日期等文字
    printer = turtle.Turtle()
    printer.hideturtle()
    printer.penup()
    createClock(160)
    # 开始显示轨迹
    turtle.tracer(True)
    startTick(second_hand, minute_hand, hour_hand, printer)
    turtle.mainloop()


if __name__ == '__main__':
    start()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/614301.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4G,5G执法记录仪人脸识别、人脸比对使用说明

4G/5G执法记录仪或4G/5G智能安全帽,做前端人脸识别、人脸比对,采用了上市公司的成熟的人脸识别算法,需要支付LICENSE给算法公司,理论上前端设备支持30K的人脸库(受设备运行内存限制)。 4G/5G执法记录仪侧要…

docker私有仓库registry

简介 Docker私有仓库的Registry是一个服务,主要用于存储、管理和分发Docker镜像。具体来说,Registry的功能包括: 存储镜像:Registry提供一个集中的地方来存储Docker镜像,包括镜像的层次结构和元数据。 版本控制&…

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (三)

基于 LlaMA 3 LangGraph 在windows本地部署大模型 (三) 大家继续看 https://lilianweng.github.io/posts/2023-06-23-agent/的文档内容 第二部分:内存 记忆的类型 记忆可以定义为用于获取、存储、保留以及随后检索信息的过程。人脑中有多…

C语言(指针)4

Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,关注收藏,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言 本系列文章为个人学习笔记&#x…

瑞的创作纪念日(128天)

🙊 前言:我是阿瑞,一个热爱技术、喜欢教学、对编程充满热情、痴迷于代码世界、喜欢研读源码、尝试自研开发框架的探索者。今天,与大家分享一个特别的纪念日——我的 CSDN 技术博客创作第 128 天的纪念日 机缘 我接触 CSDN 是因为 …

零基础HTML教程(32)--HTML5语义化标签

文章目录 1. div时代2. div的缺点3. 语义化标签4. 语义化标签有哪些5. 实战演练6. 小结 1. div时代 我是2009年开始学习网页开发的,那时候HTML里面到处是div。 这么说吧,那时候div就是网页的骨架,支撑着网页的主结构。 2. div的缺点 div作…

硬件 - TL431计算

文章目录 1 . 概要2 . TL431内部3 . TL431应用电路4 . TL431计算5 . 小结 【全文大纲】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 概要 1 . TL431常用于通过外围电阻R1,R2设置输出一个目标电压 2 . TL431内部 3 . TL431应用电路 1 . R1 1K&#xf…

Mac IDEA 自动补全mybatis sql语句

导航 Mac IDEA 自动补全mybatis sql语句一、点击IDEA 右侧Database选项二、选择添加对应数据库三、输入数据库信息和方案四、输入数据库信息和方案五、成功 Mac IDEA 自动补全mybatis sql语句 背景: 想在Mapper中,能够实现自动检索数据库表和对应的字段…

40道 Nginx 高频面试题

Nginx 是一款轻量级的 Web 服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。那么关于 Nginx 的核心面试题有哪些呢?今天给大家整理了40道Nginx 高频面试题,最近…

ITMS-91053: Missing API declaration

1. 添加PrivacyInfo.xcprivacy File → New → File → App Privacy 2. 格式 3. 已知对应关系 NSPrivacyAccessedAPICategoryFileTimestamp 3B52.1: Files provided to app by user, per documentation:File Timestamp NSPrivacyAccessedAPICategoryDiskSpace …

[机器学习-04] Scikit-Learn机器学习工具包进阶指南:集群化与校准功能实战【2024最新】

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

人类将会永生?谷歌 DeepMind重磅发布Alphafold 3 ——天花板级别的AI系统

当地时间 5 月 8 日,顶级科学期刊《Nature》发表了一份重磅研究论文。谷歌 DeepMind 发布了其生物学预测工具 AlphaFold 的最新版本——AlphaFold 3。 这个革命性的新模型,能以前所未有的精度预测所有生命分子的结构和相互作用。作为一个以整体方式计算…

如何在线网页浏览obj格式3D模型?

OBJ文件是一种3D模型格式,目前几乎大部分知名的3D软件都支持OBJ文件的读写,但是想要在网页在线查看obj文件,要怎样实现呢? 1、如何在线浏览obj格式模型? 其实只要通过51建模网,直接将obj格式的3D模型上传…

【数据结构】二叉树(Binary Tree)

文章目录 一、树的概念及结构二、二叉树的概念及结构1.二叉树的概念2.特殊的二叉树3.二叉树的性质 三、二叉树的存储顺序存储链式存储 四、二叉树的实现1.创建二叉树2.二叉树的遍历前序遍历中序遍历后序遍历层序遍历根据遍历顺序创建二叉树 3.二叉树的基本操作1.总结点个数2.二…

Vulnhub项目:ICA: 1

1、靶机介绍 靶机地址:ICA: 1 ~ VulnHub 2、渗透过程 首先,部署好靶机后,进行探测,发现靶机ip和本机ip,靶机ip156,本机ip146。 然后查看靶机ip有哪些端口,nmap一下。 出现22、80、3306端口&a…

使用Selenium破解滑动验证码的原理及解决思路

1、获取页面元素信息: 使用Selenium打开目标网页,并通过相关方法获取滑块、背景图等元素的位置和属性信息。可以使用Selenium提供的定位方法(如xpath、CSS选择器等)来找到这些元素。 可以使用find_element_by_xpath或find_elemen…

按键的短按、长按和连续的划分

在实际生活中,我们使用到的按键在短按、长按和按键松开时都会触发不同的功能。按键短按后松开和长按后松开的应用比短按和长按的应用较少,我了解的按键短按后松开和长按后松开的应用是在点动控制和长动控制中。这里主要讨论按键的短按、长按和连续这三种…

基于ConvNeXt网络的图像识别

1、前言 ConvNeXt 网络基于传统的卷积神经网络,与当下 transformer当道而言简直是一股清流 ConvNeXt并没有特别复杂或者创新的结构 ConvNeXt 网络有五种大小,可以参考下面 2、项目实现 完整的项目如下: 这里参考了网上的ConvNeXt 模型&…

计算机服务器中了devicdata勒索病毒如何解密,devicdata勒索病毒解密恢复工具

在网络技术飞速发展的时代,有效地利用网络开展各项工作业务,能够大大提升企业的生产运行效率,改善企业的发展运营模式,但如果网络利用不好就会给企业的数据安全带来严重威胁。近日,云天数据恢复中心接到很多企业的求助…

机柜风扇KTS011温湿度控制器KTO011风机控制温控器机械开关温控仪

品牌:威驰 型号:KTS011常开 产地:中国大陆 颜色分类:KTS011常开,KTO011常闭 KTS011与KTO011的区别 KTS011,常开型,可搭配风扇/风机使用:当环境温度超过温控器设定温度,温控…