【全栈之路】10 天掌握 Python 开发(4)分支和循环

121 阅读4分钟

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:
    ...

:::

差异速览

特性JavaScriptPython
if 语句if (条件) {代码}if 条件: 代码
else 语句else {代码}else: 代码
else if 语句else if (条件) {代码}elif 条件: 代码
嵌套 if 语句相同相同
逻辑运算符&&||!andornot
是否包含key in myObj
myArr.includes(el)
key in my_dict
el in my_list
等于=====
不等于!==!=
大于>>
小于<<
大于等于>=>=
小于等于<=<=
条件表达式let estimation = score >= 60 ? '及格' : '不及格'estimation = '及格' if score >= 60 else '不及格'

:::tip Python 中的空值判断 Python 中判断一个值是否为空,可以使用 is Noneis not None== None!= None 四种方式。 :::

:::tip 注意 Python 中没有 switch-case 语句。 :::

相关资源


for 和 while 语句

循环用于重复执行特定的代码逻辑,在 Python 和 JavaScript 中都使用 forwhile 实现循环逻辑。

任务

生成一个包含 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 使用花括号({})表示循环体。

差异速览

特性JavaScriptPython
for 循环for (el of iterable)for el in sequence:
while 循环while (condition)while condition:
range 函数-range(start, stop, step)
enumerate 函数-enumerate(iterable, start=0)
breakbreakbreak
continuecontinuecontinue

:::tip 在循环中获取元素索引 Python 中的内置函数 enumerate() 用于枚举可迭代对象,它返回一个包含索引和项本身的元组。

for index,el of enumerate(my_list):
    ...

:::

相关资源


列表推导和字典推导

在 Python 中,列表推导和字典推导提供了一种简洁的方式来创建列表和字典。

任务

  1. 生成一个包含 1 到 10 的平方的数的列表,然后过滤列表中的奇数。
  2. 生成一个包含 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…