Python 入门手札:从 0 到会--第二天Python的基础变量类型之字符串和数字类型
目录
(二) 数字类型 --- int, float, complex
昨天我们一起学习了python环境的搭建,希望大家已经顺利搭建环境并配置好工具,今天让我们一起来学习Python的基础知识--变量类型之字符串和数字类型~
在学习python的变量类型之前,我们还需要对怎么写下第一个python程序做一定的了解
首先介绍一个非常好用的工具就是我们python的官方文档:python官方文档
你可以在这里根据你的需要来选择了解学习的python版本,以及所有跟python有关的知识,后续学习中我们的学习笔记也都是基于官方文档的内容整理的~

让我们先简单了解一下python这门语言吧~
一、Python语言简介
Python是一种高级、解释型、通用的编程语言,以简洁易读的语法著称。由Guido van Rossum于1991年首次发布,支持多种编程范式(如面向对象、函数式编程),广泛应用于Web开发、数据分析、人工智能等领域。
1、核心特点
简洁性:Python通过缩进代替括号,语法接近自然语言。例如打印“Hello World”仅需一行代码:
print("Hello World")
跨平台:作为解释型语言,Python代码可在Windows、macOS、Linux等系统运行,无需重新编译。
丰富的库:标准库涵盖文件操作、网络请求等模块,第三方库(如NumPy、Django)扩展了科学计算和Web开发能力。
2、典型应用场景
- 数据分析:借助Pandas、Matplotlib等库快速处理和分析数据。
- 自动化脚本:编写脚本来简化重复性任务,如文件批量重命名。
- 机器学习:TensorFlow、PyTorch等框架降低了AI模型的开发门槛。
3、学习资源推荐
- 官方文档(python.org)提供语言规范和教程。
- 交互式学习平台(如Codecademy)适合新手实践基础语法。
Python的低学习曲线和强大生态使其成为初学者的理想选择,同时也满足企业级开发需求。
二、Python必备操作
1、Python注释操作
Python中的注释分为单行注释和多行注释两种形式。
单行注释使用#符号,从该符号开始到行尾的内容都会被解释器忽略:
# 这是一个单行注释
print("Hello World") # 注释也可以放在代码行尾
多行注释使用三引号(单引号或双引号),适用于需要跨多行的注释内容:
'''
这是多行注释
可以跨越多行
'''
print("Multiline comment")
2、输入输出操作
Python的输入输出主要通过print()和input()函数实现。
print()函数用于输出内容到标准输出:
print("Hello") # 简单输出
print(1, 2, 3, sep="|") # 自定义分隔符
print("Line1", end=" ") # 修改结束符
print("Line2")
input()函数用于获取用户输入,返回字符串类型:
name = input("请输入姓名:") # 获取用户输入
age = int(input("请输入年龄:")) # 类型转换
print(f"姓名:{name},年龄:{age}")
3、格式化输出
Python提供多种格式化输出方式:
f-string格式化(推荐Python 3.6+使用):
name = "Alice"
print(f"Hello, {name}!")
format方法格式化:
print("Hello, {}!".format("Bob"))
print("{1} {0}".format("World", "Hello"))
百分号格式化(旧式):
print("Name: %s, Age: %d" % ("Charlie", 25))
现在可以输出你的第一个python程序啦
从print(“hello world”)开始~
print("hello world")
当我们刚开始学习 Python 编程时,首先接触到的内容之一就是 变量类型。Python 支持多种数据类型,其中最常用的包括 字符串 和 数字类型(整数和浮点数)。今天我们就来详细介绍这两个变量类型,并通过代码示例帮助初学者更好地理解。
三、变量
1、 变量
在 Python 中,变量用来存储值,它是数据的引用标识符,具有动态性和可变性。你无需声明变量类型,Python 会自动根据赋给它的值来决定类型。
1.1 变量声明与赋值
声明与赋值:变量通过赋值语句来创建。
-
语法:
变量名 = 值 -
变量名 = 数字类型
变量名 = 表达式
变量名1 = 变量名2 = 变量名3 = 数字类型
变量名1, 变量名2, 变量名3 = 数字类型1, 数字类型2, 数字类型3 -
示例:
counter = 100 # 整型变量 miles = 1000.0 # 浮点型变量 name = "nihao" # 字符串变量
1.2 变量命名规则
-
变量名由字母、数字和下划线组成。
-
不能以数字开头。
-
变量名区分大小写。
-
不能使用 Python 保留字,下图为Python的33个保留字,均不能用于变量命名。
-

# 合法的变量名
name = "Alice"
age = 25
one_hundred = 100
# 不合法的变量名
# 1st_name # 不能以数字开头
# class # 保留字
1.3 变量命名规范
1.3.1 小写字母与下划线组合
变量名通常使用小写字母,多单词时用下划线分隔(匈牙利命名法),例如 get_name_age。函数名遵循相同规则,优先使用动词+名词结构,如 update_phone。
1.3.2 驼峰命名法适用场景
类名采用大驼峰形式(Pascal Case),如 MyClass。小驼峰(camel Case)如 getNameAge 可在特定语言(如Java)中使用,但Python推荐下划线分隔。
1.3.3 常量命名规则
全大写字母表示常量,单词间用下划线连接,例如 MAX_SIZE = 100。此类命名需明确不可变性。
1.3.4 命名语义化要求
名称需简短且表达完整含义,避免单字符(除循环变量)。变量名多用名词(如 student_count),函数名强调动作(如 calculate_score)。
1.3.5 特殊前缀/后缀
单下划线前缀(如 _internal_var)暗示内部使用,双下划线前缀(如 __private_var)触发Python名称改写机制。后缀避免与语言关键字冲突。
代码示例对比
# 变量命名
user_age = 25 # 匈牙利命名法
studentName = "Tom" # 小驼峰(不推荐Python)
# 函数命名
def get_user_info(): # 动词+名词
pass
# 类命名
class DatabaseConfig: # 大驼峰
pass
2、基础数据类型
Python中的变量就是变量,它没有类型,我们所说的"类型"是变量指向的内存中对象的类型。 Python 中的基本数据类型包括:字符串、数字(整数、浮点数、布尔值)、容器类型(列表、元组、字典等)。
python中的数据类型:
字符串 str
数字
整数 int
浮点数 float
布尔数 bool
容器
列表 list
元组 tuple
字典 dict
集合 set / 固定集合 frozenset
字节串 bytes / 字节数组 bytearray
按照是否可修改划分分为:
不可变数据:Number(数字)、String(字符串)、Tuple(元组)
可变数据:List(列表)、Dictionary(字典)、Set(集合)
(一)字符串
2.1字符串类型
用引号引起来的就是字符串,即便是空或者空格。
2.1.1基本特征
- 引号包括单引号、双引号、三引号(支持多行和嵌套引号)。
- 三引号保留格式,所见即所得。
- 转义字符如
\'、\"、\n、\\、\t。- 原始字符串前缀r忽略转义(后续小结会对r进行详细介绍)
- 字符串前加r表示原始字符串,不转义;
# 单引号字符串
str1 = 'Hello, World!'
# 双引号字符串
str2 = "Python is fun."
# 多行字符串(三重引号)
str3 = '''This is a
multiline string.'''
r'c:\windows\user' #引用地址此类特殊字符串避免转移需要加上'r'
2.1.2字符串输入与输出
1、输入字符串
input() 函数
input() 用于从标准输入读取用户输入,返回字符串类型(str)。语法为 input([prompt]),其中 prompt 为可选提示信息。
name = input("请输入你的名字:") # 用户输入 "Alice"
print(f"你好,{name}!") # 输出:你好,Alice!
多行输入
可通过循环或 split() 处理多行输入。
# 方法1:循环读取
lines = []
while True:
line = input("输入内容(空行结束):")
if not line:
break
lines.append(line)
print("输入的内容:", "\n".join(lines))
# 方法2:一次输入多行(用特定符号分隔)
data = input("输入多个单词(用空格分隔):").split()
print("单词列表:", data) # 如输入 "hello world",输出:['hello', 'world']
2、输出字符串
print() 函数
print() 用于向标准输出打印内容,支持多参数、分隔符(sep)、结束符(end)。
print("Hello", "World") # 输出:Hello World(默认空格分隔)
print("Hello", "World", sep="-") # 输出:Hello-World(自定义分隔符)
print("Hello", end=" ") # 打印 "Hello" 后不换行,用空格结尾
print("World") # 接着上一行的空格输出 "World"
2.1.3字符串的运算
-
字符串拼接:我们可以用
+运算符来连接两个字符串。
'Py'+'thon' # 输出'Python'
-
字符串重复:使用
*运算符来重复字符串
'abc' * 3 # 输出'abcabcabc'
-
字符串索引:字符串是有序的,可以通过索引来访问某个字符。索引从
0开始,也支持负数索引,从后往前取值。 -
切片操作:通过切片语法来获取字符串的子串。
2.2字符串的切片
2.2.1基本形式
sequence[start:stop:step]
开区间:左闭右开
start:起始索引(包含),默认为 0。
stop:结束索引(不包含),默认为序列长度。
step:步长(可选),默认为 1,可以是负数(表示反向切片)。
切片操作 说明
s[start:stop] 取 [start, stop) 范围的元素
s[start:] 从 start 到末尾
s[:stop] 从开头到 stop-1
s[::step] 按 step 步长取值
s[::-1] 反转序列
s[-n:] 取最后 n 个元素
2.2.2常见切片操作
(1) 基本切片
s = "abcdefghij"
print(s[2:5]) # 'cde'(索引 2~4,不包含 5)
print(s[:5]) # 'abcde'(从头到索引 4)
print(s[5:]) # 'fghij'(从索引 5 到末尾)
print(s[:]) # 'abcdefghij'(完整复制,相当于 s.copy())
(2) 步长(step)
s = "abcdefghij"
print(s[::2]) # 'acegi'(每隔 1 个取 1 个)
print(s[1::2]) # 'bfh'(从索引 1 开始,每隔 1 个取 1 个)
(3) 负索引
Python 允许使用负数索引(从末尾开始计数,-1 是最后一个元素):
s = "abcdefghij"
print(s[-3:]) # 'hij'(最后 3 个字符)
print(s[:-3]) # 'abcdef'(除了最后 3 个字符)
(4) 反向切片(step = -1)
s = "abcdefghij"
print(s[::-1]) # 'jihgfedcba'(反转字符串)
print(s[5:2:-1]) # 'fed'(从索引 5 反向取到索引 3)
来做一个关于切片的小练习吧~
练习:
写程序,输入一个字符, 打印字符串的如下内容
-
打印这个字符串的第一个字符
-
打印这个字符串的最后一个字符串
-
如果这个字符串的长度是 奇数,则打印中间这个字符 用 len(x) 求字符串的长度
答案:
s = input("请输入一段文字: ")
print('第一个字符是:', s[0])
print('最后一个字符是:', s[-1])
if len(s) % 2 == 1:
print('中间的字符是', s[len(s) // 2])
2.3原始字符串--‘r’
原始字符串:
在 Python 中,`r` 前缀表示原始字符串(Raw String),它会让字符串中的 反斜杠 `\` 不被解释为转义字符,而是作为普通字符处理。
例如:
path = "c:\windows\user\data" # 错误!\u 会被解析为 Unicode 转义
print(path) # 报错:SyntaxError: (unicode error) ...
而使用 r 前缀后,Python 会直接按照字面含义处理字符串:
path = r"c:\windows\user\data" # 正确!\ 不会被转义
print(path) # 输出:c:\windows\user\data
2.3.1常见用途
-
文件路径(Windows 系统) Windows 路径包含大量
\,用r可以避免手动转义:file_path = r"C:\Program Files\Python\script.py" -
正则表达式 正则表达式中常有
\d、\w等特殊字符,用r保持原始含义:import re pattern = r"\d+" # 匹配数字 -
避免转义混乱 例如打印反斜杠本身:
print(r"反斜杠是 \ ") # 输出:反斜杠是 \
2.3.2注意事项
-
r仅影响反斜杠的转义行为,不影响字符串的其他部分(如引号仍需配对)。 -
即使使用
r,字符串末尾也不能是单个\(因为 Python 仍会尝试转义),例如:print(r"C:\windows\") # 错误!SyntaxError: EOL while scanning string literal解决方法:
print(r"C:\windows" + "\\") # 拼接一个普通字符串的 \
2.4格式化表达式
2.4.1 占位符
-
作用
生成具有一定格式的字符串
-
语法规则
格式化字符串 % 参数1 # 或者 格式化字符串 % (参数1, 参数2, 参数3)
-
占位符和类型码
占位符和类型码 说明 %s 转成字符串, 使用 str(x) 函数转换(常用) %d 转成十进制的整数(常用) %o 转成八进制的整数 %x,%X 转成十六进制的整数 %e,%E 转成指数格式的浮点数 %f,%F 转成小数格式的浮点数(常用) %g,%G 转成指数格式或小数格式的浮点数 %% 转成一个% %m.nf m是指总宽度,默认右对齐,加个 - 表示左对齐,n 是指保留的小数点位数
-
示例1
-
代码
fmt = """ 甲方:_____%s_____ 乙方:_____%s_____ ....... 金额:_%d__ """ s = fmt % ("小王", '华清', 10000) b = fmt % ("小红", '华清', 10000) print(s) -
输出效果:
甲方:_____小王_____ 乙方:_____华清_____ ....... 金额:_10000__ -
示例2
-
代码
print("------%F------" % 3.1415) print("------%g------" % 3.1415) print("------%e------" % 3.1415) print("------%e------" % 31.415) print("------%g------" % 3141523274812374281342374324.23748123742183472) # 按照指定的宽度打印,并保留指定的小数位数 print("------%30.2f------" % 3141523274814.23748123742183472) print("------%30.2f------" % 3144814.3472) print("------%-30.2f------" % 14) -
输出结果
------3.141500------ ------3.1415------ ------3.141500e+00------ ------3.141500e+01------ ------3.14152e+27------ ------ 3141523274814.24------ ------ 3144814.35------ ------14.00 ------
-
2.4.2 f-string
f-string 格式化字符串以 $f$ 开头,字符串中的表达式用 {} 包起来。
x = 1
y = 2.3
print(f'{x+1}') #2
x = 1
print(f'{x+1=}') #x+1=2
d = 12
print(f'abc{d}') # 其中的{}中为变量或表达式
# 可以使用:对变量进一步格式化
pi = 3.1415
print(f'{s:.2f}') # 3.14
字符串就介绍到这里,让我们再做个练习巩固一下~
练习:
写一个程序,输入三行文字, 按最长的一行, 打印如下图形方框
请输入: hello
请输入: welcome to beijing
请输入: aaaaaaa
打印:
+--------------------+
| hello |
| welcome to beijing |
| aaaaaaa |
+--------------------+
答案:
# 输入三行文字
line1 = input("请输入: ")
line2 = input("请输入: ")
line3 = input("请输入: ")
# 找到最长的一行的长度
max_len = max(len(line1), len(line2), len(line3))
# 打印顶部边框
print('+' + '-' * (max_len + 2) + '+')
# 打印每一行,确保每行的宽度和最大宽度一致,居中对齐
print('|', line1.center(max_len), '|')
print('|', line2.center(max_len), '|')
print('|', line3.center(max_len), '|')
# 打印底部边框
print('+' + '-' * (max_len + 2) + '+')
(二) 数字类型 --- int, float, complex
数字类型概述
Python 中有三种基本的数字类型:
整数(int)
浮点数(float)
复数(complex)
此外,布尔值(bool) 属于整数的子类型,即
True和False实际上是整数1和0。
1. 整数(int)
-
特性:
-
整数具有无限精度,只有机器的内存限制。
-
支持普通的算术运算(+、-、*、/、**、//、%)。
-
支持按位运算(&、|、^、~、<<、>>)。
-
可以表示十进制、二进制、八进制和十六进制。
-
-
常用函数:
-
int(x):将x转换为整数。 -
x.bit_length():返回整数的二进制位数,不包括符号位和前导零。 -
x.bit_count():返回整数的二进制表示中 1 的个数。 -
int.to_bytes(length, byteorder='big', signed=False):返回整数的字节表示。
-
-
示例:
n = 37
print(n.bit_length()) # 输出 6,表示 37 的二进制长度
print(bin(n)) # 输出 '0b100101'
-
进制表示:
-
二进制:以
0b开头,例如:0b101。 -
八进制:以
0o开头,例如:0o11。 -
十六进制:以
0x开头,例如:0x1f。
-
位权表示法--进制之间的转换方法:
可以参考:最强干货】详解二进制,八进制,十进制,十六进制的相互转换
2. 浮点数(float)
-
特性:
-
浮点数表示实数,通常使用 C 中的
double来实现。 -
浮点数的精度与机器有关,可以通过
sys.float_info查看当前机器的浮点数精度和表示方式。 -
浮点数可以表示无穷大、NaN(非数字)。
-
自动转换:当浮点数与整数运算时,整数会转换为浮点数,得到的结果也是浮点数。
-
-
常用函数:
-
float(x):将x转换为浮点数。 -
float.is_integer():判断浮点数是否为整数。 -
float.hex():返回浮点数的十六进制表示。 -
float.fromhex(s):将十六进制字符串s转换为浮点数。 -
float.as_integer_ratio():返回浮点数的最简整数比。
-
-
示例:
n = 3.14 print(n.is_integer()) # 输出 False print(n.hex()) # 输出 '0x1.91eb86p+1'
3. 复数(complex)
-
特性:
-
复数包含实部和虚部,均为浮点数。
-
可以使用
j或J来表示虚部,例如:1 + 2j。 -
可以通过
z.real获取复数的实部,通过z.imag获取复数的虚部。
-
-
常用函数:
-
complex(re, im):创建一个复数re + im * j,其中re为实部,im为虚部,默认为 0。 -
z.real:返回复数z的实部。 -
z.imag:返回复数z的虚部。 -
z.conjugate():返回复数z的共轭复数。
-
-
示例:
z = 3 + 4j print(z.real) # 输出 3.0 print(z.imag) # 输出 4.0 print(z.conjugate()) # 输出 (3-4j)4. 布尔类型(bool)
-
特性:
-
bool是int的子类,True和False分别等同于整数1和0。 -
可用于逻辑运算(
and、or、not),但也支持按位运算(&、|、^)。 -
推荐:使用逻辑运算符(
and、or)而不是按位运算符(&、|)来处理布尔值。
-
5. 数字类型构造函数
int()、float() 和 complex() 是 Python 中用于构造特定类型数字的内置函数。
- int(x):将 x 转换为整数。如果 x 是浮点数,会截断小数部分。
- float(x):将 x 转换为浮点数。
- complex(re, im):构造一个复数,re 为实部,im 为虚部(默认为 0)。
6. 数字运算
所有数字类型(复数除外)支持以下运算:
|
运算 |
结果: |
备注 |
完整文档 |
|---|---|---|---|
|
|
x 和 y 的和 |
||
|
|
x 和 y 的差 |
||
|
|
x 和 y 的乘积 |
||
|
|
x 和 y 的商 |
||
|
|
x 和 y 的商数 |
(1)(2) |
|
|
|
|
(2) |
|
|
|
x 取反 |
||
|
|
x 不变 |
||
|
|
x 的绝对值或大小 |
||
|
|
将 x 转换为整数 |
(3)(6) |
|
|
|
将 x 转换为浮点数 |
(4)(6) |
|
|
|
一个带有实部 re 和虚部 im 的复数。im 默认为0。 |
(6) |
|
|
|
复数 c 的共轭 |
||
|
|
|
(2) |
|
|
|
x 的 y 次幂 |
(5) |
|
|
|
x 的 y 次幂 |
(5) |
注意事项
地板除法 (
//) 的结果类型取决于操作数类型。对于int操作数结果为int,对于float操作数结果为float。复数不支持
//和%运算。从
float转换为int会截断小数部分。
float可以接受字符串"nan"和"inf"表示非数字和无穷。
pow(0, 0)和0 ** 0定义为 1。数字字面值可以包含 Unicode 数字字符(具有 Nd 属性的码位)。
7. 按位运算
按位运算直接对整数在二进制位级别进行操作。这些运算适用于所有整数类型,包括正数和负数,采用二的补码表示法。
按位或运算 |
对两个整数的每一位进行或操作。只要对应位中有一个为1,结果位即为1。
a = 5 # 0101
b = 3 # 0011
a | b # 结果为7 (0111)
按位异或运算 ^
对两个整数的每一位进行异或操作。对应位不同时结果为1,相同时为0。
a = 5 # 0101
b = 3 # 0011
a ^ b # 结果为6 (0110)
按位与运算 &
对两个整数的每一位进行与操作。只有对应位都为1时,结果位才为1。
a = 5 # 0101
b = 3 # 0011
a & b # 结果为1 (0001)
左移运算 <<
将二进制位向左移动指定位数,低位补0。每左移一位相当于乘以2。
x = 4 # 0100
x << 2 # 结果为16 (10000)
右移运算 >>
将二进制位向右移动指定位数,高位补符号位(算术右移)。每右移一位相当于整除2。
x = 8 # 1000
x >> 2 # 结果为2 (0010)
x = -8
x >> 2 # 结果为-2 (保留符号位)
按位取反运算 ~
对整数所有二进制位取反(包括符号位),相当于 -(x+1)。
x = 5 # 0101
~x # 结果为-6 (1010)
注意事项
移位位数限制:移位数必须为非负整数,否则引发
ValueError。溢出处理:Python整数无固定位数限制,不会发生传统溢出。
效率特性:位运算通常比算术运算效率更高,适合底层优化。
优先级规则
按位运算符优先级按以下顺序递增:
| → ^ → & → << → >> → ~
所有按位运算优先级低于算术运算,但高于比较运算。
8. 数字类型转换方法
二进制、八进制、十六进制表示法
数字前缀使用0b表示二进制(如0b1010),0o表示八进制(如0o12),0x表示十六进制(如0xA)。
二进制转换bin(x)函数将十进制整数x转换为二进制字符串,例如:
bin(10) # 返回 '0b1010'
八进制转换oct(x)函数将十进制整数x转换为八进制字符串,例如:
oct(10) # 返回 '0o12'
十进制转换int(x[, base=10])函数将字符串或数字x转换为十进制整数。可选参数base指定进制(2-36),例如:
int('0b1010', 2) # 返回 10
int('0xA', 16) # 返回 10
十六进制转换hex(x)函数将十进制整数x转换为十六进制字符串,例如:
hex(10) # 返回 '0xa'
浮点数转换float(x)函数将整数或字符串x转换为浮点数,例如:
float('3.14') # 返回 3.14
复数转换complex(x)生成实部为x、虚部为0的复数;complex(x, y)生成实部为x、虚部为y的复数,例如:
complex(3) # 返回 (3+0j)
complex(2, 3) # 返回 (2+3j)
布尔值转换bool(x)函数根据x的真值返回True或False。非零数字、非空序列等为True,否则为False,例如:
bool(0) # 返回 False
bool(1) # 返回 True
小编有感,写在最后:学习一门编程语言,真的不容易呀,知识盘根交错,环环相扣,希望今天的笔记可以帮助你更好的了解Python的基础变量类型之字符串和数字类型,我们一起加油~
更多推荐



所有评论(0)