if 语句
if 语句用于根据条件控制代码需要执行的逻辑,Python 和 JavaScript 中的 if 语句在作用上完全相等,但语法上存在较大的差异。
任务
设计一个程序,判断给定的数字是正数、负数还是零。
JavaScript 实现
const number = 100
if (number > 0) {
console.log("正数");
} else if (number < 0) {
console.log("负数");
} else {
console.log("零");
}
Python 实现
number = 100
if number > 0:
print("正数")
elif number < 0:
print("负数")
else:
print("零")
代码解读
- Python if 语句中的条件周围不需要加圆括号,JavaScript 需要为条件添加圆括号。
- Python 使用冒号(:)表示条件结束,并使用 缩进 来表示代码块,JavaScript 直接使用
{}表示代码块。 - Python 使用
elif继续匹配判断条件,而 JavaScript 中使用else if。
:::danger 代码缩进 Python 使用严格的代码缩进表示代码块(一般为四个空格),多加空格或少加空格都会引发语法错误。由于它没有像 JavaScript 一样使用成对的大括号,因此许多 IDE 常常无法自动修复代码缩进引发的语法错误。
当代码块中不需要执行实际的逻辑时,为了让程序能正常运行,可以使用 pass 表示什么都不做,如:
if some_condition:
pass # 什么都不做
else:
...
:::
差异速览
| 特性 | JavaScript | Python |
|---|---|---|
| if 语句 | if (条件) {代码} | if 条件: 代码 |
| else 语句 | else {代码} | else: 代码 |
| else if 语句 | else if (条件) {代码} | elif 条件: 代码 |
| 嵌套 if 语句 | 相同 | 相同 |
| 逻辑运算符 | &&、||、! | and、or、not |
| 是否包含 | key in myObjmyArr.includes(el) | key in my_dictel in my_list |
| 等于 | === | == |
| 不等于 | !== | != |
| 大于 | > | > |
| 小于 | < | < |
| 大于等于 | >= | >= |
| 小于等于 | <= | <= |
| 条件表达式 | let estimation = score >= 60 ? '及格' : '不及格' | estimation = '及格' if score >= 60 else '不及格' |
:::tip Python 中的空值判断
Python 中判断一个值是否为空,可以使用 is None 、 is not None 、== None 和 != None 四种方式。
:::
:::tip 注意 Python 中没有 switch-case 语句。 :::
相关资源
for 和 while 语句
循环用于重复执行特定的代码逻辑,在 Python 和 JavaScript 中都使用 for 和 while 实现循环逻辑。
任务
生成一个包含 1 到 20 的所有数字的数组,并打印每一项。
JavaScript 实现
let numbers = Array.from({ length: 20 }, (_, i) => (i + 1));
for (let el of numbers) {
console.log(el)
}
Python 实现
numbers = range(1, 21)
for el in numbers:
print(el)
代码解读
- 在 Python 中,
for循环的写法是for el in sequence:,而在 JavaScript 中,推荐使用for (let el of iterable)。 - Python 使用缩进来表示循环体,JavaScript 使用花括号(
{})表示循环体。
差异速览
| 特性 | JavaScript | Python |
|---|---|---|
| for 循环 | for (el of iterable) | for el in sequence: |
| while 循环 | while (condition) | while condition: |
| range 函数 | - | range(start, stop, step) |
| enumerate 函数 | - | enumerate(iterable, start=0) |
| break | break | break |
| continue | continue | continue |
:::tip 在循环中获取元素索引
Python 中的内置函数 enumerate() 用于枚举可迭代对象,它返回一个包含索引和项本身的元组。
for index,el of enumerate(my_list):
...
:::
相关资源
列表推导和字典推导
在 Python 中,列表推导和字典推导提供了一种简洁的方式来创建列表和字典。
任务
- 生成一个包含 1 到 10 的平方的数的列表,然后过滤列表中的奇数。
- 生成一个包含 1 到 10 的平方数的字典,以数字作为键,平方数作为值,过滤字典中值大于等于5的键值对。
JavaScript 实现
// 题目 1:
const numbers = Array.from({ length: 10 }, (_, i) => (i + 1) ** 2);
const filteredNumbers = numbers.filter(num => num % 2 === 0);
console.log(filteredNumbers);
// 题目 2:
const dictionary = {};
for (let i = 1; i <= 10; i++) {
dictionary[i] = i ** 2;
}
const filteredDictionary = Object.fromEntries(
Object.entries(dictionary).filter(([key, value]) => value < 5)
);
console.log(filteredDictionary);
Python 实现
# 题目 1:
squared_numbers = [x**2 for x in range(1, 11)]
filtered_numbers = [num for num in squared_numbers if num % 2 == 0]
print(filtered_numbers)
# 题目 2:
squared_dict = {x: x**2 for x in range(1, 11)}
filtered_dict = {key: value for key, value in squared_dict.items() if value < 5}
print(filtered_dict)
:::tip 列表推导和字典推导是 Python 特有的,JavaScript 中没有与之等价的语法和特性。 :::
代码解读
- Python 列表推导用方括号括起来,它返回一个新的列表,语法是
[表达式 for 项 in 列表 if 条件]。 - Python 字典推导使用
{}括起来,它返回一个新的字典,语法是{key表达式: value表达式 for item in 迭代对象 if条件}。 - Python 的列表推导和字典推导还可以包括更复杂的条件语句,允许对原始列表/字典进行更复杂的过滤和转化。
相关资源
本书的内容完全免费,开源地址:github.com/luckrnx09/p…