本书的内容完全免费,开源地址:github.com/luckrnx09/p...
基本数据类型
Python 基本数据类型包括:
- 整数:没有小数点的数字。
- 浮点数:带有小数点的数字。
- 字符串:用单引号或双引号括起来的字符序列。
- 布尔值:表示 True 或 False。
- 空值:None。
任务
定义 5 个变量表示某人的工资条,需要包含:姓名、月份、薪资、是否全勤、所属项目组
JavaScript 实现
javascript
let name = '张三' // string
let month = 12 // number
let salary = 10000.12 // number
let isPerfectAttendance = true // boolean
let team = null // null
console.log(typeof name) // 获取变量的类型
Python 实现
python
name = '张三' # str
month = 12 # int
salary = 10000.12 # float
is_perfect_attendance = True # bool
team = None # None
print(type(name)) # 获取变量的类型
代码解读
- Python 中的数字类型有两种,分别是
int
整数类型和float
浮点数类型,而 JavaScript 中整数和浮点数都使用number
类型存储。 - Python 使用
None
表示空,JavaScript 使用null
表示空。 - Python 中没有与 JavaScript 的
undefined
类似的类型。 - Python 中使用
type()
内置函数获取变量类型,JavaScript 中使用typeof
关键字获取变量类型。
差异速览
类型 | JavaScript | Python |
---|---|---|
整数 | let myInt = 10; let myInt = Number(10); |
my_int = 10 |
浮点数 | let myFloat = 3.14; let myFloat = Number(3.14); |
my_float = 3.14 |
字符串 | let myStr = "Hello World"; |
my_str = "Hello World" |
布尔值 | let myBool = true; let myBool = false; |
my_bool = True bool_val = False |
空值 | let myNull = null; |
my_none = None |
字符串通常为编程语言中使用最广泛的数据类型之一,掌握它们可以让编程事半功倍。以下为 JavaScript 和 Python 中的字符串常见 API:
方法 | JavaScript | Python |
---|---|---|
获取长度 | myStr.length |
len(my_str) |
拼接 | myStr1 + myStr2 |
my_str1 + my_str2 |
截取 | myStr.slice(start, end) |
my_str[start:end] |
查找 | myStr.indexOf(substring) |
my_str.index(substring) |
替换 | myStr.replace(old, new) |
my_str.replace(old, new) |
分割 | myStr.split(separator) |
my_str.split(separator) |
大小写转换 | myStr.toUpperCase() myStr.toLowerCase() |
my_str.upper() my_str.lower() |
反转 | myStr.split('').reverse().join('') |
my_str[::-1] |
统计子串出现次数 | myStr.split(substring).length - 1 |
my_str.count(substring) |
是否以指定字符开头 | myStr.startsWith(prefix) |
my_str.startswith(prefix) |
是否以指定字符结尾 | myStr.endsWith(suffix) |
my_str.endswith(suffix) |
删除两端的空白字符 | myStr.trim() |
my_str.strip() |
按指定宽度居中对齐 | - | my_str.center(width) |
第一个单词首字母大写 | - | my_str.capitalize() |
每个单词首字母大写 | - | my_str.title() |
相关资源
基本数据类型的算术运算
Python 中的算术运算符用于执行加、减、乘和除等基础的算术运算。
任务
创建一个程序,定义两个数字类型的变量,并对它们执行各种算术运算。该程序应执行以下任务:
- 将两个数相加并打印和。
- 从第二个数中减去第一个数并打印差。
- 将两个数相乘并打印乘积。
- 将第一个数除以第二个数并打印商。
- 计算第一个数除以第二个数的余数并打印结果。
- 将第一个数的第二个数次幂并打印结果。
- 将第一个数自增 1 并打印更新后的值。
- 将第二个数自减 1 并打印更新后的值。
JavaScript 实现
javascript
let num1 = 10;
let num2 = 5;
// 1. 相加
let sum = num1 + num2;
console.log("和:", sum);
// 2. 相减
let difference = num1 - num2;
console.log("差:", difference);
// 3. 相乘
let product = num1 * num2;
console.log("积:", product);
// 4. 相除
let quotient = num1 / num2;
console.log("商:", quotient);
// 5. 取余
let remainder = num1 % num2;
console.log("余数:", remainder);
// 6. 指数运算
let power = num1 ** num2;
console.log("幂:", power);
// 7. 自增
num1++;
console.log("自增后的 num1:", num1);
// 8. 自减
num2--;
console.log("自减后的 num2:", num2);
Python 实现
python
num1 = 10
num2 = 5
# 1. 相加
sum = num1 + num2
print("和:", sum)
# 2. 相减
difference = num1 - num2
print("差:", difference)
# 3. 相乘
product = num1 * num2
print("积:", product)
# 4. 相除
quotient = num1 / num2
print("商:", quotient)
# 5. 取余
remainder = num1 % num2
print("余数:", remainder)
# 6. 指数运算
power = num1 ** num2
print("幂:", power)
# 7. 自增
num1 += 1
print("自增后的 num1:", num1)
# 8. 自减
num2 -= 1
print("自减后的 num2:", num2)
代码解读
- Python 的加、减、乘、除、取余、指数运算语法与 JavaScript 一致。
- Python 中没有
++
和--
运算符,需要使用+=
和-=
对变量进行自增或自减。
差异速览
特性 | JavaScript | Python |
---|---|---|
相加 | + |
+ |
相减 | - |
- |
相乘 | * |
* |
相除 | / |
/ |
整除 | - | // |
取余 | % |
% |
指数运算 | ** |
** |
自增 | ++ +=1 |
+= 1 |
自减 | -- +=1 |
-= 1 |
:::danger 在 Python 中,只有 兼容的 数据类型之间才能进行运算,比如浮点数和整数运算的结果为浮点数,而字符串和数字进行运算会抛出异常。如要对数字和字符串进行运算,需先对其中一进行类型转换。 :::
相关资源
类型转换
类型转换是编程中常见的需求,Python 和 JavaScript 都提供了专门用于类型转换为方法。
任务
假设有一块硬盘的容量为 8192MB(字符串),请将这块硬盘的容量换算为 TB 单位,将换算结果保存到一个整数类型变量中。
JavaScript 实现
javascript
let gb = '8192MB';
let tb = parseInt(gb) / 1024
let intTb = parseInt(tb)
console.log(`该硬盘容量为: ${intTb}TB`)
Python 实现
python
gb = '8192MB'
int_tb = int(gb[:-2]) // 1024
print(f"该硬盘容量为: {int_tb}TB")
代码解读
- Python 使用与类型同名的内置函数(如:
str(some_value)
,bool(some_value)
等)进行数据转换,JavaScript 使用以parse
为前缀的内置函数。 - 在 Python 中,'8192MB' 这样的字符串无法直接转换为整数或浮点数,因为它值与这两种类型不兼容,而 JavaScript 可以通过
parseInt
转换为整数。 - Python 中可以使用字符串切片语法(
[start:end]
)获取字符串的子串。
差异速览
特性 | JavaScript | Python |
---|---|---|
转换为整数 | parseInt(myVal) 或 Number(myVal) |
int(my_val) |
转换为浮点数 | parseFloat(myVal) 或 Number(myVal) |
float(my_val) |
转换为字符串 | myVal.toString() 或 String(myVal) |
str(my_val) |
转换为布尔值 | Boolean(myVal) |
bool(val) |
转换为数组 | - | list(my_val) |
转换为对象 | - | dict(my_val) |
相关资源
列表和元组
在 Python 中,数组被称之为列表,用于存储多个连续的值。
任务
定义一个人员名单,该名单包含 "张三"、"李四"、"王五"。
JavaScript 实现
javascript
let names = [];
names.push('张三')
names.push('李四')
names.push('王五')
console.log(names)
Python 实现
python
names = [];
names.append('张三')
names.append('李四')
names.append('王五')
print(names)
代码解读
- Python 使用
my_list.append(el)
向列表中添加元素,JavaScript 使用myArr.push(el)
向数组中添加元素。
差异速览
特性 | JavaScript | Python |
---|---|---|
创建 | let myArr = new Array(); let myArr = [1, 2]; let myTuple = [1, 2]; |
my_list = list() my_list = [1, 2] my_tuple = (1, 2) |
访问 | let el = myArr[index]; |
el = my_list[index] |
添加 | myArr.push(el); |
my_list.append(el) |
长度 | let length = myArr.length; |
length = len(my_list) |
切片 | let someEl = myArr.slice(start, end); |
some_el = my_list[start:end] |
连接 | let mergedArr = myArr1.concat(myArr2); |
merged_list = my_list1 + my_list2 |
复制 | let newArr = [...myArr]; |
new_list = my_list1.copy() |
反转 | myArr.reverse(); |
my_list.reverse() |
删除 | myArr.splice(index, 1); |
del my_list[index] |
求最大值 | let maxVal = Math.max(...myArr); |
max_val = max(my_list) |
求最小值 | let minVal = Math.min(...myArr); |
min_val = min(my_list) |
求和 | let sumVal = myArr.reduce((a,b) => a + b, 0); |
sum_val = sum(my_list) |
转换为元组 | - | my_tuple = tuple(my_list); |
:::tip 元组是什么 元组可以理解为只读的数组,它在创建时确定元素个数和元素的值,一旦创建就不能被修改。 :::
相关资源
字典
字典通常用于使用特定键存储和检索数据。Python 中的字典与 JavaScript 中的对象基本等价。
任务
设计一个程序,使用字典存储和检索学生的个人信息。个人信息包括姓名、年龄和城市
JavaScript 实现
javascript
let personalInfo = {};
personalInfo.name: 'luckrnx09',
personalInfo.age: 18,
personalInfo.city: '成都'
console.log(personalInfo);
Python 实现
python
personal_info = {}
personal_info["name"] = 'luckrnx09'
personal_info["age"] = 18
personal_info["city"] = '成都'
print(personal_info)
代码解读
- 在 Python 和 JavaScript 中,都可以使用
{}
创建一个空字典/对象。 - 在 Python 中,只能使用方括号(
my_dict[key]
)访问值,而 JavaScript 中,除了方括号外,还可以使用点运算符(myObj.key
)访问值。
差异速览
特性 | JavaScript | Python |
---|---|---|
定义字典 | let obj = {}; let obj = {key1: value1, key2: value2}; |
dict1 = {} my_dict = {"key1": value1, "key2": value2} |
访问值 | obj[key]; key |
my_dict[key] |
访问值或默认值 | obj[key] ?? defaultVal; |
my_dict.get(key, default_value) |
更新值 | obj[key] = newValue; |
my_dict[key] = newValue |
合并和更新 | obj={...obj,...anotherObj} |
my_dict.update(another_dict) |
删除键值对 | delete obj[key]; |
del my_dict[key] |
检查键是否存在 | key in obj; |
key in my_dict |
获取所有键 | Object.keys(obj); |
my_dict.keys() |
获取所有值 | Object.values(obj); |
my_dict.values() |
获取键值对数目 | Object.keys(obj).length; |
len(my_dict) |
:::danger Python 中使用 {}
语法创建字典时,字典的 key 必须使用引号包裹。此外,Python 还可以通过 dict()
来创建字典,并给字典设置初始键值对,这种方式不需要使用引号将 key 进行包裹。
scss
my_dict = dict(a=1, b=2, ...)
print(my_dict)
:::
相关资源
集合
集合是一个无序的唯一元素的集合,与 JavaScript 中的 Set
相同,常用语去重操作。
任务
将文本中的水果按照空格拆分,去除重复项并对其进行排序。
JavaScript 实现
javascript
const text = "apple banana cherry apple banana";
const words = text.split(" ");
const uniqueWords = [...new Set(words)];
uniqueWords.sort();
console.log(uniqueWords);
Python 实现
python
text = "apple banana cherry apple banana"
words = text.split(" ")
unique_words = set(words)
sorted_words = sorted(unique_words)
print(sorted_words)
代码解读
- Python 使用
set()
创建集合,JavaScript 使用new Set()
创建集合。
差异速览
特性 | JavaScript | Python |
---|---|---|
创建集合 | let mySet = new Set() |
my_set = set() |
添加元素 | mySet.add(el) |
my_set.add(el) |
检查大小 | mySet.size |
len(my_set) |
检查是否为空 | mySet.size === 0 |
len(my_set) == 0 |
删除元素 | mySet.delete(el) |
my_set.remove(el) |
清空集合 | mySet.clear() |
my_set.clear() |
检查成员是否存在 | let exist = mySet.has(el) |
exist = el in my_set |
将集合转换为数组 | let myArr = [...mySet] |
my_list = list(my_set) |
集合的并集 | - | my_set.union(another_set) |
集合的交集 | - | my_set.intersection(another_set) |