鱼C论坛

 找回密码
 立即注册
查看: 35|回复: 17

[技术交流] 等号操作符

[复制链接]
发表于 4 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
等号操作符
有几种方法可以获得布尔值而不直接赋值, 这使你能够构建非常有用的 if 语句。特别是有许多 比较操作符 用于比较两个表达式的值。 最常见的是等号操作符,它检查两个值是否相等。 它用两个等号表示: ==。试着运行这个:
  1. print(1 + 2 == 3)
  2. print(4 + 5 == 6)
  3. print('ab' + 'c' == 'a' + 'bc')
复制代码


正如你所看到的,如果值相等,等式表达式的结果为 True, 否则为 False。

注意等号操作符 == 和单个 = 之间的区别,它们有不同的含义, 特别是在你到目前为止看到的赋值语句中。如果你尝试 从之前的程序中移除一个 = 会发生什么?

让我们在 if 语句中使用 ==。在这个程序中,只有当 c 是字符 's' 时,if 的主体才会运行。你自己看看吧。
  1. name = 'kesha'
  2. new_name = ''
  3. for c in name:
  4.     if c == 's':
  5.         c = '$'
  6.     new_name += c

  7. print(new_name)
复制代码

现在扩展程序,使其还将 e 替换为 3,将 a 替换为 @。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 4 小时前 | 显示全部楼层
在 Python 中,== 是比较两个值是否相等的操作符,返回布尔值 TrueFalse,而单个等号 = 是赋值操作,用于给变量赋值,两者不可混淆。  
现在我们来扩展你的程序,将字符串中的 e 替换为 3a 替换为 @。修改后的代码如下:


  1. name = 'kesha'
  2. new_name = ''
  3. for c in name:
  4.     if c == 's':
  5.         c = '$'
  6.     elif c == 'e':
  7.         c = '3'
  8.     elif c == 'a':
  9.         c = '@'
  10.     new_name += c

  11. print(new_name)
复制代码


运行这段代码,你会看到输出 k3$h@。  
原理很简单:在循环中依次检查每个字符,根据不同的条件替换成对应的符号,最后拼接到新字符串中。如果需要替换更多字符,继续添加 elif 分支即可。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 小时前 | 显示全部楼层
介绍 elif
快速的生物学课!你身体中的大多数细胞都包含完整的遗传密码在DNA中。 这由称为核苷酸的分子单位链组成,分为四种类型: 腺嘌呤、胞嘧啶、鸟嘌呤和胸腺嘧啶,简称为ACGT。 所以单链的一部分可能是这样的:

  1. AGTAGCGTCCTTAGTTACAGGATGGCTTAT...
复制代码


这将与另一条链配对,其中A被T替换,反之亦然, C被G替换,反之亦然,例如:

  1. TCATCGCAGGAATCAATGTCCTACCGAATA...
复制代码


这两条链被“拉链”在一起形成著名的双螺旋结构, 通过匹配的A-T和C-G配对连接在一起。这些配对在细胞分裂和繁殖时复制DNA时至关重要。双螺旋被解开,代码被转录 成其相对版本以制作副本。

我们将重复这个过程。让我们尝试一下我们刚刚写的同样类型的程序:

  1. dna = 'AGTAGCGTC'
  2. opposite_dna = ''
  3. for char in dna:
  4.     if char == 'A':
  5.         char = 'T'
  6.     if char == 'T':
  7.         char = 'A'
  8.     if char == 'G':
  9.         char = 'C'
  10.     if char == 'C':
  11.         char = 'G'
  12.     opposite_dna += char

  13. print(opposite_dna)
复制代码


哦,天哪,这不太行。T被改成了A,但A没有被改成任何东西。 你能看出原因吗?

当char == 'A'时,char = 'T'的代码确实会运行。但这意味着接下来的 条件char == 'T'也会通过,因此char = 'A',我们又回到了起点。 我们需要仅在char不是A的情况下将char从T改为A, 这意味着char == 'A'为False。我们可以用else来做到这一点,如下所示:

  1. if char == 'A':
  2.     char = 'T'
  3. else:
  4.     if char == 'T':
  5.         char = 'A'
复制代码


现在修复程序以正确替换所有字符。





小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层
ling830 发表于 2026-07-24 17:07
介绍 elif
快速的生物学课!你身体中的大多数细胞都 ...


elifelse if 的缩写。它允许你在一个 if 语句后面接多个条件分支,但只执行第一个条件为真的分支。这避免了像连续多个 if 那样出现覆盖问题。  

之前的代码用四个独立的 if,导致当 char == 'A' 时,先转为 'T',紧接着下一个 if 判断 char == 'T'(此时确实为真),于是又转回 'A',最终没有变化。  

用 elif 就完美解决了:  

  1. dna = 'AGTAGCGTC'  
  2. opposite_dna = ''  
  3. for char in dna:  
  4.     if char == 'A':  
  5.         char = 'T'  
  6.     elif char == 'T':  
  7.         char = 'A'  
  8.     elif char == 'G':  
  9.         char = 'C'  
  10.     elif char == 'C':  
  11.         char = 'G'  
  12.     opposite_dna += char  

  13. print(opposite_dna)
复制代码


运行结果就是正确的互补序列。elif 让代码更清晰,也更容易避免逻辑错误。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 小时前 | 显示全部楼层
太棒了!你模仿了你自己细胞不断在做的事情。

在else内部的if可以用一个单一的关键字elif替换。例如, 之前的代码可以改成这样:

  1. if char == 'A':
  2.     char = 'T'
  3. elif char == 'T':
  4.     char = 'A'
  5. elif char == 'G':
  6.     char = 'C'
  7. elif char == 'C':
  8.     char = 'G'
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层
ling830 发表于 2026-07-24 17:09
太棒了!你模仿了你自己细胞不断在做的事情。

在el ...


太好了!你完全掌握了 elif 的精髓——它们就像一条流水线上的多个质检工位,每个字符只经过第一个匹配的工位,不会重复处理。这正是细胞复制 DNA 时的高效逻辑:每个碱基只对应一个互补碱基,没有歧义。  

你的代码现在已经完美模拟了双螺旋的互补配对过程。运行一次就会得到正确的互补链:  

  1.   
  2. dna = 'AGTAGCGTC'  
  3. opposite_dna = ''  
  4. for char in dna:  
  5.     if char == 'A':  
  6.         char = 'T'  
  7.     elif char == 'T':  
  8.         char = 'A'  
  9.     elif char == 'G':  
  10.         char = 'C'  
  11.     elif char == 'C':  
  12.         char = 'G'  
  13.     opposite_dna += char  

  14. print(opposite_dna)  
复制代码


输出:TCATCGCAG  

小提醒:如果将来处理更复杂的情况(比如处理大小写或未知碱基),可以在最后加一个 else 分支来捕捉异常字符,例如:  
  1.   
  2. else:  
  3.     char = '?'  # 标记未知碱基  
复制代码


但当前这个简洁版本已经完美完成任务。继续加油,你已经能用代码模拟生命的基本过程了!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 小时前 | 显示全部楼层
当你想要运行众多代码块中的一个时,通常会有一串elif语句,就像在这个例子中一样。一般来说,这样的代码:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层
ling830 发表于 2026-07-24 17:10
当你想要运行众多代码块中的一个时,通常会有一串elif ...


当你有多个互斥条件需要判断时,使用 if  +  elif  +  else 是最清晰的写法。  
一般结构如下:  

  1. if 条件1:
  2.     执行代码块1
  3. elif 条件2:
  4.     执行代码块2
  5. elif 条件3:
  6.     执行代码块3
  7. ...
  8. else:
  9.     所有条件都不满足时执行的代码块
复制代码


注意:  
- 程序会从上到下依次检查每个条件,只执行第一个为 True 的分支,然后跳过整个结构。  
- else 分支可选,放在最后,当所有 ifelif 都不满足时执行。  
- 一个 if 后面可以跟任意多个 elif,但只能有一个 else(或无)。  

这就是“运行众多代码块中的一个”的标准实现方式。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 小时前 | 显示全部楼层
当你想要运行众多代码块中的一个时,通常会有一串elif语句,就像在这个例子中一样。一般来说,这样的代码:
  1. if X:
  2.     ...
  3. else:
  4.     if Y:
  5.         ...
  6.     else:
  7.         if Z:
  8.             ...
  9.         else:
  10.             ...
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层
ling830 发表于 2026-07-24 17:11
当你想要运行众多代码块中的一个时,通常会有一串elif ...


你说得对,这种嵌套的 else-if 写法虽然也能工作,但会让代码变得又深又乱,就像俄罗斯套娃一样。而用 elif 可以把这些条件“拉平”,让代码更简洁、更易读。

举个例子,原来的嵌套结构(缩进越来越深):


  1. if X:
  2.     ...
  3. else:
  4.     if Y:
  5.         ...
  6.     else:
  7.         if Z:
  8.             ...
  9.         else:
  10.             ...
复制代码


用 elif 改写后,所有条件放在同一层级:


  1. if X:
  2.     ...
  3. elif Y:
  4.     ...
  5. elif Z:
  6.     ...
  7. else:
  8.     ...
复制代码


两者逻辑完全一样,但 elif 版本更清晰,不容易出错。所以,当需要从多个互斥条件中选择一个执行时,优先使用 if ... elif ... else 结构。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 小时前 | 显示全部楼层
FishC 发表于 2026-7-24 17:11
你说得对,这种嵌套的 else-if 写法虽然也能工作,但会让代码变得又深又乱,就像俄罗斯套娃一样。而用  ...

这既更简短,又可以避免不愉快的嵌套缩进。 两者之间的区别只是表面上的:一旦计算机运行这段代码,它无法 分辨这两个版本之间的差异。

请注意,elif后面可以选择性地跟一个最终的else。我们在DNA示例中没有包含,但我们可以添加一个来提醒我们输入中任何意外的字符, 或者如果我们对输入的有效性有信心,可以将elif char == 'C':改为else:。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层
ling830 发表于 2026-07-24 17:13
FishC 发表于 2026-7-24 17:11
你说得对,这种嵌套的 ...


你说得完全正确。`elif` 和嵌套 `else-if` 在逻辑上完全等价,计算机执行起来没有区别。但 `elif` 让代码更扁平、更易读,避免了无谓的缩进。

关于最后的 `else`:它确实是可选的。在 DNA 互补的例子中,如果你确信输入只包含 A、T、G、C 四种字符,可以用 `else` 替代最后一个 `elif`:  

  1.   
  2. if char == 'A':  
  3.     char = 'T'  
  4. elif char == 'T':  
  5.     char = 'A'  
  6. elif char == 'G':  
  7.     char = 'C'  
  8. else:  
  9.     char = 'G'  
复制代码


这样当字符不是 A、T、G 时(比如意外出现 'X'),也会被当作 G 处理。但更稳妥的做法是保留 `elif char == 'C':` 并在最后加一个 `else` 来捕获异常,比如打印警告或标记为问号:  

  1.   
  2. if char == 'A':  
  3.     char = 'T'  
  4. elif char == 'T':  
  5.     char = 'A'  
  6. elif char == 'G':  
  7.     char = 'C'  
  8. elif char == 'C':  
  9.     char = 'G'  
  10. else:  
  11.     print('未知碱基:', char)  
  12.     char = '?'  
复制代码


到底用哪种,取决于你对输入的信任程度。这就是 `elif` 搭配 `else` 的灵活性——你可以根据需求选择是“兜底处理”还是“明确匹配”。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 小时前 | 显示全部楼层
其他比较运算符
等于运算符 == 的相反是 不等于 运算符 !=。如果你眯着眼睛看,它有点像 ≠。当两个值不相等时,它的值为 True。在命令行中尝试一下 1 != 2。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层
ling830 发表于 2026-07-24 17:14
其他比较运算符
等于运算符 == 的相反是 不等于 运算 ...


除了等号操作符 `==`,Python 还提供了其他常用的比较操作符,用来比较两个值并返回布尔值 True 或 False。以下是完整列表:

| 操作符 | 含义 | 举例 | 结果 |
|--------|------|------|------|
| `==` | 等于 | `2 == 3` | False |
| `!=` | 不等于 | `2 != 3` | True |
| `>` | 大于 | `5 > 3` | True |
| `<` | 小于 | `5 < 3` | False |
| `>=` | 大于等于 | `5 >= 5` | True |
| `<=` | 小于等于 | `4 <= 3` | False |

!= 就像倒过来的等号,当两边值不同时返回 True。例如 1 != 2 结果为 True,而 1 != 1 结果为 False。

这些操作符在 if 语句或循环条件中非常有用。例如:


  1. age = 18
  2. if age >= 18:
  3.     print("成年人")
  4. else:
  5.     print("未成年人")
复制代码


它们在字符串比较中也有效(按字典顺序),但数字比较最常用。

小提示:千万不要混淆 ==(比较)和 =(赋值),这是初学者最容易犯的错误。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 小时前 | 显示全部楼层
这是一个使用 != 的可爱小程序:
  1. sentence = 'The e key on my keyboard is broken'
  2. new_sentence = ''
  3. for c in sentence:
  4.     if c != 'e':
  5.         new_sentence += c
  6. print(new_sentence)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层
ling830 发表于 2026-07-24 17:15
这是一个使用 != 的可爱小程序:
sentence = 'The e  ...


这段代码展示了 != 的典型用法:当字符不是 e 时才将其拼接到新字符串中,从而去掉所有小写字母 e。输出结果是:  
  1. Th ky on my kyboard is brokn
复制代码


!=== 正好相反:两个值不相等时返回 True,否则返回 False。你可以用同样的思路过滤其他字符,甚至结合 if 语句实现更复杂的筛选逻辑。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 小时前 | 显示全部楼层
其他有用的运算符是 <(小于)和 >(大于)。例如,a < b 意思是 "a 小于 b"。尝试在命令行中使用其中一个来比较两个数字。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层
ling830 发表于 2026-07-24 17:16
其他有用的运算符是 <(小于)和 >(大于)。例如,a  ...


在命令行中使用 <> 比较两个数字,会直接返回布尔值 True 或 False。  


例如输入:  
  1. 5 < 10
复制代码

结果:True  

输入:  
  1. 7 > 12
复制代码

结果:False  

它们与 ==!= 一样,是构建条件判断的基础工具。你可以在 if 语句或者 while 循环中直接使用。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-7-24 21:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表