目录
变量
1 变量声明
1.1 命名规则
1.2 命名约定
2 变量赋值
3 变量类型
3.1 字符串类型
3.1.2 字符串拼接
3.1.3 索引和切片
3.1.4 关系判断
3.1.5 练习
3.1.6 格式化表达式
3.1.6.1 占位符
3.1.6.2 f-string
3.1.7 常见API
3.2 数字类型
3.2.1 整数(int)
3.2.2 浮点数(float)
3.2.3 布尔类型(Bool)
3.2.4 复数(complex)
3.2.5 数字类型转换
3.3 字节串(bytes)
3.4 空值
在 Python 中,变量是用于存储数据的标识符。它们不需要显式声明类型,而是通过赋值自动确定类型(动态类型)。
变量是缓存数据的标识符。
在python中,变量是用赋值语句创建,用来绑定一个数据的有名对象
变量名只能包含字母、数字和下划线(_)。
不能以数字开头。
严格区分大小写。
不能使用保留字:
False class finally is return
None continue for lambda try
True def from nonlocal while
and del global not with
as elif if or yield
assert else import pass
break except in raise
a a1 abc ABC a1b2c3d4
one_hundred count _a __ABC__
getNameAge get_name_age GetNameAge
# 小驼峰 匈牙利命名法 大驼峰
通常使用小写字母。
多个单词时,用匈牙利命名法或驼峰法。
简短、有意义,见名只意。
纯大写字母一般表示常量,如PI = 3.14159。
变量名用名词,函数名用谓词(动词+名词),如 phone / update_phone。
类名采用驼峰形式,如MyClass。
使用=对变量进行赋值
x = 10 # 基本赋值
y, z = 20, "Hi" # 多变量同时赋值 (元组解包)
a = b = 0 # 链式赋值
Python中的变量就是变量,它没有类型,我们所说的"类型"是变量指向的内存中对象的类型。我们可以使用type小函数用于获取一个变量或值的类型。
python中的数据类型:
字符串 str
数字
整数 int
浮点数 float
布尔数 bool
age = 25 # 整数
price = 19.99 # 浮点数
name = "Alice" # 字符串
is_valid = True # 布尔值
容器
列表 list
元组 tuple
字典 dict
集合 set / 固定集合 frozenset
字节串 bytes / 字节数组 bytearray
scores = [90, 85, 88] # 列表(可变)
point = (3, 5) # 元组(不可变)
student = {"name": "Bob", "id": 123} # 字典
unique_nums = {1, 2, 3} # 集合
按照是否可修改划分分为:
不可变数据:Number(数字)、String(字符串)、Tuple(元组)
可变数据:List(列表)、Dictionary(字典)、Set(集合)
字符串是由字符组成的序列,用于表示文本信息。在 Python 中,字符串可以用单引号('
)、双引号("
)或三引号('''
或 """
)包裹。
3.1.1 基本特征
引号引起来的:单引号、双引号、三引号(三个单引号或双引号);
使用反斜杠\对字符进行转义
\' 代表单引号
\" 代表双引号
\n 代表换行符
\\ 代表反斜杠
\t 代表缩进
字符串前加r表示原始字符串,不转义;
r'c:\window\user\data'
字符串连接用 +;
相邻的两个或多个 字符串字面值 会自动合并
first = "Hello"
second = "World"
# 使用 + 运算符
combined = first + " " + second # "Hello World"
# 使用 join() 方法
words = ["Python", "is", "awesome"]
sentence = " ".join(words) # "Python is awesome"
# 使用格式化字符串
formatted = f"{first} {second}!" # "Hello World!"
字符串多次重复, 如 :
s = "abc"
repeated = s * 3 # "abcabcabc"
索引访问:从0开始,支持负数
支持切片:参数是start、end、step,下标从0开始,支持负数
s = "Python字符串"
print(s[0]) # 'P' - 第一个字符
print(s[-1]) # '串' - 最后一个字符
print(s[2:5]) # 'tho' - 索引2到4的字符
print(s[:3]) # 'Pyt' - 前三个字符
print(s[6:]) # '字符串' - 从索引6开始到结尾
print(s[::2]) # 'Pto字' - 每隔一个字符取一个
print(s[::-1]) # '串符字nohtyP' - 反转字符串
in 和 not in:判断是否包含指定的子字符串
str = r'c:\window\ruser\data'
print('window' in str)
课后练习1
输入一个字符串,判断它是不是回文
上海自来水来自海上
ABCCBAa
13531
input1=input("请输入一个字符串:") input2=input1[::-1] print(input1==input2)
课后练习2
写程序,输入一个字符, 打印字符串的如下内容
1. 打印这个字符串的第一个字符
2. 打印这个字符串的最后一个字符串
3. 如果这个字符串的长度是 奇数,则打印中间这个字符
用 len(x) 求字符串的长度
s = input("请输入一段文字: ") print('第一个字符是:', s[0]) print('最后一个字符是:', s[-1]) if len(s) % 2 == 1: print('中间的字符是', s[len(s) // 2])
课后练习3
写一个程序,输入三行文字, 按最长的一行, 打印如下图形方框
打印: *--------------------------*
* nihao *
* welcome to China *
*---------------------------*
input1 = input('请输入字符串1:') input2 = input('请输入字符串2:') strlen = max([len(input1),len(input2)])+2 print('*'+'-'*strlen+'*') print('*'+input1.center(strlen, )+'*') print('*'+input2.center(strlen)+'*') print('*'+'-'*strlen+'*')
作用
生成具有一定格式的字符串
语法规则
格式化字符串 % 参数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 % ("小王", '公司A', 10000)
b = fmt % ("小红", '公司B', 10000)
print(s)
输出效果:
甲方:_____小王_____
乙方:_____公司A_____
....... 金额:_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 ------
f-string 格式化字符串以 f 开头,字符串中的表达式用 {} 包起来。
# 基本用法
print(f"Name: {name}, Age: {age}") # 直接引用变量
# 表达式计算
a, b = 5, 10
print(f"Sum: {a + b}") # Sum: 15
# 格式化选项
print(f"Pi: {pi:.2f}") # Pi: 3.14
print(f"Hex: {255:x} {255:X}") # Hex: ff FF
print(f"Padding: {42:05d}") # Padding: 00042
print(f"Now: {import datetime; datetime.datetime.now():%Y-%m-%d}") # 2023-11-15
# 高级用法
user = {"name": "Charlie", "age": 35}
print(f"User: {user['name']}, {user['age']}") # 访问字典
print(f"First char: {name[0]}") # 访问字符串字符
print(f"Uppercase: {name.upper()}") # 调用方法
1.大小写转换方法
方法 | 描述 | 示例 |
---|---|---|
str.lower() |
将字符串转换为小写 | "Hello".lower() → "hello" |
str.upper() |
将字符串转换为大写 | "hello".upper() → "HELLO" |
str.capitalize() |
首字母大写 | "python".capitalize() → "Python" |
str.title() |
每个单词首字母大写 | "hello world".title() → "Hello World" |
str.swapcase() |
大小写互换 | "PyThOn".swapcase() → "pYtHoN" |
2.查找与替换方法
方法 | 描述 | 示例 |
---|---|---|
str.find(sub[, start[, end]]) |
查找子串首次出现位置 | "apple".find("p") → 1 |
str.rfind(sub[, start[, end]]) |
查找子串最后一次出现位置 | "apple".rfind("p") → 2 |
str.index(sub[, start[, end]]) |
类似 find(),但未找到时抛出异常 | "apple".index("p") → 1 |
str.rindex(sub[, start[, end]]) |
类似 rfind(),未找到时抛出异常 | "apple".rindex("p") → 2 |
str.replace(old, new[, count]) |
替换子串 | "banana".replace("na", "xy") → "baxyxa" |
str.count(sub[, start[, end]]) |
统计子串出现次数 | "banana".count("na") → 2 |
3、分割与连接方法
方法 | 描述 | 示例 |
---|---|---|
str.split(sep=None, maxsplit=-1) |
分割字符串 | "a,b,c".split(",") → ['a','b','c'] |
str.rsplit(sep=None, maxsplit=-1) |
从右侧分割字符串 | "a b c".rsplit(" ", 1) → ['a b','c'] |
str.splitlines([keepends]) |
按行分割 | "line1\nline2".splitlines() → ['line1','line2'] |
str.join(iterable) |
连接可迭代对象 | ",".join(['a','b','c']) → "a,b,c" |
str.partition(sep) |
将字符串分成三部分 | "hello.world".partition(".") → ('hello','.','world') |
str.rpartition(sep) |
从右侧将字符串分成三部分 | "hello.world.py".rpartition(".") → ('hello.world','.','py') |
所有数字类型(复数除外)都支持下列运算
运算 |
结果: |
完整文档 |
---|---|---|
|
x 和 y 的和 |
|
|
x 和 y 的差 |
|
|
x 和 y 的乘积 |
|
|
x 和 y 的商 |
|
|
x 和 y 的商数 |
|
|
|
|
|
x 取反 |
|
|
x 不变 |
|
|
x 的绝对值或大小 |
abs() |
|
将 x 转换为整数 |
int() |
|
将 x 转换为浮点数 |
float() |
|
一个带有实部 re 和虚部 im 的复数。im 默认为0。 |
complex() |
|
复数 c 的共轭 |
|
|
|
divmod() |
|
x 的 y 次幂 |
pow() |
|
x 的 y 次幂 |
Python 中的基本的数字类型
整数 int
浮点数(小数) float
布尔类型数 bool
复数(complex
)
int
)a = 10 # 十进制
b = 0b1010 # 二进制(等于10)
c = 0o12 # 八进制(等于10)
d = 0xa # 十六进制(等于10)
e = 10**100 # 极大整数:10的100次方
float
)f1 = 3.14
f2 = 1.2e3 # 科学计数法:1.2×10³ = 1200.0
f3 = 2.5e-2 # 0.025
表示真假、对错、黑白等;
只有2个值True和False;
类型转换使用bool()方法
非0都是True
0、0.0、-0.0、空字符串、空列表、空字典、空集合、空元组、None等都是False;
complex
)c = 3 + 4j
print(c.real) # 实部:3.0
print(c.imag) # 虚部:4.0
可以使用0b、0o、0x等表示二进制、八进制、十六进制
bin():转换为二进制
oct():转换为八进制
int():转换为十进制整数
hex():转换为十六进制
float():转换为浮点数
complex(x):将x转换到一个复数,实数部分为 x,虚数部分为 0。
complex(x, y):将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。
bool(x):将 x 转化为布尔值
字节串是通过在字符串前加上 b 来表示的:
byte_string = b'hello'
print(byte_string) # 输出: b'hello'
print(type(byte_string)) # 输出:
字节串通常用于表示二进制数据,比如网络通信、加密解密、协议解析、文件操作等场景。
空值用 None 表示,类型为NoneType
none_value = None
print(none_value) # 输出: None
print(type(none_value)) # 输出:
None 表示没有值或缺失的值。
通常用于函数没有返回值的情况,或者用作可选参数的默认值。