【全栈之路】10 天掌握 Python 开发(3)数据类型

302 阅读8分钟

基本数据类型

Python 基本数据类型包括:

  • 整数:没有小数点的数字。
  • 浮点数:带有小数点的数字。
  • 字符串:用单引号或双引号括起来的字符序列。
  • 布尔值:表示 True 或 False。
  • 空值:None。

任务

定义 5 个变量表示某人的工资条,需要包含:姓名、月份、薪资、是否全勤、所属项目组

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 实现

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 关键字获取变量类型。

差异速览

类型JavaScriptPython
整数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:

方法JavaScriptPython
获取长度myStr.lengthlen(my_str)
拼接myStr1 + myStr2my_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 - 1my_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. 将两个数相加并打印和。
  2. 从第二个数中减去第一个数并打印差。
  3. 将两个数相乘并打印乘积。
  4. 将第一个数除以第二个数并打印商。
  5. 计算第一个数除以第二个数的余数并打印结果。
  6. 将第一个数的第二个数次幂并打印结果。
  7. 将第一个数自增 1 并打印更新后的值。
  8. 将第二个数自减 1 并打印更新后的值。

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 实现

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 中没有 ++-- 运算符,需要使用 +=-= 对变量进行自增或自减。

差异速览

特性JavaScriptPython
相加++
相减--
相乘**
相除//
整除-//
取余%%
指数运算****
自增++
+=1
+= 1
自减--
+=1
-= 1

:::danger 在 Python 中,只有 兼容的 数据类型之间才能进行运算,比如浮点数和整数运算的结果为浮点数,而字符串和数字进行运算会抛出异常。如要对数字和字符串进行运算,需先对其中一进行类型转换。 :::

相关资源


类型转换

类型转换是编程中常见的需求,Python 和 JavaScript 都提供了专门用于类型转换为方法。

任务

假设有一块硬盘的容量为 8192MB(字符串),请将这块硬盘的容量换算为 TB 单位,将换算结果保存到一个整数类型变量中。

JavaScript 实现

let gb = '8192MB';
let tb = parseInt(gb) / 1024
let intTb = parseInt(tb)
console.log(`该硬盘容量为: ${intTb}TB`)

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])获取字符串的子串。

差异速览

特性JavaScriptPython
转换为整数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 实现

let names = [];
names.push('张三')
names.push('李四')
names.push('王五')
console.log(names)

Python 实现

names = [];
names.append('张三')
names.append('李四')
names.append('王五')
print(names)

代码解读

  • Python 使用my_list.append(el) 向列表中添加元素,JavaScript 使用 myArr.push(el) 向数组中添加元素。

差异速览

特性JavaScriptPython
创建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 实现

let personalInfo = {};
 
personalInfo.name: 'luckrnx09',
personalInfo.age: 18,
personalInfo.city: '成都'

console.log(personalInfo);

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)访问值。

差异速览

特性JavaScriptPython
定义字典let obj = {};
let obj = {key1: value1, key2: value2};
dict1 = {}
my_dict = {"key1": value1, "key2": value2}
访问值obj[key]; keymy_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 进行包裹。

my_dict = dict(a=1, b=2, ...)
print(my_dict)

:::

相关资源


集合

集合是一个无序的唯一元素的集合,与 JavaScript 中的 Set 相同,常用语去重操作。

任务

将文本中的水果按照空格拆分,去除重复项并对其进行排序。

JavaScript 实现

const text = "apple banana cherry apple banana";
const words = text.split(" ");
const uniqueWords = [...new Set(words)];
uniqueWords.sort();
console.log(uniqueWords);

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() 创建集合。

差异速览

特性JavaScriptPython
创建集合let mySet = new Set()my_set = set()
添加元素mySet.add(el)my_set.add(el)
检查大小mySet.sizelen(my_set)
检查是否为空mySet.size === 0len(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)

相关资源


本书的内容完全免费,开源地址:github.com/luckrnx09/p…