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

news2024/11/18 2:52:28

目录

前言

数据结构

数字

数学运算

随机数

字符串

列表

元组

字典

面向对象

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()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

n5.树(中)

1、二叉树的遍历 1.1先序、中序、后序遍历 先序遍历 根->左->右 先序遍历先访问根节点,再访问它的左子树,然后访问它的右子树。对于每次访问到的结点,都要递归地访问左子树、后右子树———递归。 创建 typedef struct TreeNode*…

理解导数(x^n求导后nx^n-1)

以下都是为了方便理解 微小量是 t M(x)是一个函数 M 在 x 处的斜率 M 在 x 处的导数 垂直距离 平移距离 M ( x t ) − M ( x ) ( x t ) − x M在x处的斜率 M在x处的导数 \dfrac{垂直距离}{平移距离} \dfrac{M\left( xt\right) -M\left( x\right) }{(x t) -x} M在x处的斜…

Tiff文件解析和PackBits解压缩

实现了Tiff图片文件格式的解析,对Tiff文件中的PackBits压缩格式进行解压缩,对Tiff文件中每一个Frame转换成BufferedImage显示。 Java语言实现,Eclipse下开发,AWT显示图片。 public static TIFF Parse(final byte[] bytes) throw…

618洗地机推荐,市面上各式各样的洗地机怎么选?这里有答案

洗地机的出现极大地改变了清洁方式,通过结合扫地、拖地、吸尘等多种功能,实现了一机多用的便捷清洁体验。而且洗地机不需要弯腰,每次也不用清洁很长时间,节省出来的时间可以更好的休息,但是市面上各式各样的洗地机怎么…

突破编程界限:探索AI编程新境界

文章目录 一、AI编程助手1.1 Baidu Comate智能代码助手1.2 阿里云 通义灵码 二、场景需求三、体验步骤3.1 官网下载3.2 手动下载 四、试用感受4.1 提示4.2 注释生成代码4.3 代码生成4.4 选中生成注释4.5 查看变更&新建文件4.6 调优建议4.7 插件使用 五、结尾推荐 一、AI编程…

代码审计-php篇之某CRM系统多处sql注入

🌟 ❤️ 作者:yueji0j1anke 首发于公号:剑客古月的安全屋 字数:3516 阅读时间: 35min 声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果…

Python爬虫 【1】 —— 爬虫基础

爬虫基本套路 基本流程 目标数据来源地址结构分析 具体数据在哪(网站 还是APP)如何展示的数据、 实现构思操刀编码 基本手段 破解请求限制 请求头设置,如:useragent为有效客户端控制请求频率(根据实际情境&#xff09…

在Linux上安装并运行RabbitMQ

目录 准备CentOS服务器 下载rabbit-server和erlang文件 启动RabbitMQ服务 准备CentOS服务器 两个命令,选一个能用的,查看CentOS服务器的版本 lsb_release -a下载rabbit-server和erlang文件 参考文章:http://t.csdnimg.cn/t8BbM 1、创建新…

龟兔赛跑(基于GUI与多线程实现)

直击龟兔赛跑现场 下面这张图是我们设计龟兔赛跑界面的初始效果与基本组成结构: 接下来是我仅代表我个人提出的一些疑问与解答: 1、俩动物以图片的形式显示? 其实在这里两个动物类就像标签一样 标签组件是什么?用于短文本字符串…

对话易参创始人黄怡然:股权能不能赋能企业增长?| 极新企服直播实录

“ 致所有爱画饼的老板 ” 整理 | 云舒 编辑 | 小白 出品|极新 2022年以前,股权激励作为企业实现增长、吸引人才、保留人才并大幅度激发人才价值的重要手段,几乎成为每一个企业的标配。但是,现在这个时代,股权激励几…

2024年最新方法下载钉钉群直播回放

链接:百度网盘 请输入提取码 提取码:1234 --来自百度网盘超级会员V10的分享 1.首先解压好所有的压缩包,这个压缩包里面还套着一共逍遥一仙下载器压缩包,也解压 2.进入逍遥一仙下载器文件夹,打开M3U8 V1.4.8 0508.e…

ESP32-C3-MINI-1

https://www.espressif.com.cn/sites/default/files/documentation/esp32-c3-mini-1_datasheet_cn.pdf 芯片 https://files.seeedstudio.com/wiki/XIAO_WiFi/Resources/esp32-c3_datasheet.pdf 结果参考: https://blog.csdn.net/iamxxdd/article/details/12386419…

【回溯算法】【Python实现】最大团问题

文章目录 [toc]问题描述回溯算法Python实现时间复杂性 问题描述 给定无向图 G ( V , E ) G (V , E) G(V,E),如果 U ⊆ V U \subseteq V U⊆V,且对任意 u u u, v ∈ U v \in U v∈U有 ( u , v ) ∈ E (u , v) \in E (u,v)∈E,则称…

XMind 2021 v11.1.2软件安装教程(附软件下载地址)

软件简介: 软件【下载地址】获取方式见文末。注:推荐使用,更贴合此安装方法! XMind 2021 v11.1.2被誉为顶尖思维导图工具,以其简洁、整洁的界面和直观的功能布局脱颖而出。尽管软件体积小巧,却极具强大功…

【小红书采集软件】根据关键词批量爬取小红书笔记正文、笔记链接、发布时间、转评赞藏等

一、背景介绍 1.1 爬取目标 熟悉我的小伙伴可能了解,我之前开发过2款软件: 【GUI软件】小红书搜索结果批量采集,支持多个关键词同时抓取! 【GUI软件】小红书详情数据批量采集,含笔记内容、转评赞藏等,支…

【初阶数据结构】单链表基础OJ题讲解

前言 📚作者简介:爱编程的小马,正在学习C/C,Linux及MySQL。 📚本文收录与初阶数据结构系列,本专栏主要是针对时间、空间复杂度,顺序表和链表、栈和队列、二叉树以及各类排序算法,持…

Coursera吴恩达深度学习专项课程01: Neural Networks and Deep Learning 学习笔记 Week 04 (完结)

Neural Networks and Deep Learning Course Certificate 本文是学习 https://www.coursera.org/learn/neural-networks-deep-learning 这门课的笔记 Course Intro 文章目录 Neural Networks and Deep LearningWeek 04: Deep Neural NetworksLearning Objectives Deep L-layer…

智能家居2 -- 实现网络控制模块

这一模块的思路和前面的语言控制模块很相似&#xff0c;差别只是调用TCP 去控制 废话少说&#xff0c;放码过来 增添/修改代码 socket_interface.c #include <pthread.h>#include "socket_interface.h" #include "control.h" #include "socke…

3分钟掌握Suno API!音痴也能创作热门曲!免费拥有个人爆款音乐!

Suno API 的申请及使用 随着 AI 的应用变广&#xff0c;各类 AI 程序已逐渐普及。AI 已逐渐深入到人们的工作生活方方面面。而 AI 涉及的行业也越来越多&#xff0c;从最初的写作&#xff0c;到医疗教育&#xff0c;再到现在的音乐。 Suno 是一个专业高质量的 AI 歌曲和音乐创…

系统代理开启时,钉钉页面加载失败等问题处理

若Windows端钉钉点击工作台/文件提示“页面加载失败”&#xff0c;可先将钉钉升级到7.1.10及以上版本&#xff1b;若依旧报错&#xff0c;可通过以下方法操作&#xff1a; 1、【电脑端钉钉】-【登录页面】-【切换到密码登录页面】-【网络设置】-切换为【不使用代理】&#xff…