「Python编程基础」第3章:控制流

在这里插入图片描述

文章目录

  • 一、用“炒菜”简单介绍下“控制流”
  • 二、布尔值
  • 三、比较运算符
  • 四、== 和 = 操作符的区别
  • 五、布尔操作符
  • 六、混合布尔和比较操作符
  • 七、代码块是什么?
  • 八、控制流语句
    • 1. if 语句
    • 2. else语句
    • 3. elif语句
    • 4. 总结
  • 九、while循环语句
  • 十、break语句
  • 十一、continue语句
  • 十二、for循环与range()函数
  • 十三、细说range()函数
  • 十四、模块导入
  • 十五、控制流的压轴戏“sys.exit()”函数,提前结束程序。
  • 十六、练习题
    • 第一题:猜数字
    • 第二题:小孩子们的“石头、剪刀、布”。

一、用“炒菜”简单介绍下“控制流”

事实上,之前学习的代码,都是一行一行执行,但是我们希望可以通过一些代码,让代码按照我们的想法,去执行。

比如:

我们希望可以跳过代码;

重复执行某一段代码;

根据我们的预期结果和实际接轨,执行某一段代码;

就像下面这个简单的“炒菜”一样,告诉你炒菜都需要做些什么事?

在这里插入图片描述

二、布尔值

前面已经学习过“整型、浮点型、字符串”,他们可以输入无数种值,但布尔值只有两种值

炒菜例子中,我们有两种判断 “有、没有”,代码中布尔值则用 “True、False”表示,意思为“是、不是”

a = True
print(a)

b = False
print(b)

代码中,我们将True和False保存在变量a、b中。

在这里插入图片描述

提一个问题,变量名能否用True或Flase命名,初学的朋友可以敲下代码试试?
在这里插入图片描述
在这里插入图片描述
在Python里,我们对类似“True”这样的词语有一个称呼叫做 「关键字」,关键字是不能用来变量命名的。

以下都属于Python的关键字:

and、as、assert、break、class、continue、def、del、elif、else、except、False、finally、for、from、global、if、import、in、is、lambda、None、nonlocal、not、or、pass、raise、return、True、try、while、with、yield

三、比较运算符

比较运算符(关系操作符),顾名思义,就是比较两个值的真假关系。

操作符含义
==等于
!=不等于
<小于
>大于
<=小于等于
>=大于等于
print(1 == 1)
print("测试划水老师傅" == "测试划水老师傅")

print(1 != 1)
print("测试划水老师傅" != "测试划水老师傅")

print(1 < 2)
print(1 > 2)

print(1 <= 1)
print(1 >= 1)

我们会发现,比较运算符可以应用于 字符串、数字、以及后面我们会学到的列表、字典等所有数据类型,如果两边的值符合比较符号逻辑判断,则值显示为True,反之为False。

在这里插入图片描述

这里提一个问题,下面这个代码输出是True还是False?请告诉我原因是什么?

print(1 == '1')

原因由于两者的数据类型不一致,在Python的语法中,认为“整数1”与“字符串1”不同。

四、== 和 = 操作符的区别

估计细心的同学已经注意到“=”、“==”这两个符号,那么他们有什么区别?不知道在学习过程中你们有没试错?

比如编写代码“print(1 = 1)”,看看代码会不会报错。

  1. = 是“赋值符号”,用于将右边的“值”赋值给左边的“变量”。
  2. == 是“等于”符号,用于比较确定两个值是否相同。

五、布尔操作符

就在刚刚,我们已经学习了“布尔值”和“比较操作符”,那么还有那些“布尔操作符”?

这里介绍剩下的3个操作符,他们的写法与操作符不一样,是以英文字母表示。

操作符含义
and
or
not

我们写写代码,看看Python运行结果。

# and 操作符
print(True and True)
print(True and False)
print(False and True)
print(False and False)

在这里插入图片描述

# or 操作符
print(True or True)
print(True or False)
print(False or True)
print(False or False)

在这里插入图片描述

# not 操作符
print(not True)
print(not False)

在这里插入图片描述

思考5分钟,你有没有发现一些写法上、结果上的规律呢?试着别看文档,自己想想答案,毕竟作为测试,观察和思考很重要!

写法上:

  1. and 和 or 都需要接收2个布尔值(或表达式),并将结果求值为一个布尔值。
  2. not 只接收1个布尔值(或表达式),并将结果求值为一个布尔值。

结果上:

  1. and 接收的2个布尔值(或表达式),必须都为真,结果才为真,如果有一个是假,则结果是假。
  2. or 简单来说就是只要有一个为真,结果就为真。
  3. not 则将一个求值结果为相反的布尔值。

六、混合布尔和比较操作符

写代码中,当然不可能仅仅用到一种操作符,大概率是要混合使用,所以是时候跟着我的代码练习下混合写法。

(代码没有标准性,只要结果正确就行,所以建议写完后,可以按照自己的理解,写写不一样代码,与自己脑子记预想的结果是否一致)

a = (1 < 2) and (3 < 4)
print(a)

b = (1 == 1) or (2 == 1)
print(b)

c = 1 + 1 == 2 and not 1 + 1 == 5 and 2 * 2 == 2 + 2
print(c)

在这里插入图片描述

你会发现,最后一行代码略显复杂,因为我还没告诉你算数操作符和布尔操作符的优先级,布尔操作符,在所有算数符和比较操作符之后,进行操作,如果你觉得难以立即,试试加上括号()。

c = (1 + 1 == 2) and not (1 + 1 == 5) and (2 * 2 == 2 + 2)
print(c)

七、代码块是什么?

控制流语句开始的部分通常都是“条件”,接下来是一个“代码块”,根据条件的布尔值,也就是“真\假”来执行代码块。

什么是代码块?

Python中,代码块的定义其实是根据**“缩进”**来完成的,这些放在一组的代码语句组成的“块”就是代码块。

# 代码块演示
login_user = "测试划水老师傅" 
login_password = "pwd123456" 
if login_user == "测试划水老师傅" and login_password == "pwd123456":
    print("登录成功") # 第1个代码块
else:
    print("登录账号或密码错误!") # 第2个代码块

代码块有以下特点:

  1. 增加缩进时,表示代码块的开始。
  2. 代码块可以包含其他代码块。
  3. 缩进减少为0时,或者与外面包围的代码块对齐时,该代码块结束。

在Python中,缩进很重要,大多数新手的代码运行结果与预期不符,发生在缩进错误。

八、控制流语句

代码块的演示,我们用到了两个控制流语句,接下来,我们就重点讲一下控制流语句的内容。

1. if 语句

if语句在任何编程语言中,都是最常见的控制语句,而执行的条件在为True时,执行if语句下的代码块。

如果用通俗的自然语言(日常用语)来描述:“如果条件为真,执行代码。”

if语句在Python中有以下几点特征:

  1. 关键字“if”。
  2. 条件(即求值为True或False的表达式)。
  3. 冒号。
  4. 在下一行开始,要缩进的代码块(行业术语称呼其为“子句”)。
name = "测试划水老师傅"
if name == "测试划水老师傅":
    print("Hi 老师傅!")

在这里插入图片描述

2. else语句

根据实际需要,if后面也可以跟着else语句。当if语句的条件为False时,就会执行else下的子句。

如果用通俗的自然语言(日常用语)来描述:“如果条件为真,执行if的代码,否则执行else的代码。”

else语句在Python中有以下几点特征:

  1. 关键字“else”。
  2. 冒号。
  3. 在下一行开始,要缩进的代码块(行业术语称呼其为“子句”)。

我们回到if的例子,继续增加else语句,输出不同的结果。

name = "老师傅"
if name == "测试划水老师傅":
    print("Hi 老师傅!")
else:
    print("呔,你是假的测试划水老师傅!")

在这里插入图片描述

3. elif语句

虽然已经有了 if 和 else,但是想想现实生活中的需求,这远远不够,比如:如果你知道了老师傅的名字和自媒体ID,怎么向老师傅打招呼呢?

(特征不再赘述)

name = "老师傅"
dy_id = "1234567"
if name == "测试划水老师傅":
    print("Hi 测试划水老师傅!")
elif dy_id == "1234567":
    print("Hi 测试划水老师傅!")
else:
    print("呔,你是假的测试划水老师傅!")

在这里插入图片描述

学完3个控制流语句,有没有发现一个很细微的特点?(思考5分钟)

如果没有发现,试试这个练习题,尝试自己写一遍并运行,如果你发现了Bug(问题),但是不会解决,可以发在老师傅的知识星球上。

name = "老师傅"
age = 30
if name == "测试划水老师傅":
    print("Hi,测试划水老师傅")
elif age == 18:
    print("Hi,测试划水老师傅")

4. 总结

if、elif、else这类控制流结构为:“如果第1个条件为真,则执行第1个事;如果第2个条件为真,则执行第2件事;否则,做另外的事。”

要记得规避练习题中的BUG,仅有一个if,elif永远跟在if之后,其次,如果希望确保至少一条子句被执行,一定要加上else语句。

九、while循环语句

什么是while循环语句,就是可以让一个代码块根据自己需求,一遍又一遍执行。比如生活中,我们吃饭时,要一口一口吃,直到吃完,就会用到循环语句。

while语句在Python中有以下几点特征:

  1. 关键字“while”。
  2. 条件(即求值为True或False的表达式)。
  3. 冒号。
  4. 在下一行开始,要缩进的代码块(行业术语称呼其为“子句”)。

通过特征来看,我们while和if比较相似,不同的是他们的行为。if子句结束时,程序会继续执行if之后的语句,而while在子句结束时,程序会跳回到while循环语句开始处继续执行,直到条件为“假”时结束。

我们用一个相同条件的代码来看看if和while的区别。

num = 0
if num < 5:
    print(f"Hi {num}")
    num = num + 1

num = 0
while num < 5:
    print(f"Hi {num}")
    num = num + 1

在这里插入图片描述

在这里插入图片描述

试试这2个练习题,尝试自己写一遍并运行,如果你发现了Bug(问题),但是不会解决,可以发在老师傅的知识星球上。

name = ""
while name != "":
    name = input("请输入你的名字:")
    print(f"您好,{name},欢迎使用该程序!")
print("谢谢使用该程序!")
name = ""
while name != "请输入你的名字":
    name = input("请输入你的名字:")
    print(f"您好,{name},欢迎使用该程序!")
print("谢谢使用该程序!")

十、break语句

break语句,可以强制跳出循环执行语句。在代码中,break语句仅包含break关键字。

试试在刚才的代码里加上break,运行一下,你会发现不一样的结果。

name = ""
while name != "请输入你的名字":
    name = input("请输入你的名字:")
    print(f"您好,{name},欢迎使用该程序!")
    break
print("谢谢使用该程序!")

在这里插入图片描述

十一、continue语句

与break类似,continue语句用于循环内部,当循环语句中的代码执行到continue时,会马上跳回到循环开始处,重新对循环条件求值。

让我们尝试编写并运行下面的代码,试试效果。

user = "Kevin"
pwd = "123456"
while True:
    input_user = input("请输入登录名:")
    if input_user != user:
        print(f"{input_user} 用户不存在!")
        continue
    input_pwd = input("请输入你的登录密码:")
    if input_pwd != pwd:
        print("密码错误,退出程序!")
        break
    print("欢迎使用!")
    break

当用户输入“input_user” 与user = "Kevin"不相等时,会提示用户不存在,跳回到循环开始处,再次对条件求值。

当用户输入“input_user” 与user = "Kevin"相等时,会提示用户输入密码,不在跳回到循环开始处。

请尝试根据代码自己画出流程图,理解代码的运行原理。

在这里插入图片描述

十二、for循环与range()函数

当条件为真时,while循环会一直运行,但是日常生活中,有些循环一直为真,但是我们需要执行一定次数后就停止运行,比如:约会时,男生通常都会等女生,假设我们等她到1个小时的时候,就不再等下去,该如何实现?

可以通过 for i in range(60): 来实现(这里的60表示60分钟)。

for i in range()语句在Python中有以下几点特征:

  1. 关键字“for”。
  2. 一个变量名。
  3. 关键字“in”。
  4. 调用range()函数,最多传入3个参数。
  5. 冒号
  6. 从下一行开始,缩进的代码块(称之为for子句)。

我们实现这个缺根弦的代码,运行看看结果。

for i in range(60):
    i = i + 1
    re_time = 60 - i
    print(f"我已经等了女朋友{i}分钟,距离我开溜还剩{re_time}分钟!")
print("这是一个缺根弦的代码,大家千万别学!")

在这里插入图片描述

第一次运行时,变量i被设置为0,当然你也可以直接从第60分钟开始(呵呵,男人),当i被判断小于60的时候,会被执行之后的子句。

为什么子句中i要先执行+1操作,那是因为现实里有“等了0分钟”这一说法吗?哈哈,写代码要与现实一致哦。

你可以试试删除一些代码,看看会发生什么变化,比如删掉“i = i + 1”,你会发现有趣的结果!

(有2处,如果你实在照不出来,可以在星球上向老师傅提问)。

在这里插入图片描述

事实上,用while也能实现,但是我不建议这样做,因为我认为Python禁止“简单的事情复杂做”。

十三、细说range()函数

这也许是你接触的第一个多参数函数,range()函数内,可以传入的参数包含“开始、结束、步长”参数,实现各种正数序列。看不懂没关系,我们使用代码来演示一下。

比如最简单的,我们通过这个函数打印1-100的数字。

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

在这里插入图片描述

第一次使用range函数,通过这个小练习,我们发现一些小特征:

  1. 通过这个函数,能够快速打印1-100,再也不用傻傻的“写100个print”了。
  2. 你会发现range的“开始”和“结束”,属于前包后不包,还记得小时候学的数学的开闭区间吗?和[1,100)道理一样。

接下来,我们再研究下步长的概念,估计很多人都遇到过一道特别简单的面试题“打印1-100的偶数”,很多培训的同学,遇到这个问题都比较慌,甚至忘了range这个函数,我们使用这个函数来打印1-100的偶数试试。

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

当然还有一种写法,可以不需要用到步长,你想到了吗?

for i in range(1, 101):
    if i % 2 == 0:
        print(i)

思考一下!

还有其他写法吗?

为什么第1段代码为什么起点是从“2”开始?(自己动手改改起点的代码试试结果?)

为什么第2段代码不需要写步长“2”?(自动动手加上步长,又会有什么结果?)

三个参数,都试试“负数”,结果又有什么不一样?

十四、模块导入

Python程序可以调用一组基本的函数,向我们见过的“print()、input()函数都属于函数”,专业属于称这些函数为“内置函数”,而他们所属的模块,称作“标准库”。当然啦,既然有“标准库”,按照剧情发展必然有“非标准库”(暂时不讲)。

那怎么区分“标准库”?“非标准库”?

还记得安装Python吗?安装完之后,你可以去查看这个目录。

(这并不是重点,就理解成手机预装软件即可)

在这里插入图片描述

我们聊聊重点。

在使用模块时,一定要使用语句import导入该模块。

import语句在Python中有以下几点特征:

  1. 关键字“import”。
  2. 模块的名称。
  3. 可选的更多模块名称,模块名称之间用英文逗号隔开。
  4. 再导入模块后,就可以在代码中直接使用该模块内的所有函数。

话不多说,直接练代码。让我们试试random模块。

import random

for i in range(5):
    print(random.randint(1, 10))

导入random模块后,我们可以直接使用这个模块内的函数,比如randint,可以生成这个区间内的“随机正数”。

在这里插入图片描述

我们不妨按住键盘“Ctrl + 鼠标左键”,查看这个模块的详细内容。

当然现阶段,你并不需要了解模块的写法,只需要了解有这么个玩意就行,放到百度翻译下这个模块的介绍,了解它是关于“随机数”的模块即可。

当然我一般也不看,甚至在我不知道有这么个随机数模块时,我需要用什么,都是百度搜索“Python 随机数(整型、浮点型)生成”的关键字,百度会告诉我用什么模块。

在这里插入图片描述

在这里插入图片描述

十五、控制流的压轴戏“sys.exit()”函数,提前结束程序。

认真看教程的同学,看到标题,应该就知道sys.exit()函数其实引入的模块是sys,顾名思义其实是面向Python解释器的一个系统级别的交互模块。

这个模块很重要,虽然还是那句话,可以百度,但是建议在百度过程中,记住几个常用函数,不然每次都百度,估计也该下岗了。

我们写一段代码,了解下如何提前结束程序。

import sys

while True:
    res = input("输入「掀桌子」,程序退出:")
    if res == "掀桌子":
        sys.exit()
    print("如果程序没有退出,会执行这个语句。")

我们之前学过break,可以跳出循环,但是如果没有,这个程序会无线循环,所以使用sys.exit()效果类似break。

在这里插入图片描述

十六、练习题

第一题:猜数字

《猜数字》游戏介绍
亲爱的玩家,你好!
欢迎来到《猜数字》游戏!
我们悄悄的藏起了一个“数字”,这个数字介于1~20之间。
请注意!!!
你共有6次机会进行尝试!
如果猜错,你将永远被困在这个冒险岛!
加油吧,冒险者!
(猜中或猜错都会有提示)

第二题:小孩子们的“石头、剪刀、布”。

《石头剪子布》游戏介绍
亲爱的玩家,你好!
欢迎来到《石头剪子布》游戏!
猜数字这个游戏,想必你已经很熟悉,我就不做过多介绍。
但有一点你需要谨记:我们会有一个计分板,当你赢得次数大于守卫者,你将逃出冒险岛!
输入规则:r(石头),s(剪刀),(布)c,q(退出)
(你可以选择“退出游戏”,但那也代表你将永远留在岛上)

当你完成后,尝试自己改进下代码,比如可以把两个游戏组成一个系列,根据用户选择,玩不同的游戏。

当然如果你有更好的想法和代码实现,可以来老师傅的星球交流。

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

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

相关文章

[读论文]DiT Scalable Diffusion Models with Transformers

论文翻译Scalable Diffusion Models with Transformers-CSDN博客 论文地址&#xff1a;https://arxiv.org/pdf/2212.09748.pdf 项目地址&#xff1a;GitHub - facebookresearch/DiT: Official PyTorch Implementation of "Scalable Diffusion Models with Transformers&qu…

在哪里可以制作一本精美的翻页产品册呢?

你是否曾经为了一张可滑动的画册而翻看了整个产品册&#xff1f;翻页产品册是一种数字化的画册形式&#xff0c;它可以在电脑、手机、平板等设备上进行浏览和阅读。相比传统的纸质画册&#xff0c;翻页产品册有着更多的优势和用途。那么&#xff0c;在哪里可以制作一本这种精美…

分布式系统架构理论与组件

文章目录 1.分布式系统的发展2.分布式系统的挑战3.分布式系统基本理论3.1 CAP定理3.2 PACELC理论3.3 BASE模型3.4 一致性算法 4.分布式架构组件4.1 主要组件4.2 辅助工具4.3 常用架构 5.常用数据库5.1 数据库的发展5.2 OLTP和OLAP5.3 常用NoSQL数据库5.4 常用关系型数据库 1.分…

如何修改Hosts文件(Windows、Linux)本机配置域名解析

Hosts文件是一种在计算机网络中存储主机名与IP地址对应关系的文本文件。通过配置Hosts文件&#xff0c;可以避免在网络环境中DNS无法正常解析时&#xff0c;出现无法访问互联网的问题。 Windows修改hosts文件 1 以windows10系统为例&#xff0c;手指同时按住 windows 键和 X 键…

php-cli

//运行index.php ./php index.php//启动php内置服务器 ./php -S 0.0.0.0:8080//启动内置服务在后台运行&#xff0c;日志输出到本目录下的server.log nohup ./php -S 0.0.0.0:8080 -t . > server.log 2>&1 &# 查找 PHP 进程 ps aux | grep "php -S 0.0.0.0:…

【Python基础篇】运算符

博主&#xff1a;&#x1f44d;不许代码码上红 欢迎&#xff1a;&#x1f40b;点赞、收藏、关注、评论。 格言&#xff1a; 大鹏一日同风起&#xff0c;扶摇直上九万里。 文章目录 一 Python中的运算符二 算术运算符1 Python所有算术运算符的说明2 Python算术运算符的所有操作…

EDMA的组成及其作用简介

EDMA是什么&#xff1f; 答&#xff1a;EDMA&#xff08;Enhanced Direct Memory Access&#xff09;是一种增强型的直接内存访问技术&#xff0c;用于高效地实现数据传输和处理。它是在传统的DMA&#xff08;Direct Memory Access&#xff09;基础上进行改进和扩展的。DMA是一…

windows的远程桌面服务RDS存在弱加密证书的漏洞处理

背景 漏洞扫描检测windows服务器的远程桌面服务使用了弱加密的ssl证书 思路 按照报告描述&#xff0c;试图使用强加密的新证书更换默认证书 解决 生成证书 通过openssl1.1.1生成&#xff08;linux自带openssl&#xff0c;windows安装的是openssl1.1.1w&#xff09;&#x…

外贸开发信主题怎么写?营销邮件标题推荐?

外贸开发信主题编写方法&#xff1f;如何用QQ邮件群发外贸邮件&#xff1f; 在外贸领域&#xff0c;写一封引人注目的开发信至关重要。外贸开发信主题应当吸引受众&#xff0c;引起兴趣&#xff0c;激发他们与您进一步合作的愿望。为了达到这个目标&#xff0c;蜂邮将探讨一些…

基于STM32设计的酒驾监控系统_优化升级版

与之前的酒驾检测的项目,优化了onenet网络上传代码,保证网络差的环境下也可以正常上传数据。 一、设计需求 1.1 设计需求总结 酒后驾车已经成为威胁人类生命安全的严重问题。为了严格控制酒后驾车,本文设计了一款针对道路行驶的酒后驾车监测系统。该系统采用STM32作为主控…

拖拽式万能DIY小程序源码系统 5分钟创建一个小程序,操作简单 带完整的部署搭建教程

随着移动互联网的发展&#xff0c;越来越多的企业开始使用可视化拖拽式小程序系统来开发和管理自己的应用程序。可视化拖拽式小程序系统为企业提供了一种更快捷、更简便的方式来开发和管理应用程序&#xff0c;这种方式能够大大提高企业的工作效率&#xff0c;使企业更加高效地…

Everything——检索神兵

相信在日常生活工作中&#xff0c;大家肯定会有这样的困惑&#xff1a;由于一时疏忽&#xff0c;自己下载或编写的文件保存的路径丢失&#xff0c;想再次在茫茫内存中找到会很麻烦。今天学长将带来一款软件——Everything&#xff0c;其拥有强大的搜索功能&#xff0c;可以帮助…

AIGC|实践探索Langflow集成AzureOpenAI

目录 一、背景 二、AzureOpenAI介绍 三、langflow集成支持AzureOpenAI langflow集成AzureOpenAI联通改造流程&#xff1a; 四、效果演示 一、背景 langflow是一个LangChain UI&#xff0c;它提供了一种交互界面来使用LangChain&#xff0c;通过简单的拖拽即可搭建自己的实…

时区、时间戳、时间点三者的关系

时区、时间戳、时间点这三个概念与Java的Date类和Calendar类紧密联系。分别说说区别。然后说一下Java的Date类和Calendar类 1. 时间戳 时间戳指的就是Unix时间戳(Unix timestamp)。它也被称为Unix时间(Unix time)、POSIX时间(POSIX time)&#xff0c;是一种时间表示方式&…

如何调整图片尺寸:简单实用的教程分享

报名事业编考试的时候&#xff0c;会发现上传照片时会提示图片大小尺寸应该为多少&#xff0c;如果不符合规定就无法提交报名&#xff0c;那么怎么才能修改图片大小呢&#xff1f;最简单的方法就是利用调整照片大小工具来对图片尺寸修改&#xff0c;本文分享一个在线图片处理工…

BLIP:统一视觉语言理解与生成的预训练模型

Li J, Li D, Xiong C, et al. Blip: Bootstrapping language-image pre-training for unified vision-language understanding and generation[C]//International Conference on Machine Learning. PMLR, 2022: 12888-12900. BLIP 是 Salesforce 在 2022 年的工作&#xff0c;文…

分布式锁~

分布式锁 分布式锁是在分布式系统中用于协调多个节点之间对共享资源的访问的一种机制。个人认为实现分布式锁&#xff0c;需要一个中间件例如数据库&#xff0c;redis等等这样的存储锁即可实现分布式锁。 分布式锁实现方案 基于数据库(唯一索引) 基于内存(redis&#xff0c;…

CMIP6数据处理及在气候变化、水文、生态等领域中的实践技术应用

查看原文>>>最新CMIP6数据处理及在气候变化、水文、生态等领域中的实践技术应用 气候变化对农业、生态系统、社会经济以及人类的生存与发展具有深远影响&#xff0c;是当前全球关注的核心议题之一。IPCC&#xff08;Intergovernmental Panel on Climate Change&#…

太激动了!摄像头终于有画面了!

有了放弃的想法 摄像头APP在我这里好好的&#xff0c;到了老外那里就不能 用。反复试了几套源码&#xff0c;都没有画面。后来干脆把老外说通用的APK反编译后&#xff0c;新做了个APP&#xff0c;结果还是没画面。到了这个时候&#xff0c;我是真的有点沮丧&#xff0c;准备放弃…

七、Nacos和Eureka的区别

一、nacos注册中心 二、临时实例与非临时实例 三、区别 Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式&#xff0c;非临时实例采用主动检测模式临时实例心跳不正常会被剔除&#xff0c;非临时实例则不会被剔除Nacos支持服务列表变更的消息推送模式&#xff0c;服务…