Python-VBA函数之旅-input函数

目录

一、input函数的常见应用场景:

二、input函数使用注意事项:

三、如何用好input函数?

1、input函数:

1-1、Python:

1-2、VBA:

2、推荐阅读:

个人主页:神奇夜光杯-CSDN博客 



一、input函数的常见应用场景:

        input函数在Python中主要用于获取用户的文本输入,其基础用法相对直接,常见的应用场景有:

1、动态交互:使用input()函数可以根据用户的输入动态地改变程序的执行流程。例如,在创建一个交互式游戏或命令行工具时,可以根据用户的输入来更新游戏状态或执行不同的命令。

2、用户身份验证:通过input()函数可以获取用户的用户名和密码,然后进行验证,这可以用于简单的登录系统或访问控制。

3、复杂数据输入:虽然input()函数默认返回字符串,但我们可以结合其他函数(如`int()`, `float()`, `list()`, `dict()`等)来解析和处理用户输入的复杂数据类型。例如,通过分割字符串,我们可以将用户输入的多个值转换为一个列表或字典。

4、循环输入:使用循环结构(如`while`循环)结合input()函数,可以实现持续的用户输入,直到满足某个条件为止,这在需要用户输入多个值或进行多次选择时非常有用。

5、条件输入:通过结合条件语句(如`if-else`),我们可以根据用户的输入执行不同的操作。例如,根据用户的选择来显示不同的信息或执行不同的功能。

6、异常处理:由于用户输入可能是不预期的或无效的,因此使用异常处理(如`try-except`块)来捕获和处理可能的错误是非常重要的。这可以确保程序的健壮性和用户体验。

7、自定义输入提示和验证:通过自定义input()函数的提示信息,并结合逻辑验证用户输入的有效性,可以提高用户界面的友好性和程序的准确性。

8、构建交互式界面:结合其他库(如`curses`或第三方库如`tkinter`、`PyQt`等),可以使用input()函数构建更复杂的交互式界面。

        总之,任何需要与用户进行文本交互的程序都可以利用input()函数来收集用户输入。

二、input函数使用注意事项:

        使用Python的input()函数时,需要注意以下事项:

1、安全性和隐私保护:在获取用户输入时,特别要注意保护用户隐私和确保安全性,不要将敏感信息(如密码、个人身份信息)直接通过input()函数获取,而是应该使用更安全的方法来处理这些信息。

2、避免过度依赖用户输入:过度依赖用户输入可能导致程序逻辑复杂且容易出错,在设计程序时,应尽量减少对用户输入的依赖,或者提供默认值以简化输入过程。

3、考虑国际化和本地化:当面向不同语言和文化的用户时,需要考虑国际化和本地化的问题,确保提示信息和错误消息能够适应不同的语言和文化背景,以提高用户体验。

4、注意界面差异:input()函数通常用于命令行界面(CLI)的程序中,如果你正在开发一个图形用户界面(GUI)的程序,那么可能需要使用不同的方法来获取用户输入,比如通过按钮、文本框等控件。

5、输入长度限制:在某些情况下,你可能希望限制用户输入的长度,以避免程序处理过大的输入数据,可以通过在提示信息中说明长度限制,并在程序中检查输入长度来实现。

6、避免阻塞主线程:在GUI程序中,长时间运行的input()函数调用可能会阻塞主线程,导致界面无响应,在这种情况下,应该使用异步编程或线程来避免阻塞。

7、文档和注释:为使用input()函数的代码段提供适当的文档和注释,说明预期的输入类型、格式和用途,这有助于其他开发者理解你的代码,并减少潜在的错误和混淆。

        综上所述,使用input()函数时需要注意安全性、隐私保护、国际化、本地化、输入长度限制、避免阻塞主线程以及提供适当的文档和注释等方面的问题,通过谨慎处理用户输入并遵循最佳实践,你可以创建出更加健壮、安全和用户友好的程序。

三、如何用好input函数?

        要用好Python中的input()函数,需遵循以下建议及原则:

1、明确提示信息:提供清晰、具体的提示信息,告诉用户应该输入什么,这有助于用户理解你的程序期望什么类型的输入。

2、处理输入类型:由于input()总是返回字符串,所以你需要根据需要将其转换为其他类型,使用适当的类型转换函数,如`int()`, `float()`, `list()`, `dict()`等。

3、验证输入的有效性:对输入进行验证,确保它符合你的期望,使用条件语句和异常处理来检查输入的有效性。

4、提供默认值或备选方案:当用户没有提供期望的输入时,提供默认值或备选方案可以简化程序逻辑。

5、使用循环获取多个输入:如果需要用户输入多个值,可以使用循环来重复调用input()函数。

6、格式化提示和输出:使用字符串格式化来增强提示和输出的可读性。

7、处理可能的异常:总是准备处理可能发生的异常,如`ValueError`(当类型转换失败时)或`EOFError`(当在交互式解释器中使用`input()`时)。

8、保持输入简单明了:尽量避免让用户输入复杂的结构或长文本,如果可能,提供选项让用户选择,或使用其他输入方法(如文件读取或GUI控件)。

9、编写清晰的文档和注释:为你的代码编写清晰的文档和注释,解释每个input()函数调用的目的和预期的用户输入,这有助于其他开发者理解你的代码,并在需要时进行维护。

10、测试你的代码:确保对使用input()函数的代码进行充分的测试,包括正常输入、异常输入和边界情况,这有助于确保你的程序能够健壮地处理各种用户输入。

        总之,只有遵循这些建议和最佳实践,你才可以更好地利用Python中的input()函数,并创建出更加健壮、易用的程序。

1、input函数:
1-1、Python:
# 1.函数:input
# 2.功能:可以提示并接收用户的输入内容,将所有的输入内容按照字符串进行处理,并返回一个字符串
# 3.语法:input([prompt])
# 4.参数:prompt,可选参数,表示提示信息
# 5.返回值:返回一个字符串
# 6.说明:
# 7.示例:
# 用dir函数获取input函数的相关信息
print(dir(input))
# ['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
#  '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__',
#  '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__',
#  '__str__', '__subclasshook__', '__text_signature__']# 用help函数获取input函数的相关信息
help(input)# 应用1:动态交互
# 简单的用户输入
# 提示用户输入名字
name = input("请输入你的名字:")
print(f"你好,{name}!")
# 请输入你的名字:Myelsa
# 你好,Myelsa!# 选择菜单
# 选择菜单
print("请选择以下选项:")
print("1. 选项一")
print("2. 选项二")
print("3. 退出")
while True:choice = input("请输入你的选择(1-3):")if choice == '1':print("你选择了选项一")elif choice == '2':print("你选择了选项二")elif choice == '3':print("退出程序")breakelse:print("无效的输入,请重新选择")
# 请选择以下选项:
# 1. 选项一
# 2. 选项二
# 3. 退出
# 请输入你的选择(1-3):1
# 你选择了选项一
# 请输入你的选择(1-3):4
# 无效的输入,请重新选择# 获取用户年龄并进行判断
age = input("请输入你的年龄:")
try:age = int(age)if age >= 18:print("你已经成年了")else:print("你还未成年")
except ValueError:print("无效的输入,请输入一个整数")
# 请输入你的年龄:18
# 你已经成年了# 动态计算
num1 = input("请输入第一个数字:")
num2 = input("请输入第二个数字:")
try:num1 = float(num1)num2 = float(num2)result = num1 + num2print(f"{num1} + {num2} = {result}")
except ValueError:print("无效的输入,请输入数字")
# 请输入第一个数字:10
# 请输入第二个数字:24
# 10.0 + 24.0 = 34.0# 应用2:用户身份验证
# 假设我们有一个预设的用户名和密码
correct_username = "myelsa"
correct_password = "123"
# 获取用户输入的用户名和密码
username = input("请输入用户名:")
password = input("请输入密码:")
# 检查用户名和密码是否正确
if username == correct_username and password == correct_password:print("身份验证成功!欢迎,", username)
else:print("身份验证失败!请检查您的用户名和密码是否正确。")
# 请输入用户名:myelsa
# 请输入密码:123
# 身份验证成功!欢迎, myelsa# 应用3:复杂数据输入
# 输入列表
# 输入列表,每个元素通过空格分隔
input_str = input("请输入一个由空格分隔的元素列表:")
# 使用split方法将字符串转换为列表
input_list = input_str.split()
print("你输入的列表是:", input_list)
# 请输入一个由空格分隔的元素列表:3,5,6,8,10,11,24
# 你输入的列表是: ['3,5,6,8,10,11,24']# 输入字典
# 输入字典,每个键值对通过冒号分隔,键值对之间通过逗号分隔
input_str = input("请输入一个由冒号分隔键和值,通过逗号分隔的字典:")
# 去除首尾空格,并按逗号分割成键值对
pairs = input_str.strip().split(',')
# 创建字典
input_dict = {}
for pair in pairs:key, value = pair.split(':')input_dict[key.strip()] = value.strip()
print("你输入的字典是:", input_dict)
# 请输入一个由冒号分隔键和值,通过逗号分隔的字典:Myelsa:18,Jimmy:15,Bruce:6
# 你输入的字典是: {'yelsa': '18', 'Jimmy': '15', 'Bruce': '6'}# 输入自定义对象的属性
class Person:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"Person(name={self.name}, age={self.age})"
# 输入姓名和年龄来创建Person对象
name = input("请输入姓名:")
age = input("请输入年龄:")
try:age = int(age)  # 尝试将年龄转换为整数person = Person(name, age)print("你创建的Person对象是:", person)
except ValueError:print("年龄必须是整数,请重新输入。")
# 请输入姓名:Myelsa
# 请输入年龄:18
# 你创建的Person对象是: Person(name=Myelsa, age=18)# 输入嵌套数据(如列表的列表)
# 输入嵌套列表,每个内部列表由空格分隔,外部列表由换行符分隔
input_str = ""
while True:line = input("请输入一个由空格分隔的元素列表(或输入'done'结束):")if line.lower() == 'done':breakinput_str += line + "\n"
# 使用eval函数(注意:eval有安全风险,仅用于演示目的)
nested_list = eval(input_str)
print("你输入的嵌套列表是:", nested_list)# 应用4:循环输入
# 循环输入直到输入特定值
# 循环输入,直到用户输入'quit'为止
while True:user_input = input("请输入一些内容(输入'quit'退出):")if user_input.lower() == 'quit':breakprint("你输入的是:", user_input)
# 请输入一些内容(输入'quit'退出):myelsa
# 你输入的是: myelsa
# 请输入一些内容(输入'quit'退出):quit# 循环输入并累加数字
# 循环输入数字,并累加,直到输入非数字为止
total = 0
while True:try:number = float(input("请输入一个数字(输入非数字退出):"))total += numberprint("当前累加和是:", total)except ValueError:print("输入的不是有效的数字,退出累加。")break
# 请输入一个数字(输入非数字退出):10
# 当前累加和是: 10.0
# 请输入一个数字(输入非数字退出):24
# 当前累加和是: 34.0
# 请输入一个数字(输入非数字退出):5
# 当前累加和是: 39.0
# 请输入一个数字(输入非数字退出):11
# 当前累加和是: 50.0
# 请输入一个数字(输入非数字退出):myelsa
# 输入的不是有效的数字,退出累加。# 循环输入多个值并存入列表
# 循环输入多个值,并存入列表,直到输入'done'为止
values = []
while True:user_input = input("请输入一个值(输入'done'结束):")if user_input.lower() == 'done':breakvalues.append(user_input)
print("你输入的值列表是:", values)
# 请输入一个值(输入'done'结束):1024
# 请输入一个值(输入'done'结束):done
# 你输入的值列表是: ['1024']# 循环输入直到输入有效选项
# 循环输入,直到用户输入有效选项(例如1、2或3)
while True:user_input = input("请选择以下选项(1-3):")if user_input in ['1', '2', '3']:print(f"你选择了选项{user_input}")breakelse:print("无效的输入,请重新选择")
# 请选择以下选项(1-3):4
# 无效的输入,请重新选择
# 请选择以下选项(1-3):5
# 无效的输入,请重新选择
# 请选择以下选项(1-3):2
# 你选择了选项2# 应用5:条件输入
# 根据用户输入执行不同操作
# 询问用户想要执行的操作
user_input = input("你想做什么?(1)打印问候语,(2)计算数字,(3)退出:")
# 根据用户输入执行不同的操作
if user_input == '1':print("你好,欢迎来到这个程序!")
elif user_input == '2':num1 = float(input("请输入第一个数字:"))num2 = float(input("请输入第二个数字:"))print("两个数字的和是:", num1 + num2)
elif user_input == '3':print("感谢使用,再见!")
else:print("无效的输入,请重新选择。")
# 你想做什么?(1)打印问候语,(2)计算数字,(3)退出:1
# 你好,欢迎来到这个程序!# 根据用户输入判断年龄范围
# 询问用户年龄
age = int(input("请输入你的年龄:"))
# 根据年龄范围执行不同的操作
if age < 0:print("年龄不能是负数,请重新输入。")
elif age < 18:print("你还是未成年人。")
elif age >= 18 and age < 65:print("你是成年人。")
else:print("你是老年人。")
# 请输入你的年龄:70
# 你是老年人。# 根据用户输入进行多条件判断
# 询问用户一些信息
name = input("请输入你的名字:")
grade = input("请输入你的成绩等级(A/B/C/D/F):")
# 根据成绩等级和名字输出不同信息
if grade == 'A':print(f"{name},你的成绩很优秀!")
elif grade == 'B':print(f"{name},你的成绩良好。")
elif grade == 'C':print(f"{name},你的成绩中等。")
elif grade == 'D':print(f"{name},你的成绩需要努力。")
elif grade == 'F':print(f"{name},很遗憾,你需要重新努力。")
else:print("无效的成绩等级输入。")
# 请输入你的名字:Myelsa
# 请输入你的成绩等级(A/B/C/D/F):A
# Myelsa,你的成绩很优秀!# 根据用户输入选择游戏难度
# 询问用户想要的游戏难度
difficulty = input("请选择游戏难度(easy/medium/hard):")
# 根据难度选择执行不同的游戏逻辑
if difficulty == 'easy':print("游戏难度设置为简单模式。")# 执行简单模式的游戏逻辑
elif difficulty == 'medium':print("游戏难度设置为中等模式。")# 执行中等模式的游戏逻辑
elif difficulty == 'hard':print("游戏难度设置为困难模式。")# 执行困难模式的游戏逻辑
else:print("无效的难度选择,游戏将使用默认难度。")# 执行默认难度的游戏逻辑
# 请选择游戏难度(easy/medium/hard):easy
# 游戏难度设置为简单模式。# 应用6:异常处理
# 处理ValueError异常
try:user_input = input("请输入一个整数:")number = int(user_input)print("你输入的整数是:", number)
except ValueError:print("对不起,你输入的不是一个有效的整数,请重新输入!")
# 请输入一个整数:myelsa
# 对不起,你输入的不是一个有效的整数,请重新输入!# 处理ZeroDivisionError异常
try:dividend = float(input("请输入被除数:"))divisor = float(input("请输入除数(不能为0):"))result = dividend / divisorprint("计算结果是:", result)
except ZeroDivisionError:print("错误:除数不能为0,请重新输入!")
except ValueError:print("输入的不是有效的数字,请重新输入!")
# 请输入被除数:24
# 请输入除数(不能为0):2
# 计算结果是: 12.0# 自定义异常处理
class InvalidInputError(Exception):pass
def get_positive_integer():while True:try:user_input = input("请输入一个正整数:")number = int(user_input)if number <= 0:raise InvalidInputError("输入的数字必须大于0!")return numberexcept ValueError:print("你输入的不是一个有效的整数,请重新输入!")except InvalidInputError as e:print(e)
# 使用自定义函数
positive_integer = get_positive_integer()
print("你输入的正整数是:", positive_integer)
# 请输入一个正整数:12
# 你输入的正整数是: 12# 使用try-except-finally结构
try:# 尝试执行可能会抛出异常的代码user_input = input("请输入一个文件名:")with open(user_input, 'r') as file:content = file.read()print("文件内容是:", content)
except FileNotFoundError:print("文件未找到!请检查文件名是否正确?")
except IOError as e:print("输入/输出错误:", e)
finally:# 无论是否发生异常,这部分代码都会执行print("程序执行完毕!")
# 请输入一个文件名:myelsa
# 文件未找到!请检查文件名是否正确?
# 程序执行完毕!# 应用7:构建交互式界面
# 用户登录界面
def login():users = {"admin": "123", "user": "456"}while True:username = input("请输入用户名:")password = input("请输入密码:")if username in users and users[username] == password:print("登录成功!")returnelse:print("用户名或密码错误,请重试!")
# 调用登录函数
login()
# 请输入用户名:admin
# 请输入密码:123
# 登录成功!
1-2、VBA:
略,待后补。
2、推荐阅读:

1、Python-VBA函数之旅-hex()函数

Python算法之旅:Algorithm

Python函数之旅:Functions 

个人主页:神奇夜光杯-CSDN博客 

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

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

相关文章

Git命令行操作(本地操作)

入口 1、任意目录》鼠标右键》Open Git Bash here 2、桌面快捷方式 本地库初始化 在本地库项目文件夹执行命令:git init 验证是否执行成功 .git目录中存放的是本地库相关的子目录和文件,不要删除、修改 设置签名 1、形式 用户名:tom Email地址:GoodMorning@qq.com 2、作…

cdp集群主节点根目录磁盘扩容

查看挂载点 df -h可以看到&#xff0c;根目录容量只有37G&#xff0c;现在对根目录进行扩容 查看根目录挂载的磁盘大小 lsblk挂载磁盘名字为vda&#xff0c;磁盘容量有80G&#xff0c;现在磁盘使用量为vda下面三个分区vda1&#xff0c;vda2&#xff0c;vda3容量之和&#xf…

AI测试干货!实例讲解AI自动生成测试用例

1.引言 在软件开发过程中&#xff0c;测试用例的生成是至关重要的一步。测试用例是用于验证软件功能、性能和安全性的具体测试方法&#xff0c;是确保软件质量的关键手段。 随着人工智能&#xff08;AI&#xff09;技术的发展&#xff0c;基于AI的测试用例生成技术逐渐成为未…

报销管理如何秒变高效神器?

一、客户介绍 易快报作为业界知名的企业报销管理平台&#xff0c;一直致力于为企业提供高效、便捷的报销服务。随着业务的不断扩展&#xff0c;易快报面临着与多个外部系统进行数据交互的需求&#xff0c;以提升工作效率和减少数据差错。中信建投作为国内领先的金融机构&#…

Docker镜像与容器操作

一、Docker 镜像操作 1.1 搜索镜像 格式&#xff1a;docker search 关键字 docker search nginx 1.2 获取镜像nginx 格式&#xff1a;docker pull 仓库名称[:标签] 如果下载镜像时不指定标签&#xff0c;则默认会下载仓库中最新版本的镜像&#xff0c;即选择标签为 latest…

DOM4标准的事件监听与滚屏优化

EventTarget.addEventListener() 我们在学习addEventListener()时都只是知道它是用来给事件注册事件处理函数的。但是这种描述并不是很准确&#xff0c;MDN上给我们准确的描述了它的定义。EventTarget.addEventListener()方法将指定的监听器注册到EventTarget上&#xff0c;当…

字符长、看不懂、费率飙升|Runes协议上线后发生了什么?

作者&#xff1a;比特里里 X/推&#xff1a;lilyanna_btc 1、字符数长了&#xff0c;单词都完整了&#xff0c;反而看不懂了 由于 Runes 协议的字符长度限制&#xff0c;大部分的票都在 13 个字符及以上&#xff0c;人名、域名、slogan&#xff0c;各类玩法都出来了。很多人适…

文本向量化模型新突破——acge_text_embedding勇夺C-MTEB榜首

在人工智能的浪潮中&#xff0c;以GPT4、Claude3、Llama 3等大型语言模型&#xff08;LLM&#xff09;无疑是最引人注目的潮头。这些模型通过在海量数据上的预训练&#xff0c;学习到了丰富的语言知识和模式&#xff0c;展现了出惊人的能力。在支撑这些大型语言模型应用落地方面…

JS----前端不同格式的 UUID生成

前端 UUID生成 export const generateUUID () > {let timestamp new Date().getTime()let performanceNow (typeof performance ! undefined && performance.now && performance.now() * 1000) || 0return xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx.replac…

免费好用的AI绘画生成器推荐,建议收藏!

AI绘画生成器可以根据设计师的需求生成各种风格、主题的绘画作品&#xff0c;无论是现代抽象&#xff0c;还是古典风景&#xff0c;都能应有尽有。任何人只需几步简单操作&#xff0c;都可以轻松使用这款工具&#xff0c;就能生成出令人惊艳的作品。那么免费好用的AI绘画生成器…

docker部署通义千问-7B-Chat的openai-api环境

服务器环境&#xff1a; 显卡驱动&#xff1a;Driver Version: 530.30.02 CUDA版本&#xff1a;CUDA Version: 12.1 显卡&#xff1a;NVIDIA GeForce RTX 3090共4张 注意&#xff1a;最好把显卡驱动升级到530&#xff0c;CUDA版本之前使用11.7有问题。 一、下载模型文件 …

Linux之安装Nginx

目录 传送门前言一、快速安装二、反向代理语法1、基本语法2、location语法1. 基本语法2. 匹配规则3. 修饰符4. 权重5. 嵌套location6. 其他指令7.案例 三、配置反向代理 传送门 SpringMVC的源码解析&#xff08;精品&#xff09; Spring6的源码解析&#xff08;精品&#xff0…

2024年深圳杯东三省数学建模联赛A题论文首发第二种思路

深圳杯A题论文代码分享资料链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1L2NVgoefSW-yuqZjEB3wcw 提取码&#xff1a;sxjm 问题一 数据转换&#xff1a; 首先&#xff0c;我们将监测站的经纬度坐标转换为基于米的笛卡尔坐标系。这是因为在地面上的大尺度距离…

selenium‘拟人包装‘设置

1、设置header,proxy 1.1关于user-agent 输入about:version 找到user-agent: import requests # 引用requests库 from selenium import webdriver#载入浏览器驱动#header&#xff0c;proxy设置 optionswebdriver.ChromeOptions()#实例化浏览器参数设置options.add_argument…

探索深度与广度的平衡:迭代加深深度优先搜索技术解析

探索深度与广度的平衡&#xff1a;迭代加深深度优先搜索技术解析 迭代加深深度优先搜索&#xff08;IDDFS&#xff09;的基本原理伪代码C语言实现讨论结论 迭代加深&#xff08;Iterative Deepening Depth-First Search, IDDFS&#xff09;是一种用于解决搜索问题的方法&#x…

解决配置Tomcat时,找不到war和war exploded问题

解决配置Tomcat时&#xff0c;找不到war和war exploded问题 文章目录 解决配置Tomcat时&#xff0c;找不到war和war exploded问题前言一、解决方法&#xff1a;1. war exploded2. war 总结 前言 提示&#xff1a;以下是本篇文章正文内容&#xff1a; 一、解决方法&#xff1a;…

spring的跨域问题

跨域问题 什么是跨域解决跨域 什么是跨域 跨域问题本质是浏览器的一种保护机制&#xff0c;它的初衷是为了保证用户的安全&#xff0c;防止恶意网站窃取数据。如果出现了以下情况中的任意一种&#xff0c;那么它就是跨域请求&#xff1a; 1、协议不同&#xff0c;如 http 和 h…

网站想实现HTTPS访问需要有哪些步骤?

网站要实现HTTPS访问&#xff0c;以确保数据传输安全和提升用户信任度&#xff0c;主要需按以下步骤操作&#xff1a; 1. 购买或申请SSL证书&#xff1a; - 根据网站类型和需求&#xff0c;选择合适的SSL证书&#xff1a;DV&#xff08;域名验证&#xff09;、OV&#xff08;组…

翻页电子图书制作小技巧分享给你

当今社会&#xff0c;二维码已经成为了信息传递的重要方式之一&#xff0c;其在电子商务、广告营销、活动推广等领域广泛应用。而如何将二维码巧妙地融入电子画册中&#xff0c;制作出高端、具有吸引力的作品&#xff0c;成为了许多设计师和营销人员关注的焦点 但是很多人却不知…

TCP协议核心一文搞懂<随手笔记>

1.简介 传输控制协议&#xff0c;是一种面向连接的、可靠的、基于IP的传输层协议。 TCP工作于传输层&#xff0c;IP在网络层&#xff0c;ARP在数据链路层 源端口和目的端口&#xff1a; 各占两个字节&#xff0c;这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个T…