以C++为基础入门Python,看这一篇就够了!!超级详细

2023-05-16

Python语句的作用范围

Python不是像C++一样通过{}来规定语句的范围,而是通过缩进来设定语句的范围,所以不要随意使用空格和Tab键

注释

注释PythonC++
单行注释# 注释内容//注释内容
多行注释“”" 注释内容 “”"或’‘’ 注释内容’‘’/* 注释内容 */

运算符

算术运算符

加减乘除同C++

运算符描述示例
//取整返回除法的取整部分,9//2=4
%取余返回除法的余数,9%2=1
**次方,2**3=8

在这里插入图片描述

注意:

​ 字典中的键是唯一的,所以 “ * ” 不可用于字典

​ in 在对字典操作时,判断的是 字典的键

​ in 和 not in 被称为 成员运算符

成员运算符

成员运算符用于 测试 序列中是否包含396指定 成员

在这里插入图片描述

注意:在对 字典 操作时,判断的是 字典的键而不是值

逻辑运算符

and (与)

条件1 and 条件2

if 条件1 and 条件2:
	....			#条件1和条件2同时满足时的代码

or(或)

条件1 or 条件2

if 条件1 or 条件2:
	....			#条件1或条件2满足时的代码

not(非)

not 条件

if not 条件:
	....			#条件不成立时要执行的代码

数据类型

定义一个变量在C++中需要先声明数据类型再敲变量名

但是在Python中不需要声明数据类型,直接: 变量名 = 初值 (变量名 = “字符串”) 即可

Python中的下标计数方式

从0开始计数

内存中的数据是否可以被修改

使用赋值语句,就会修改地址

不可变类型

内存中的数据不允许被修改(即 修改的是地址)

  • 数字类型:int , bool , float ,complex , long(2.x)
  • 字符串 : str
  • 元组 : tuple

可变类型

内存中的数据允许被修改(即 地址不变,修改的是值)

  • 列表:list
  • 字典:dict

数字型

同C++一样:int,float,bool

Python有 复数型:complex

复数型主要用于科学计算

非数字型

字符串,列表,元组,字典

非数字型变量的共同特点:

  1. 都是一个序列sequence,或者说是容器
  2. 取值用 [ ]
  3. 遍历 for in
  4. 计算长度、最值、比较、删除
  5. 连接 + ,重复 *
  6. 切片

列表(即数组)

List(列表)是Python中最常用的数据类型 (就是数组)

与数组相同

列表用 [ ] 定义,数据之间用 “ , ” 分隔,索引从0开始

注意:从列表中取值时,若超过索引范围,程序报错

举例:
	a_list = ["zhangsan" , "list" , "lisi"]

常用方法(不用记忆)

统计:
	len.(列表)          #获取列表的长度为  n+1
	列表.count(数据)	#数据 在列表中出现的次数

排序:
	列表.sort()				#升序排序
	列表.sort(reverse=True)	 #降序排序
	列表.reverse()			#逆序
	
增	
	列表.insert(索引,数据)	#在指定索引插入数据
	列表.append(数据)		 #在末尾追加数据
	列表.extend(列表2)		 #将列表2的数据追加到列表1
    
删:
	del 列表[索引]		#删除指定索引的数据
	列表.remove[数据]	#删除第一个出现的指定数据
	列表.pop			 #删除末尾数据
	列表.pop[索引]		#删除指定索引的数据
	列表.clear		  #清空列表
	
改:
	列表[索引] = 数据		#修改指定索引的数据

查	
	列表.[索引]		    #从列表中取值
	列表.index(数据)     #获得数据第一次出现的索引

注意:

​ 在Python中定义一个列表,例如:list[ ],输入list. 就可以提示列表可以使用的方法

​ 当你不知道这个方法是用来干什么的时候,你可以敲出来然后对着关键字按 Ctrl,就会出现方法的解释

在这里插入图片描述

举例:

list = [1,2,3,4,5,5,5,6,7,8,9]
print(list.count(5))
print(len(list))
i=0
list.insert(0,100)
while i<len(list):
   print(list[i],end=" ")
   i += 1 

列表的相加

列表 = 列表 + 列表
即 列表 += 列表
本质上是调用 列表的extend方法
列表.extend(列表2)		 #将列表2的数据追加到列表1

元组

元组介绍

Tuple(元组) 与列表类似,不同之处在于元组的 元素不能修改 ,可以和列表一样保存多种类型的数据

  1. 元组 表示多个元素组成的序列
  2. 元组在Python开发中,有特定的应用场景

用于存储一串信息,数据之间用“ , ” 分隔

元组用 () 定义

元组的索引从 0 开始

举例: 
    tuple = ("zzz",1,1.0)
    for a in tuple:
        print(a)
        
Python给元组提供两个方法:
                        元组名.count		#数据 在元组中出现的次数
                        元组名.index		#数据 在元组中的索引

元组的应用场景

  1. 函数的参数和返回值 ,一个函数可以接受任意多个参数,或者一次返回多个数据
  2. 格式字符串,格式化字符串后面的 () 本质上就是一个元组
  3. 让列表不可以被修改,保护数据安全
格式化字符串举例:
    info_tuple = ("张三",20,1.75)
    print("%s 年龄是 %d 身高是 %.02f" % info_tuple)
或者:  
    info_tuple = ("张三",20,1.75)
    print("%s 年龄是 %d 身高是 %.02f" % info_tuple)
    info_tuple2 = "%s 年龄是 %d 身高是 %.02f" % info_tuple
    print(info_tuple2)

元组与列表的拷贝

list1 = [1,2,"zhangsan",1.5]	#定义个列表
info_tuple = ("张三",20,1.75)	  #定义个元组

info_tuple2 = tuple(list1)		#把列表的值拷贝给一个元组
print(type(info_tuple2))		#打印类型

list2 = list(info_tuple)		#把一个元组的值拷贝给列表
print(type(list2))				#打印类型

在这里插入图片描述

字典

介绍

dictionary(字典)是除列表外Python中最灵活的数据类型

字典同列表、元组一样可以存储多个数据,通常用于描述一个物体的相关信息

和列表的区别:

  1. 列表是有序的对象集合
  2. 字典是无序的对象集合

字典用 { } 定义

字典使用 键值对 存储数据

常用方法和注意点

  1. 键(key) 是索引
  2. 值(value)是数据
  3. 键和值直接用 “ : ”分隔
  4. 键必须是唯一的
  5. 值 可以取任何数据类型,但 键 只能用字符串、数字 或元组
  6. 键值对之间用 “ , ” 分隔
  7. 特别的:字典是一个无序的集合,输出时会发现定义和输出的顺序不一定相同
举例:
    zhangsan = {
                "name":"zhangsan",
                "gender":True,
                "height":1.80
                }
	print(zhangsan)

常用方法:
		len(字典名)  		#获取字典的 键值对数量
		字典.keys()		 #所有的key列表
		字典.values()		 #所有的value列表
		字典.items()		 #所有的(key , value)元组列表
		
		取值:			#这三种方法如果取的键是不存在的,程序会报错
			print(字典["键名"])  		#比如:print(zhangsan["name"])
		增加/修改:
			字典["键名"] = 值		   #比如:zhangsan["age"] = 18
		删除:
			字典.pop("键名")			#比如:张三.pop("age")
		合并字典:
			字典1.update(字典2)			#注意:如果被合并的字典中有数据冲突,则会覆										#		盖原有的键值对
		清空字典:
			字典.clear()			

注意:

​ 在Python中定义一个字典,例如:list{ },输入list. 就可以提示列表可以使用的方法

​ 当你不知道这个方法是用来干什么的时候,你可以敲出来然后对着关键字按 Ctrl,就会出现方法的解释

举例:
	zhangsan = {
                "name":"zhangsan",
                "age":18,
                "gender":True,
                "height":1.80
                }
    for a in zhangsan:
    print("%s  %s" % (a,zhangsan[a]))		#字典的遍历,前者是键,后者是值
    print(zhangsan.items())
    print(zhangsan.keys())

在这里插入图片描述

在这里插入图片描述

应用场景

尽管可以用for in遍历字典

但是在开发中,更多的应用场景是:

  1. 使用多个键值对,存储 描述一个 物体的相关信息 —描述更复杂的数据信息
  2. 多个字典 放在 一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理
card_list = [
            {"name":"张三",
            "age":"18",},
            {"name":"李四",
            "age":"20",}
            ]
for a in card_list:
    print(a)

在这里插入图片描述

字符串

可以使用单/ 双引号 定义字符串,但是大部分常用双引号 " "

只有在字符串中引用才用单引号,比如: str = '它的外号叫"大黄" '

字符串的操作

字符串的索引由0开始,可以通过索引获取字符串中指定位置的字符

也可以用for遍历 字符串中的每一个字符

操作:
	字符串长度:
			len(字符串)	#获取字符串长度
	小字符串出现次数:
			字符串.count("小字符串") 		#小字符串在大字符串中出现次数
	提取单个字符:
			字符串[索引]
	小字符串第一次出现的索引:
			字符串.index("小字符串")

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意:

​ 在Python中定义一个字符串,例如:str = " ",输入list.` 就可以提示列表可以使用的方法

​ 当你不知道这个方法是用来干什么的时候,你可以敲出来然后对着关键字按 Ctrl,就会出现方法的解释

字符串的切片

切片 方法适用于 字符串、列表、元组

切片的说明:

  1. 切片使用索引值来限定范围,从一个大的字符串中切出小的字符串
  2. 列表和元组都是有序的集合,都能够通过索引值获取到对应的数据
  3. 字典是一个无序的集合,是使用键值对保存数据(不能切片)

注意:

1. 指定的区间属于 左闭右开,[开始索引,结束索引)  -->   开始索引<=  范围 <结束索引
2. 从头开始,开始索引 数字可以省略,冒号不能省略
3. 到末尾结束,结束索引的数字可以省略,冒号不能省略
4. 步长默认为1,如果连续切片,数字和冒号都可以省略
语法:#开始/结束索引划定范围,步长是指跳跃的步长,从开始/结束索引根据步长来得到一个小字	  #符串
	字符串[开始索引:结束索引:步长]
	
举例:
	str = "0123456789"
    #截取2345
    print(str[2:6:1])
    
    #截取2-末尾
    print(str[2::])
    
    #截取开始-5
    print(str[:6:])
    
    #截取完整字符串
    print(str[::])
    
    #从开始每个一个字符取一个
    print(str[::2])
    
    #字符串逆序
    print(str[-1::-1])

在这里插入图片描述

类型转换

函数说明
int(x)将x转换为整数
float(x)将x转换为浮点数

字符串中的转义字符

转义字符描述
\反斜杠符号
\’单引号
\"双引号
\n换行
\tTab
\r回车

输入与输出

操作PythonC++
输入字符串变量 = input(“提示信息”)cin
输出print(x)cout

在这里插入图片描述

input直接输入的话是字符串类型,可以用int强制转换

输出

% 称为 格式化操作符 , 专门用于处理字符串中的格式

与C的打印函数类似

格式化字符含义
%s字符串
%d有符号十进制整数,%06d 表示输出输出的整数显示位数,不足的地方用0补全
%f浮点数,%.02f 表示小数点后只显示两位
%%输出%

语法格式:

print("格式化字符" % 变量1)
print("格式化字符" % (变量1,变量2.....))

举例:

print("My name is  %s,你好!" % name)

print("苹果的单价是 %.02f 元/斤,购买 %.02f 斤,需要支付 %.02f 元" % (price,weigth,money))

print("成绩及格的占比在 %.02f%% " % (scale*100))

换行

在默认情况下,print函数输出内容后,会自动在末尾添加换行

如果不希望换行,则可以在内容后面加:end = “”

语法:
	print("*",end="")	 #表示在print输出内容后,继续希望显示的内容

关键字

import keyword
print(keyword.kwlist)
#这两行代码可以查看Python中的关键字
# 不能定义与关键字相同名字的标识符

if-else语句

格式:
	if  要判断的条件:
		代码.....			#条件  成立  时要做的事情
	else:
		代码.....			#条件  不成立  时要做的事情

注意:代码缩进为一个tab键,或者4个空格,建议使用空格

Python开发中,tab和空格不要混用

举例:

age =18
if age >= 18:
    print("成年")
else:
    print("未成年")

补充

C++中有
if
	else if
	else if.....
	
Python中有
if  要判断的条件:
		代码.....			#条件  成立  时要做的事情
	elif 要判断的条件:
		代码.....			#否则
	elif 要判断的条件:	 #否则

if 嵌套

注意点: 缩进是有要求的,内层if-else前要有tab,print要有两个tab

age =10
if age >= 18 :
    print("成年")
    if age >= 18 and age>50 and age<60:
        print("中年")
    else:
        print("老年")
else :
    print("未成年")

循环

while

语法:			#条件的几种形式
	while  条件(判断 计数器 是否达到 目标次数):
		代码.......
		处理条件(计数器+1)
		
举例:
    i=1
    while i<=5:
        print("Hello World")
        i += 1
    print("i = %d" % i)
    
  	i=0
	while i<=10:
    	i += 1
        if i == 5:
            break
	print("i = %d" % i)

Python 没有 自增和自减 i++,i–

同C++一样,continue:退出当前循环,break:退出整个循环

循环嵌套

语法:			#条件的几种形式
	while 条件1(判断 计数器 是否达到 目标次数):
		代码.......
		
		while 条件2
			代码.....
			处理条件2
			
		处理条件1
		
		
举例:九九乘法表

k = 1
while k<=9:   
    j = 1
    while j<=k:    
        print("%d * %d = %d " % (k,j,k*j),end="")
        j += 1
    print("")
    k += 1

for

Python中为了提高列表的遍历效率,专门提供的迭代iteration遍历,使用for实现

列表、元组、字典都可以用

语法:
	for 变量名 in 列表:
		print("" % 变量名)
	

解释:顺序的方式从列表中依次获取数据,每次循环过程中,数据都会保存在变量中

举例:
	list = [1,2,3,4,5,5,5,6,7,8,9]
    for a in list:
        print("%d" % a)

完整的for循环语法:

语法: #循环遍历完成才能进行else,break是中途退出了,所以不会进行else
	for 变量名 in 集合:
		循环体代码
	else:
		(没有通过break退出循环)循环结束后,会执行的代码

导入模块

类比C++的头文件

随机数

import random
random.				就会提示该模块包含的所有函数

例如:
	random.randint(a,b)  #返回[a,b]之间的整数
	
	random.randint(12,20)	#生成12-20的随机数
	random.randint(10,10)	#结果永远是20
	random.randint(10,5)	#语句错误,必须 a<=b

import导入模块

导入:
    import 模块名1
    import 模块名2

导入之后:	#当模块名过长时,可以起别名
		import 模块名1 as 模块别名

调用:
	通过 模块名. 使用模块提供的工具-->全局变量、函数、类

from…import导入

如果希望 从某一个模块中,导入 部分工具,就可以使用 from...import 方式

导入:
	from 模块名1 import 工具名 (as 别名)

导入之后:
		不需要通过 模块名.  访问
		可以直接使用模块提供的工具-->全局变量、函数、类 

注意:如果两个模块,存在同名函数,那么后导入的会覆盖先前导入的函数

若发现冲突,可以用as关键字给其中一个工具起别名 来解决这个问题

包(package)

概念:

  • 包是一个 包含多个模块的 目录
  • 目录下有一个特殊的文件 __init__.py

优点:

​ 使用 import 包名 可以一次性导入包中所有模块

函数(重点)

函数的复用

举例:
程序1:
	def m_table():	#该行包含函数
        i = 1
        while i<=9:   
            j = 1
            while j<=i:    
                print("%d * %d = %d " % (i,j,i*j),end="")
                j += 1
            print("")
            i += 1

程序2:		#程序2中可以调用程序1的函数
	 import h_九九乘法表
	 
	 h_九九乘法表.m_table() # 在某个位置根据需要调用该句

说明:

​ 每个扩展名为py的Python源代码都是一个模块

​ 在模块中定义的 全局变量、函数 都是模块能够提供给外界直接使用的工具

​ 如果一个模块中定义了多个函数,在另一个程序中调用时,可以用 Ctrl+Q 来查看模块

​ 调用一个模块之后,模块名就是标识符,模块名不能是数字开头

调用方式:

​ 在另一个文件中使用 import 导入模块

​ 使用 模块名.变量 / 模块名.函数 的方式调用变量或函数

定义函数

先定义再调用

语法:
	def 函数名(参数):
		封装代码
		.......

def 是 define 的缩写

举例:
    def say_Hello():		#定义函数
        i=0
        while i<5:
            print("Hello")
            i += 1

    say_Hello()				#调用函数
    
    def sum(a,b):
    	return a+b
    a = 10
    b = 5
    print(sum(a,b))

函数的形参可以缺省(即给形参赋值),但是缺省参数必须在参数列表末尾

def infor(name , age = 18 , gender)   #错误
def infor(name , gender, age = 18 )   #正确

多值参数

有时一个函数处理的参数个数是不确定的,这时候就可以用多值参数

Python 中有两种多值参数

  1. 参数名前增加一个 * 可以接收 元组
  2. 参数名前增加两个 ** 可以接收 字典
def demo(*args, **kwargs):
    print(args)
    print(kwargs)
    #接收若干个参数
args = {1,2,3,4,5}
kwargs = {"name" : "小明","age":18,"gender":True}
demo(*args , **kwargs)

控制台输出内容:
(1, 2, 3, 4, 5)
{'name': '小明', 'age': 18, 'gender': True}

返回值

多个返回值

一个函数执行后返回多个结果的方式 元组

元组可以包含多个数据,因此可以使用元组让函数一次性返回多个值


def infor():
    name = "张三"
    age = 20
    return name,age		#如果返回类型是元组,则小括号可以省略
result = infor()
print(result)			#全部打印
print(result[0])		#打印name
print(result[1])		#打印age

#如果返回类型是元组,也可以用多个变量,来依次接收函数的返回结果
#同时变量次数要和元组中的元素个数相同
gl_name,gl_age = infor()
print(gl_name)
print(gl_age)

函数内修改函数外的变量

如果传递的参数是 可变类型 ,则在函数内部通过方法修改形参,可以导致实参值改变

举例:
    def demo(list):			#列表   可变
        list[0] = 1000
        list.append(500)
        print(list)
    list = [1,2,3]
    demo(list)
    print(list)

    def demo1(num):			#int  不可变
        num = 1000
        print(num)
    num = 10
    demo1(num)
    print(num)

在这里插入图片描述

递归函数

Python的递归函数和C++有所不同,Python中需要手动敲入递归出口,否则会出现死循环

def sum_numbers(num):
    print(num)
    #递归出口
    if num == 1:
        return
    sum_numbers(num-1)
sum_numbers(3)

举例:递归求和

def demo(num):
    if num == 1:
        return 1
    result = demo(num-1)
    return result + num
a = int(input())
result = demo(a)
print(result)

在这里插入图片描述

公共方法

Python内置函数

在这里插入图片描述

注意:字符串的比较符合规则: “0” < “A” <“a”

list = [1,2,3,5,100]
print(max(list))			# 100

切片

切片支持的数据类型:字符串、列表、元组

说明:

  1. 切片使用索引值来限定范围,从一个大的字符串中切出小的字符串
  2. 列表和元组都是有序的集合,都能够通过索引值获取到对应的数据
  3. 字典是一个无序的集合,是使用键值对保存数据(不能切片)

变量

变量的引用

Python中 函数 的 参数传递 以及 返回值 都是靠引用传递的

概念

  1. 变量和数据都是分开存储的
  2. 数据 保存在内存中的一个位置
  3. 变量 中保存着数据在内存中的地址
  4. 变量 中 记录着数据的地址,就叫做引用
  5. 使用 id() 函数可以查看变量中保存数据所在的内存地址

注意:如果变量已被定义,当给一个变量赋值的时候,本质上是修改了数据的引用

变量不再对应之前的数据引用,而是改为对新赋值的数据引用

举例:
def test(num):
    print(id(num))

a = 10
print(id(a))
print(id(10))			#a 和 num 指向 10的地址
test(a)
a = 20
print(id(a))			#a 和 num 指向 20的地址
print(id(20))
test(a)

在这里插入图片描述

调用test函数,本质上传递的是实参保存数据的引用,而不是实参保存的数据

局部/全局变量

与C++相同

定义在 函数内部 的变量,且只能在函数中使用,叫局部变量

定义在 函数外部 的变量,且所有函数都可以使用,叫全局变量(大多不使用)

不同函数,定义名字相同的局部变量,彼此之间无影响

全局变量

定义并赋值给全局变量后,如果在函数体中给全局变量重新赋值,其本质是创建一个同名的局部变量并赋值,全局变量的值实际并未改变

全局变量值修改方式:	关键字 global
				num = 10 		 		#定义全局变量
				def demo():
					global num			#给全局变量重新赋值
					num = 99

文件

操作文件的三个步骤:

  1. 打开文件
  2. 读、写文件
    • 读:将文件内容读入内存
    • 写:将内存内容写入文件
  3. 关闭文件

操作文件的方法/函数

序号函数/方法说明
1open打开文件,并且返回文件操作对象
2read将文件内容读取到内存
3write将指定内容写入文件
4close关闭文件

open 函数 负责打开文件,并且返回文件对象

read/write/close 方法都需要通过 文件对象 来调用

read方法 – 读取文件

  • open 函数的第一个参数是要打开的文件名(区分大小写)

    如果文件 存在返回文件操作对象

    如果文件 不存在 ,会 抛出异常

  • read 方法可以一次性 读入返回 文件的 所有内容

  • close 方法用于 关闭文件 ,否则会造成资源消耗

  • 注意:方法执行后,会把 文件指针 移动到 文件的末尾

#1.打开
file = open("reader.txt")

#2.读取
text = file.read()
print(text)			#打印出reader文本文件中的所有信息

#3.关闭
file.close()

注意:在开发中,通常先把 打开 和 关闭 代码

文件指针

  • 文件指针 标记 从哪个位置开始读取数据

  • 第一次打开文件时,通常文件指针指向文件的开始位置

  • 当执行了 read 方法后,文件指针 会移动到 读取内容的末尾

    默认情况下会移动到文件末尾

    执行了一次read后,因为指针指向了文件末尾,所以再使用一次read方法,就不会再读取内容了

按行读取文件内容

read方法 默认会把文件的 所有内容 一次性读取到内存

如果文件太大,对内存的占用会非常严重

readline方法

  • readline 方法可以一次读取一行内容
  • 方法执行后,会把 文件指针 移动到下一行,准备再次读取

读取大文件的方式:

#打开文件
file = open("reader.txt")

while True:

    #读取一行内容
    text = file.readline()
    
    #判断是否读取到内容
    if not text:
        break
        
    #每读取一行的末尾已经有了一个换行符
    print(text,end="")
    
#关闭文件
file.close()

打开文件

open 函数 默认以 只读方式 打开文件,并且返回文件对象

语法:
	f = open("文件名" , "访问方式")

在这里插入图片描述

举例:
    file = open("reader.txt","a")
    file.write("Hello Python")
    file.close()

在这里插入图片描述

案例

文件的复制

#小文件
        #打开
        file_read = open("reader.txt")
        file_write = open("reader1.txt","w")

        #读、写
        text = file_read.read()
        file_write.write(text)

        #关闭
        file_read.close()
        file_write.close()
#大文件
		#打开
        file_read = open("reader.txt")
        file_write = open("reader1.txt")

        #读、写
        while True:
            #读取一行
            text = file_read.readline()
            #判断是否读取到内容
            if not text:
                break

            file_write.write(text)

        #关闭
        file_read.close()
        file_write.close()

文件/目录的常用管理操作

在 终端/文件浏览器 中可以执行常规的 文件/目录 管理操作,例如:

创建、重命名、删除、改变路径、查看目录内容…

在Python中,如果希望通过程序实现上述功能,需要导入os模块

文件操作:

序号方法名说明示例
1rename重命名文件os.rename(源文件名 , 目标文件名)
2remove删除文件os.remove(文件名)

目录操作:

序号方法名说明示例
1listdir目录列表os.listdir(目录名)
2mkdir创建目录os.mkdir(目录名)
3rmdir删除目录os.rmdir(目录名)
4getcwd获取当前目录os.getcwd()
5chdir修改工作目录os.chdir(目标目录)
6path.isdir判断是否是文件os.path.isdir(文件路径)

注意:文件或目录操作都支持 相对路径绝对路径

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以C++为基础入门Python,看这一篇就够了!!超级详细 的相关文章

  • c++字符串连接函数strcat_s

    格式 int a 100 61 0 int b 100 61 0 strcat s a b 功能 把字符数组2 b 连到字符数组1 a 后面 字符数组1必须足够大 连接前两串以 0 结束
  • Python语音合成探究(二、朗读文本的编码问题)

    语音合成时 xff0c 选取的朗读文本大多是网上收集来的TXT 文件 xff0c 有些文件会因为编码原因打开不了 xff0c 程序运行出错 如同样是 离骚 txt 文档 xff0c 用 with open 39 离骚 txt 39 as f
  • 关于Windows上的Android子系统安装

    Win11早些时候的版本公式里展示的安卓系统 Windows Subsystem for Android 简称WSA xff0c 现在可以在电脑中使用 xff0c 过了一年多的时间才想起还有个这种功能 xff0c 在安装时也是发现一些小细节
  • 大一上学期C++课程设计——学生成绩管理系统(QT项目)

    这里是一个大一的萌新 xff01 仅做学习分享 工程文件在评论区置顶 xff01 xff01 近期整理了一下大一上学期的课程设计报告作为学习总结 xff0c 使用的软件是Qt Creator xff0c 主界面效果如下图 QT具体环境如下图
  • 单片机控制直流电机(风扇)电路详解

    单片机引脚为什么无法直接控制电机或风扇 xff1f 我们在使用单片机去控制 43 5V的直流电机或者散热风扇时 xff0c 可能会有一种疑惑 xff0c 51单片机的引脚电压为 43 5V xff0c 为什么不直接用单片机引脚去驱动电机或者
  • [NOIP2002 普及组] 过河卒

    题目描述 棋盘上 AA 点有一个过河卒 xff0c 需要走到目标 BB 点 卒行走的规则 xff1a 可以向下 或者向右 同时在棋盘上 CC 点有一个对方的马 xff0c 该马所在的点和所有跳跃一步可达的点称为对方马的控制点 因此称之为 马
  • Qt学习笔记(5)

    目录 一 菜单栏 MenuBar 二 工具栏 ToolBar 三 状态栏 StatusBar 四 浮动窗口 DockWidget 五 右键菜单 六 托盘菜单 一 菜单栏 MenuBar 只能有一个 创建的最上方 菜单栏有两种方式可以创建 x
  • ftp 命令访问 ftp服务器

    服务端与客户端 登录到FTP服务器时 xff0c 你可以看到服务端的文件 xff0c 这个时候就要有一个区分 xff0c 一个是服务端 xff0c 一个是客户端 xff0c 你发起连接的这台电脑就叫做客户端 xff0c 要连接的FTP服务器
  • day13-面向对象3

    一 私有权限 封装的意义 xff1a 将属性和方法放到一起做为一个整体 xff0c 然后通过实例化对象来处理 xff1b 隐藏内部实现细节 xff0c 只需要和对象及其属性和方法交互就可以了 xff1b 对类的属性和方法增加 访问权限控制
  • 如何在Linux下安装软件,以移植安装libjpeg解码库为例(总结)

    首先 xff0c 从软件官方网站或者其它渠道获取安装软件源码包 xff0c 选择所需软件版本 xff0c 解压放到一个自定义目录下 安装Linux软件通常需要如下三个步骤 xff1a 步骤一 xff1a xff1a configure xx
  • keil5里错误怎么解决Undefined symbol STM32_Control (referred from main.o).

    解决方法 xff1a 遇见这样的问题是忘记添加 xff08 c xff09 文件了 xff0c 如果不知道添加哪个 xff0c 可以根据下面显示的错误点击转到定义文件 xff0c 和 c文件 哪个没有就是缺少哪个文件啦 xff0c 直接添加
  • Ubuntu 安装CUDA

    1 查看操作系统的发行版号和操作系统版本 uname a Linux herri01 HP Z4 G4 Workstation 5 15 0 48 generic 54 Ubuntu SMP Fri Aug 26 13 26 29 UTC
  • 用冒泡法对10个整数从小到大排序。

    第一次学冒泡排序 xff0c 给十个数进行排序 xff0c 我们用到的是冒泡法 xff0c 每次将最大的一个数放到最后 xff0c 由于前九次已经把后面的序列排好 xff0c 所以一共只需要进行九次即可 xff1b 同时在进行第i次排序的时
  • spring boot集成mybatis-plus——Mybatis Plus 批量 Insert_新增数据(图文讲解)

    Mybatis Plus 批量 Insert 新增数据 图文讲解 更新时间 2023 01 10 16 02 58 前言 大家好 xff0c 我是小哈 本小节中 xff0c 我们将学习如何通过 Mybatis Plus 实现 MySQL 批
  • python中输出函数print()的一些必要知识

    一 print基本格式 1 仅用于输出字符串 格式 xff1a print 要输入的字符串 例子 xff1a print 34 希望世界和平 34 2 仅用于输出变量 格式 xff1a print 变量1 xff0c 变量2 xff0c 例
  • 洛谷练习题——入门(顺序结构)P1001、P5703、P5704、P5705、P5706

    有感 xff1a 昨天从同学哪里接触到了洛谷这个刷题的网站 xff0c 感觉对于我这个新手很友好 xff0c 连续刷了几道题 xff0c 有点上头的感觉 xff0c 很有成就感 xff0c 虽然知道这是很简单的题 xff0c 但是对于目前的
  • C语言:字符串常用函数:

    本篇文章介绍了字符串最最最 最常用的函数 xff0c 看到的朋友们一定不要错过哦 xff0c 全是干货 xff0c 记得收藏起来 xff0c 别等想要的时候找不到了 xff01 所给的测试样例只是例子 xff0c 小伙伴们也可以自己用不同的
  • RAID5的搭建

    1 磁盘阵列raid5级别是带有校验码的条带磁盘组 xff0c 所以至少要四块磁盘 xff0c 其中一块磁盘用作存储校验码 xff0c 如下图查看当前系统中磁盘状态 xff0c 与其它阵列不同的是这个海明码可以存储在每一块磁盘中 xff0c
  • 群晖docker实现阿里云动态公网域名解析ddns服务

    日常生活中 xff0c 一般家庭用户宽带使用的都是内网ip xff0c 如果需要在外网就是远程使用 xff0c 需要将家庭ip向电信部门申请变更为公网ip xff0c 通常情况下 xff0c 我们获得的都是动态公网ip xff0c 这种ip
  • 采用顺序栈,实现一个简易计算器

    首先需要区分中缀表达式与后缀表达式 xff08 中缀转为后缀即可进行计算 xff09 xff1a 例如中缀表达式为12 43 3 6 43 2 2 15 3 那么所求的后缀表达式的步骤为 1 判断12是数字 xff0c 不入栈 xff0c

随机推荐