Python的使用

news2024/11/24 5:56:08

1、打印:print(‘hello’)

2、Python的除法是数学意义上的除法 print(2/3)  输出:0.6666...

3、a=18  a=‘hello’  print(a)  可以直接输出  

4、**2 表示2的平方

5、打印类型 print(type(a))

6、基本数据类型(Python中的变量类型不需要定义变量的时候声明,根据初始化的类型自行进行确定)

(1)int 整数 表示的范围可以自动扩容,范围是无穷的

(2)float(也是双精度的等同于java的double) 小数,浮点数

(3)str 字符串类型  a='hello'或a="hello"都可以  如果我们想在一个字符串里面还有字符串 我们可以写成    'MY name is "zhangsan"'  单引号套着双引号,也可以双引号套着单引号  如果我们的语句里又有单引号又有双引号可以写成 '''my 'name' is "hello"'''

(4)bool 布尔类型 只有真True和假False

7、查看字符串的长度: print(len(d)) 输出d字符串的长度

8、字符串拼接 a1=’hello‘ a2=’word‘ print(a1+a2) 不能字符串类型和数字类型混合相加

9、类型声明: a:int  但是a不会因为声明就无法动态转换类型

10、注释:

(1)注释行:#

(2)"""     """

(3)批量注释(批量取消注释):

(3.1)选中要注释的代码

(3.2)使用ctrl+/

11、打印a=10这个内容(格式化字符串)

也可以

12、通过控制台来输入函数(实际上此时的num是个str类型)

13、强制类型转换

(1)a=int(a)

(2)a=str(a)

(3)a=float(a)

14、两个数字相加

(1)

a=input("请输入第一个整数:")
b=input("请输入第二个整数:")
a=int(a)
b=int(b)
print(f"您输入的数字是{a+b}")

(2)如果不转换类型就是字符串拼接

a=input("请输入第一个整数:")
b=input("请输入第二个整数:")
print(f"您输入的数字是{a+b}")

15、运算符的使用

(1)% 求余数

(2)** 进行乘方运算(能够支持整数也支持小数  **0.5  **2)

(3)/ 除数 不能以0为底

(4)//  地板除法(取整除法,向下取整) 7//2 输出3  -7//2 输出 -4

16、关系运算符(对应的表达式是布尔类型,表达式符合要求为真,不符合要求为假)

(1)<= 小于等于

(2)>= 大于等于

(3)== 等于(可以比较内容)

(4)!= 不等于

17、关系运算符不光可以针对数字进行比较,还能比较字符串

(1)比较的是按字典序

(2)也可以比较中文,不过用处不大

18、当用==比较浮点数时候我们需要注意是有误差的 0.1+0.2==0.3 可能是False因为是有小量误差 我们可以写成   -0.00001<0.2+0.1-0.3<0.000001

19、逻辑运算符(当第一个表达式判定成功,第二个表达式就不用再进行判断了)短路求值

(1)and 并且(一假则假)

(2)or 或者

(3)not 相反

20、多元赋值

(1)a,b=10,20

21、变量交换

(1)a,b=b,a

22、运算式

(1)a+=1 等于 a=a+1

(2)*=  /=  -=  **= //=  %=  都类似(1)

22、不支持 ++  --这种操作

23、if判断语句

num=input("请输入数")
if num=='1':
    print("输入的是1")
elif num=='2':
    print("输入的是2")
else:
    print("不知道输入的啥")

24、注意我们的python非常注重换行

(1)两个输出分开执行

num=input("请输入数")
if num=='1':
    print("输入的是1")
print("你输入的是2")

(2)两个输出一起执行

num=input("请输入数")
if num=='1':
    print("输入的是1")
    print("你输入的是2")

(3)非法情况

25、if嵌套使用

num1=input("请输入数")
num2=input("请输入")
if num1=='1':
    if num2=='2':
        print("num1=1 并且 num2=2")
    print("num1=1 num2!=2")
print("num1!=1  num2!=2")

26、输入的 a=input(" 请输入a的值")  a=int(a)  可以写成 a=int(input(" 请输入a的值")) 

27、-19%2 也等于1

28、if判断下面要有需要执行的语句不然会报错,如果实在不想写东西可以写一个pass

num1=input("请输入数")
if num1=='1':
    pass
else:
    pass

29、while循环语句(打印1-10)

num1=1
while num1<=10:
    print(num1)
    num1=num1+1

30、for循环

(1)打印1-10

for i in range(1,11):
    print(i)

(2)设置步长,默认步长是1(打印2,4,6,8,10)

for i in range(2,11,2):
    print(i)

(3)反着打印(10-1)

for i in range(10,0,-1):
    print(i)

31、批量修改变量名:shift+F6

32、结束循环

(1)continue 立即结束当前循环进入下次循环

(2)break 立即结束整个循环

33、生成随机数:random.randint(1,6)  生成一个从一到六的随机数,这个是前闭后闭区间[1,6]

34、有的方法我们不能直接用,需要导入包import 有的会自动导入,有的需要手动导入

35、退出执行程序

36、暂停一秒在执行

import time
time.sleep(1)

37、定义函数,调用函数(求1-100的和)

#定义函数
def calcSum(beg,end):
    theSum=0
    for i in range(beg,end+1):
        theSum=theSum+i
    print(theSum)
#调用函数
calcSum(1,100)

38、我们定义的函数结构体

(1)def 函数名(形参列表):

(2)函数体

(3)return 返回值(可以有可以没有)

39、函数调用

(1)函数名(实参列表)

(2)返回值=函数名(实参列表)      (有返回值的情况下,没返回值就用(1))

40、也可以进行无参数定义调用(不调用函数不会执行)

def test():
    print("11111")
test()

41、 可以多次调用

def test():
    print("11111")
test()
test()
test()
test()

42、注意定义的形参数要和实参数对应的上,数量要一样,对应上的参数要符合运算规范

43、返回值函数的应用(运算10+20)

def test(a,b):
    return a+b
num=test(10,20)
print(num)

44、多元赋值

(1)两个值都要

def test():
    a=10
    b=20
    return a,b
c,d=test()
print(c,d)

(2)只要b赋值给d

def test():
    a=10
    b=20
    return a,b
_,d=test()
print(d)

45、函数名相同但是是不同变量,函数里面的a,b和外面的a,b不一样

(1)

def test():
    a=10
    b=20
    return a,b
a,b=test()
print(a,b)

(2)举例(x=10是全局变量,函数内部的属于局部变量)全局变量在整个程序中有效,局部变量只在函数内部有效

x=10
def test():
    x=20
    print(f'函数里面的X={x}')
test()
print(f'函数外面的X={x}')

(3)如果我们没在函数内部定义x我们就会输出全局变量的x如果全局也没x就会报错

x=10
def test():
    print(f'函数里面的X={x}')
test()

(4)可以将我们的函数内部的局部变量,修改为全局变量(global)

x=10
def test():
    global x
    x=20
    print(f'函数里面的X={x}')
test()
print(f'函数外面的X={x}')

46、在python里面只有函数和类会涉及到作用域,我们的if和for等代码块定义的i我们可以直接在for外面进行输出

举例:

for i in range(1,11):
    print(i)
print("-------------")
print(i)

47、递归调用(求5的阶乘)

def factor(n):
    if n==1:
        return 1
    return n*factor(n-1)
print(factor(5))

48、我们在定义默认参数时候(不能把非默认参数放到默认参数后面)

(1)add(x,y,flg=False) 正确

(2)add(x,flg=False,y) 错误

49、传递参数可以不按顺序传不过要加上参数名

def add(x,y):
    return x+y
num=add(y=10,x=20)
print(num)

50、列表和元组

(1)列表:可变的,创建之后能改

(2)元组:不可变,创建好之后改不了,除非创建新元组

51、创建列表

(1)a=[ ]

(2)a=list()

(3)创建列表时设置初始值 a=[1,2,3] 

(4)列表里的值是无限制的 a=[1,'hello',True,[1,2,3]]

52、下标访问列表

(1)a[2]  下标从0开始算  a[2]表示获取列表第三个数

53、下标修改元素 (a=[1,2,3,4])

(1)a[2]=100     输出 [1,2,100,4]

54、求字符串,列表,元组,字典,自定义类等长度

(1)len(要求的名)

55、表示列表最后一个元素

(1)a[len(a)-1]

(2)a[-1]

56、切片操作

(1)左闭右开

a=[1,2,3,4]
print(a[1:3])

(2)从下标1开始取到最后(省略后边界)

a=[1,2,3,4]
print(a[1:])

(3)省略前边界(从0下标开始取)

a=[1,2,3,4]
print(a[:2])

(4)前后都省略掉,得到完整列表

a=[1,2,3,4]
print(a[:])

(5)带有步长的切片操作(每隔5个元素取一次)

a=[1,2,3,4,5,6,7,8,9]
print(a[::5])

(6)从一开始到七每隔5个元素取一次

a=[1,2,3,4,5,6,7,8,9]
print(a[1:7:5])

(7)倒着取元素

a=[1,2,3,4,5,6,7,8,9]
print(a[::-1])

57、遍历列表

(1)对元素进行更改时候不能用,因为更改的是 i 不是列表 a

a=[1,2,3,4,5,6,7,8,9]
for i in a:
    print(i)

(2)当我们需要对元素进行更改时候要用这个或(3)

a=[1,2,3,4]
for i in range(0,len(a)):
    print(a[i])

(3)同(2)的描述

a=[1,2,3,4]
i=0
while i<len(a):
    print(a[i])
    i=i+1

58、往列表新插元素

(1)往末尾插(append)

a=[1,2,3,4]
a.append(5)
a.append('hello')
print(a)

(2)任意位置新增(insert)insert有两个元素第一个往哪里插,第二个插入啥元素

a=[1,2,3,4]
a.insert(1,'hello')
print(a)

(3)如果insert过大就插入到最后

a=[1,2,3,4]
a.insert(100,'hello')
print(a)

59、判断元素是否在列表中存在

(1)判断存在

a=[1,2,3,4]
print(1 in a)

(2)判断不存在

a=[1,2,3,4]
print(1 not in a)

60、使用index方法判定元素在列表中的位置

a=[1,2,3,4]
print(a.index(2))

61、删除列表的元素

(1)删除最后的元素pop

a=[1,2,3,4]
a.pop()
print(a)

 

(2)删除任意位置元素pop

a=[1,2,3,4]
a.pop(1)
print(a)

(3)按照元素值来删除 remove

a=[1,2,3,4]
a.remove(2)
print(a)

62、列表拼接

(1)不修改列表a和b的内容(低效)

a=[1,2,3,4]
b=[5,6,7,8]
c=a+b
print(c)

 

(2)修改内容,把后一个列表内容拼接到前一个里面(高效)

a=[1,2,3,4]
b=[5,6,7,8]
a.extend(b)
print(a)

63、创建元组

(1)a=()

(2)a=tuple()

(3)创建元组并给初始值 a=(1,2,3,4) 和列表一样可以是任意类型

64、通过下标来访问元组

(1)也是从0开始到len-1结束(也可以是负数,负数就是倒着取)

a=(1,2,3,4)
print(a[1])

65、元组切片(和列表操作一样)

a=(1,2,3,4)
print(a[1:3])

66、遍历元组和列表一样

67、判断元素是否存在,查找元素下标也跟列表一样

68、可以用+来拼接两个元组,不支持修改操作

(1)append,pop,extend都是不可以使用的

69、在我们上面讲到的多元赋值其实就是用元组的方式进行工作的

70、元组主要的就是只读操作,不可以写(多人协作开发时用处很大),元组是不可变对象,是可以哈希的

71、字典(一种存储的键值对结构,key:value的形式,id:1)

72、创建字典

(1)创建空字典

(1.1)a={}

(1.2)a=dict()

(2)创建有内容的字典

a={
    'id':1,
    'name':'zhangsan'
}
print(a)

73、查找key是否在字典中(不能用此方法查value)

(1)查找存在用 in

a={
    'id':1,
    'name':'zhangsan'
}
print('id' in a)

(2)查找不存在用 not in

74、根据key获取value

(1)当key为str类型

a={
    'id':1,
    'name':'zhangsan'
}
print(a['id'])

(2)key也可以是int类型

a={
    'id':1,
    'name':'zhangsan',
    100:'lisi'
}
print(a[100])

75、对于列表来说in是比较低效的(遍历整个列表),对于字典来说in是高效的(字典背后用了哈希表)

76、字典的新增操作

a={
    'id':1,
    'name':'zhangsan',
    100:'lisi'
}
a['sex']=1
print(a)

77、在字典中根据key修改value(如果key不存在新增,如果key存在就修改)

a={
    'id':1,
    'name':'zhangsan',
    100:'lisi'
}
a['id']=10
print(a)

78、 字典中删除操作

a={
    'id':1,
    'name':'zhangsan',
    100:'lisi'
}
a.pop(100)
print(a)

79、遍历字典(谁在第一先遍历谁,谁先插入进来先遍历谁)

(1)

a={
    'id':1,
    'name':'zhangsan',
    100:'lisi'
}
for key in a:
    print(key,a[key])

 

(2)keys获取到字典中的所有key

a={
    'id':1,
    'name':'zhangsan',
    100:'lisi'
}
print(a.keys())

(3)values获取到字典中的所有values

a={
    'id':1,
    'name':'zhangsan',
    100:'lisi'
}
print(a.values())

(4)items获取到字典中的所有键值对

a={
    'id':1,
    'name':'zhangsan',
    100:'lisi'
}
print(a.items())

(5)遍历key和value

a={
    'id':1,
    'name':'zhangsan',
    100:'lisi'
}
for key,value in a.items():
    print(key,value)

 

80、合法的key类型

(1)可hash类型(可以为key的)int  str bool  tuple float

(2)不可hash类型(不可以为key的):list   dict

81、文件操作

(1)文件路径:举例:D:/program/qq/Bin/QQ.exe(路径是指在硬盘上的详细位置)( / 和  \ 都行)

(2)打开文件(读):open('D:/python/test.txt','r')(第一个参数是打开哪个文件,第二个 r 是打开方式,r表示read,按读方式打开,w 表示write表示按写的方式打开,a表示写的方式打开,不过是在原有内容的末尾写,追加写)   open('D:/python/test.txt','r')是有返回值的我们可以接收一下 f=open('D:/python/test.txt','r')此处的 f 就是文件对象,相当于遥控器,操作 f 就可以了

(3)关闭文件(文件打开完是一定要关闭的,为了释放系统资源):f.close()

(4)我们的python中有自带的垃圾回收机制,会自动把我们不用的文件进行回收

(5)打开文件(写):w会清空前面写的内容

f=open('D:/python/test.txt','w')
f.write('hello')
f.close()

(6)打开方式(追加写):不会清除前面已经写的内容

f=open('D:/python/test.txt','a')
f.write('word')
f.close()

(7)加\n是换行

f=open('D:/python/test.txt','a')
f.write('word\n')
f.close()

82、读文件(我们的python一般是按gbk的方式读,我们需要改成utf8)

(1)读两个字节,相当于读两个汉字

f=open('D:/python/test.txt','r',encoding='utf8')
result=f.read(2)
print(result)
f.close()

(2)按行来读

f=open('D:/python/test.txt','r',encoding='utf8')
for line in f:
    print(f'line={line}')
f.close()

 (3)按照(2)打印出来会有空行,我们可以把print的默认空行取消

f=open('D:/python/test.txt','r',encoding='utf8')
for line in f:
    print(f'line={line}',end='')
f.close()

(4)使用readlines方法直接把整个文件内容都读出来,按照行组织到一个列表里

f=open('D:/python/test.txt','r',encoding='utf8')
line=f.readlines()
print(line)
f.close()

83、上下文管理器(可以避免我们在close文件前有return导致文件没法正常关闭)

(1)自动关闭文件,调用with代码块结束自动close(不在怕return)

def func():
    with open('D:/python/test.txt','r',encoding='utf8') as f:
        #要执行的代码

84、使用库

(1)标准库(python自带的库)

(2)第三方库(其他人做出来的)

85、使用第三方库计算日期

(1)写法1

import datetime
date1=datetime.datetime(2024,2,14)
date2=datetime.datetime(2030,10,1)
print(date2-date1)

(2)写法2

from datetime import datetime
date1=datetime(2024,2,14)
date2=datetime(2030,10,1)
print(date2-date1)

(3)写法3

import datetime as dt
date1=dt.datetime(2024,2,14)
date2=dt.datetime(2030,10,1)
print(date2-date1)

86、代码案例(逆置字符串)

def reverseWords(s:str):#给s指定类型
    tokens=s.split(' ')  #空格做分割截取
    tokens.reverse() #逆置截取的字符
    return ' '.join(tokens)#调用空格的join方法进行拼接
print(reverseWords('hello word'))

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

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

相关文章

安卓四大组件之Activity

目录 一、简介二、生命周期三、启动模式3.1 Standard3.2 Single Task3.3 SingleTop3.4 Single Instance3.5 启动模式的配置 四、Activity 的跳转和数据传递4.1 Activity 的跳转4.1.1 直接跳转4.1.2 回调 4.2 Activity 的数据传递4.2.1 传递普通数据4.2.2 传递一组数据4.2.3 传递…

【LinuxC语言】系统日志

文章目录 前言一、系统日志的介绍二、向系统日志写入日志信息三、示例代码总结 前言 在Linux系统中&#xff0c;系统日志对于监控和排查系统问题至关重要。它记录了系统的运行状态、各种事件和错误信息&#xff0c;帮助系统管理员和开发人员追踪问题、进行故障排除以及优化系统…

分割链表----一道题目的3种不同的解法

1.题目概述 以这个题目的事例作为例子&#xff0c;我们看一下这个题目到底是什么意思&#xff08;Leedcode好多小伙伴说看不懂题目是什么意思&#xff09;&#xff0c;就是比如一个x3&#xff0c;经过我们的程序执行之后&#xff1b;大于3的在这个链表的后面&#xff0c;小于3的…

Linux使用操作(二)

进程的管理_ps 程序运行在计算机操作系统中&#xff0c;由操作系统进行管理。为了管理正在运行的程序&#xff0c;每个程序在运行时都被注册到操作系统中&#xff0c;形成进程 每个进程都有一个独特的进程ID&#xff08;进程号&#xff09;&#xff0c;用来区别不同的进程。进…

C++初阶-----对运算符重载的进一步理解(2)

目录 1.对于加加&#xff0c;减减运算符的重载理解 2.const修饰的一些事情 3.日期对象之间的减法实现逻辑 1.对于加加&#xff0c;减减运算符的重载理解 &#xff08;1&#xff09;在C语言里面&#xff0c;我们已经知道并且了解加加&#xff0c;减减的一些基本的用法&#…

STM32H7 HSE时钟的使用方法介绍

目录 概述 1 STM32H750 HSE时钟介绍 2 使用STM32Cube创建Project 3 认识HSE时钟 3.1 HSE时钟的特性 3.2 HSE的典型应用电路 4 STM32Cube中配置时钟 4.1 时钟需求 4.2 配置参数 4.2.1 使能外围资源 4.2.2 使用STM32Cube注意项 4.2.3 配置参数 5 总结 概述 本文主要…

超强鉴别 cdn 小工具

最近做一个攻防演习&#xff0c;使用了一些工具收集域名&#xff0c;子域名&#xff0c;但是在将这些域名解析成 IP 这个过程遇到了一些小问题&#xff0c;默认工具给出的 cdn 标志根本不准&#xff0c;所以被迫写了这么一个小工具&#xff1a;get_real_ip.py PS&#xff1a;下…

ThreeJS:项目搭建

介绍如何基于Vite、Vue、React构建ThreeJS项目。 Vite项目 1. 初始化项目&#xff0c;命令&#xff1a;npm init vitelatest&#xff0c; 2. 安装依赖&#xff0c;命令&#xff1a;npm install&#xff0c; 3. 启动项目&#xff0c;命令&#xff1a;npm run dev。 4. 样式初始…

神经网络中的优化方法

一、引入 在传统的梯度下降优化算法中&#xff0c;如果碰到平缓区域&#xff0c;梯度值较小&#xff0c;参数优化变慢 &#xff0c;遇到鞍点&#xff08;是指在某些方向上梯度为零而在其他方向上梯度非零的点。&#xff09;&#xff0c;梯度为 0&#xff0c;参数无法优化&…

基于Springboot的滑雪场管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的滑雪场管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&a…

【linuxC语言】守护进程

文章目录 前言一、守护进程的介绍二、开启守护进程总结 前言 在Linux系统中&#xff0c;守护进程是在后台运行的进程&#xff0c;通常以服务的形式提供某种功能&#xff0c;如网络服务、系统监控等。守护进程的特点是在启动时脱离终端并且在后台运行&#xff0c;它们通常不与用…

如何使用免费软件从Mac恢复音频文件?

要从Mac中删除任何文件&#xff0c;背后是有原因的。大多数Mac用户都希望增加Mac中的空间&#xff0c;这就是为什么他们更喜欢从驱动器中删除文件以便出现一些空间的原因。一些Mac用户错误地删除了该文件&#xff0c;无法识别这是一个重要文件。例如&#xff0c;他们错误地从Ma…

I/O体系结构和设备驱动程序

I/O体系结构 为了确保计算机能够正常工作&#xff0c;必须提供数据通路&#xff0c;让信息在连接到个人计算机的CPU、RAM和I/O设备之间流动。这些数据通路总称为总线&#xff0c;担当计算机内部主通信通道的作用。 所有计算机都拥有一条系统总线&#xff0c;它连接大部分内部…

ps科研常用操作,制作模式图 扣取想要的内容元素photoshop

复制想要copy的图片&#xff0c; 打开ps---file-----new &#xff0c;ctrolv粘贴图片进入ps 选择魔棒工具&#xff0c;点击想要去除的白色区域 然后&#xff0c;cotrol shift i&#xff0c;反选&#xff0c; ctrol shiftj复制&#xff0c;复制成功之后&#xff0c;一定要改…

【Java EE】Mybatis之XML详解

文章目录 &#x1f38d;配置数据库连接和MyBatis&#x1f340;写持久层代码&#x1f338;添加mapper接口&#x1f338;添加UserInfoXMLMapper.xml&#x1f338;单元测试 &#x1f332;CRUD&#x1f338;增(Insert)&#x1f338;删(Delete)&#x1f338;改(Update)&#x1f338;…

CMake:静态库链接其他动态库或静态库(九)

1、项目结构 对于下面这样一个项目 把calc模块做成静态或者动态库把sort模块做成静态库然后再sort模块中的*.cpp调用calc模块生成的库即可&#xff08;这样就制作了一个静态库引用动态或者静态库&#xff09;test模块用于测试sort模块中的内容 . ├── calc │ ├── ad…

ThreeJS:本地部署官网文档与案例

部署方式 部署之前请确保已经配置好node.js环境。 1. 下载ThreeJS源码 ThreeJS的GitHub地址&#xff1a;GitHub - mrdoob/three.js: JavaScript 3D Library.&#xff0c;可以简单查看ThreeJS当前版本&#xff1a;r164&#xff0c; 我们可以选择对应的版本&#xff08;此处为r1…

【跟马少平老师学AI】-【神经网络是怎么实现的】(七-2)word2vec模型

一句话归纳&#xff1a; 1&#xff09;CBOW模型&#xff1a; 2c个向量是相加&#xff0c;而不是拼接。 2&#xff09;CBOW模型中的哈夫曼树&#xff1a; 从root开始&#xff0c;向左为1&#xff0c;向右为0。叶子结点对应词有中的一个词。每个词对应唯一的编码。词编码不等长。…

计算机等级考试2级(Python)知识点整理

计算机等级考试2级&#xff08;Python&#xff09;知识点整理 1.基础知识点&#xff08;记忆、理解&#xff09; 第1讲Python概述 01. 源代码 02. 目标代码 03. 编译和解释 04. 程序的基本编写方法 第2讲 Python语言基础&#xff08;一&#xff09; 01. 用缩进表示代码…

深入理解网络原理1

文章目录 前言一、网络初识1.1 IP地址1.2 端口号1.3 协议1.4 五元组1.5 协议分层 二、TCP/IP五层协议三、封装和分用四、客户端vs服务端4.1 交互模式4.2 常见的客户端服务端模型4.3 TCP和UDP差别 前言 随着时代的发展&#xff0c;越来越需要计算机之间互相通信&#xff0c;共享…