Python基础
python
Python 对代码格式有严格的要求。缩进、注释和换行不仅影响可读性,更是语法的一部分。格式错误会直接导致程序无法运行。
注释
注释用于说明代码逻辑,帮助理解与维护。
单行注释
以 # 开头,可以单独成行,也可写在代码后面:
bash
# 输出一段文字
print("Hello, Python")
print("Hello, Python") # 输出问候语
规范建议:
#后应留一个空格;- 当注释与代码同一行时,代码与注释之间建议留两个空格。
多行注释(文档字符串)
多行注释使用三对引号(''' 或 """)包裹,常用于函数、类或模块的说明。
bash
print('''我爱
python''')
缩进
Python 通过缩进表示代码层次结构。
推荐使用 4 个空格 表示一级缩进,不建议使用 Tab 键或混合使用两者。
bash
if True:
print("正确")
else:
print("错误")
若缩进不一致,将会报错:
bash
IndentationError: unindent does not match any outer indentation level
语句换行
为了保持可读性,建议每行不超过 79 个字符 。
当语句过长时,可利用圆括号、方括号或花括号的隐式换行特性:
bash
string = (
"Python 是一种面向对象、解释型的编程语言,"
"由 Guido van Rossum 于 1989 年发明。"
"第一个公开版本于 1991 年发布。"
)
标识符与关键字
标识符是变量、函数、类等名称。命名时应遵守以下规则:
- 由字母、数字和下划线组成,且数字不能开头;
- 区分大小写,例如
Tom与tom是不同的标识符; - 不能与 Python 关键字同名。
常见命名建议:
- 变量名应见名知意,例如:
name、age; - 常量使用大写字母和下划线连接:
ORDER_LIMIT; - 函数与模块名使用小写字母和下划线连接:
get_info(); - 类名首字母大写:
Student、Person。
查看 Python 内置关键字:
bash
import keyword
print(keyword.kwlist)
变量与数据类型
变量用于存储数据。Python 使用赋值符号 = 将值与变量建立关系:
bash
data = 100
Python 内置多种数据类型,包括数字类型和组合类型。
数字类型
| 类型 | 示例 | 说明 |
|---|---|---|
| 整型 int | 10, -3, 0 |
整数 |
| 浮点型 float | 3.14, -2.5e-3 |
小数或科学计数 |
| 复数 complex | 1+2j, -3j |
含虚部的数 |
| 布尔 bool | True, False |
逻辑真假 |
字符串
由单引号、双引号或三引号包裹的有序字符集合:
bash
'Python123'
"Hello World"
'''多行字符串'''
列表
可变的有序集合,用方括号 [] 表示:
bash
num = [1, 2, 3, 'Python']
num = ['hello',3.14,10,True,['a','b','c']]
print(num[2])
num.append('python')
print(num)
元组
不可变的有序集合,用圆括号 () 表示:
bash
info = (1, 2, 'hello')
num = ('hello',3.14,10,True,['a','b','c'])
num[4].append(40)
print(num)
集合
无序且不重复的元素集合,用花括号 {} 表示:
bash
num = {11,22,33,44,'hello',22}
print(num)
字典
键值对形式的数据结构:
bash
info = {'name':'jack','age':25,'score':88}
info['score']=98
print(info)
可使用 type() 查看变量类型:
bash
print(type(info)) # <class 'dict'>
输入与输出
输入
input() 用于接收键盘输入,返回字符串类型:
bash
num = input('请输入数据: ')
print(int(num)+1)
输出
print() 用于向控制台输出数据:
bash
for i in range(1,10):
for j in range(1, i+1):
print(j,end=' ')
print()
for i in range(1,10):
for j in range(1, i+1):
print(f'{i}x{j}={i*j}',end='\t')
print()
实例
bash
#复数操作:
number = 2j+3
print('实数:',number.real)
print('虚数:',number.imag)
#布尔值转换
print(bool('a'))
#整除运算:
result = 10//3
print(result)
#幂运算:
result = 2**3
print(result)
result = 4**0.5
print(result)
#取余运算:
result = 5%2
print(result)
#1 到 10 的数字对 3 取余:
for i in range(1,11):
print(i%3)
#1 到 99 的数字对 6 取余:
for i in range(1,100):
print(i%6)
#生成 10 个 1 到 28 之间的随机整数:
import random
for i in range(10):
print(random.randint(1,28))
数字与进制
整数可使用不同进制表示:
bash
0b101 # 二进制
0o7 # 八进制
10 # 十进制
0xA # 十六进制
进制转换:
bash
number = 10
print(bin(number)) # 二进制
print(oct(number)) # 八进制
print(hex(number)) # 十六进制
实例:
bash
number = int(input('请输入教值:'))
print('二进制:',bin(number))
print('八进制:',oct(number))
print('十六进制:',hex(number))
print('二进制转十进制',int(0b1100))
运算符
Python 支持多种运算符,包括算术、赋值、比较、逻辑、成员和位运算。
算术运算符
bash
+`, `-`, `*`, `/`, `//`, `%`, `**
示例:
bash
num = 10
num += 1 # num = num+1
print(num)
#海象运算符:=
print((num1:=18)+(num2:=20))
print(num1)
print(num2)
#判断
print(3!=2)
#逻辑判断
if 3>2 and 4>5 and(num:=10)> 9:
print('成立')
else:
print('不成立')
print(not True)
if '刘备' in ['关羽','张飞','赵云','刘备']:
print('账号已被注册')
else:
print('账号可以使用')
#位运算 左移 右移
print(17<<2)
print(34>>2)
#按位与运算
print(1&1)
print(27&11)
#按位或运算
print(27|11)
#按位异或运算
print(27^11)
#按位取反运算
print(~-34)
实例:摄氏温度转开尔文温度
bash
celsius = float(input("请输入摄氏温度(℃):"))
kelvin = celsius + 273.15
print(f"{celsius}℃ 对应的开氏温度是 {kelvin}K")
实例:BMI 指数计算
bash
height = float(input("请输入您的身高(米):"))
weight = float(input("请输入您的体重(千克):"))
bmi = weight / (height ** 2)
print(f"您的BMI指数为:{bmi:.2f}")
总结
- 代码格式 :注释分单行(
#开头)和多行(三对单 / 双引号包裹),需规范空格间距;缩进用 4 个空格(Python3 不允许 Tab 与空格混用),同一代码块缩进量需一致;长语句可利用圆括号、中括号、大括号隐式换行,每行建议不超过 79 字符。 - 标识符与关键字 :标识符由字母、数字、下划线组成,数字不能开头,区分大小写且不能使用关键字;命名建议见名知意,常量大写、模块 / 函数名小写(下划线连接)、类名首字母大写。Python3 有 35 个关键字(如
if、for、def),可通过keyword.kwlist查看。 - 变量与数据类型 :变量用
变量名=值定义,关联内存单元中的数据;基础数据类型包括整型(int)、浮点型(float)、布尔型(bool)、复数型(complex),组合类型有字符串(''/""/''' '''包裹)、列表([],可修改)、元组((),不可修改)、集合({},无序唯一)、字典({key:value},键不重复),用type()可查看数据类型。 - 输入与输出 :
input([prompt])接收用户输入,返回字符串类型;print(*objects, sep=' ', end='\n')输出数据,sep指定分隔符,end指定结尾字符,支持多对象输出。 - 数字类型细节 :整型支持二进制(0b/0B)、八进制(0o/0O)、十进制、十六进制,可通过
bin()/oct()/int()/hex()转换进制;浮点型可表示为普通小数或科学计数法(e/E);复数由实部和虚部(j 结尾)组成,通过.real/.imag获取对应部分;布尔型True对应 1、False对应 0,空值、0、空序列等会被判定为False。 - 类型转换 :
int()将数据转为整型(浮点型转整型保留整数部分),float()转为浮点型,complex()转为复数型,可实现数字类型间的强制转换。 - 运算符 :算术运算符(
+、-、*、/、//、%、**)支持同类型及混合运算;赋值运算符(=)可多变量同时赋值,复合赋值运算符(+=、*=等)兼具运算与赋值功能,Python3.8 新增海象运算符:=用于表达式内赋值;比较运算符(==、>、<等)返回布尔值;逻辑运算符(and、or、not)用于逻辑判断;成员运算符(in、not in)判断元素是否在序列中;位运算符(<<、>>、&等)按二进制位运算;运算符优先级:括号 > 位运算 > 算术运算 > 比较运算 > 逻辑运算 > 赋值运算,同优先级从左到右执行。
Python 流程控制
程序中的语句通常自上而下顺序执行,但在实际开发中,我们往往需要让程序根据条件做出不同选择,或反复执行某些语句。
Python 提供了三类语句用于实现这种流程控制:条件语句、循环语句、跳转语句。
条件语句
在代码中,可以通过条件语句让程序根据判断结果执行不同的操作。
if 语句
if 是最基本的条件语句。它由关键字 if、判断条件和冒号组成,后面跟一个缩进的代码块。
bash
if 条件表达式:
代码块
当条件成立(即结果为 True)时执行代码块,否则跳过。
示例:
bash
score = 88
if score >= 60:
print("考试及格")
输出:
bash
考试及格
if-else 语句
在很多场景中,不仅要处理满足条件的情况,还要在条件不满足时执行另一段逻辑。
这时可以使用 if-else 语句。
bash
score = 50
if score >= 60:
print("考试及格")
else:
print("考试不及格")
if-elif-else 语句
当有多个分支时,使用多重判断结构 if-elif-else。
bash
score = input('请输入成绩:')
if score.isdigit():
score=int(score)
if score >= 60:
print('考试通过')
else:
print('不合格')
else:
print('输入不合法')
if 嵌套
当判断条件之间存在包含关系时,可以使用 if 嵌套。
例如判断成绩状况:
bash
score = input('请输入成绩:')
if score.isdigit():
score=int(score)
if score >= 90:
print('优秀')
elif score>=80 and score<90:
print('良好')
elif score>=70 and score<80:
print('中等')
elif score>=60 and score<70:
print('合格')
else:
print('不合格')
else:
print('输入不合法')
扩展:可以用 isdigit() 判断输入内容是否为数字。
示例:
bash
#识别字符串是否为数字
print('abc'.isdigit())
案例:判断闰年平年
bash
year = int(input('请输入年份:'))
mon = int(input('请输入月份:'))
if mon in [1,3,5,7,8,10,12]:
print('天数为31天')
elif mon in [4,6,9,11]:
print('天数为30天')
else:
if year%400==0 or year%100!=0 and year%4==0:
print('天数为29天')
else:
print('天数为28天')
循环语句
程序中常有需要重复执行的任务。Python 提供了两种循环方式:while 和 for。
三大核心:初始值、循环条件、如何退出
while 循环
while 一般用于条件循环,只要条件满足就会反复执行。
bash
num=1
while num <=10:
print(num)
num += 1
print("退出时:",num)
while True 可以创建无限循环:
bash
while True:
print("无限循环")
for 循环
for 一般用于遍历循环,即依次访问可迭代对象中的元素。
bash
for i in range(1,11):
print(i)
#计算 1 到 100 的总和
a = 0
for i in range(1,101):
a += i
print(a)
#计算 1 到 100 的奇数和(方法 1)
a = 0
for i in range(1,101):
if i%2!=0:
a += i
print(a)
#计算 1 到 100 的奇数和(方法 2)
a = 0
for i in range(1,101,2):
a += i
print(a)
#计算 1 到 100 的偶数和
a = 0
for i in range(2,101,2):
a += i
print(a)
循环嵌套
循环之间可以嵌套使用,用于生成更复杂的结构。
while 嵌套
bash
i = 1
while i < 6:
j = 0
while j < i:
print("*", end='')
j += 1
print()
i += 1
输出:
bash
*
**
***
****
*****
for 嵌套
bash
#正方形(5x5 星号矩阵)
for j in range(5):
for i in range(5):
print('*',end=' ')
print()
#左对齐三角形(递增)
for i in range(5):
for j in range(i):
print('*',end=' ')
print()
#左对齐三角形(递减)
for i in range(5):
for j in range(5-i):
print('*',end=' ')
print()
#等腰三角形(上半部分)
for j in range(5,0,-1):
for i in range(1,j+1):
print(' ', end=' ')
for i in range(2*(5-j)+1):
print('*',end=' ')
print()
#完整等腰三角形(上下对称)
for j in range(0,6):
for i in range(1, j + 1):
print(' ', end=' ')
for i in range(2 * (5 - j) + 1):
print('*', end=' ')
print()
#二维列表遍历(逐元素打印)
num_list=[[1,2,5],[2,5,4],[5,4,6]]
for i in num_list:
for j in i:
print(j)
跳转语句
在循环中,有时需要提前结束或跳过某次循环,Python 提供了两种跳转语句:break 和 continue。
break
break 用于立即结束当前循环。
bash
for i in 'python':
if i == 'o':
break
print(i)
输出:
bash
P
y
t
h
continue
continue 用于跳过本次循环,直接进入下一轮。
bash
for i in 'python':
if i == 'o':
continue
print(i)
输出:
bash
P
y
t
h
n
实训案例
逢七拍手游戏
规则:从 1 开始数数,遇到 7 或 7 的倍数时拍手。
示例:输出 100 以内需要拍手的数字。
bash
#方法一
for i in range(1,101):
if i%7==0 or '7'in str(i):
print('*',end=',')
else:
print(i, end=',')
#方法二
for i in range(1,101):
if i%7==0 or '7'in str(i):
print('*',end=',')
continue
print(i, end=',')
总结
- 流程控制核心:Python 通过条件语句、循环语句、跳转语句改变默认的自上而下执行顺序,实现分支、重复、中断等逻辑。
- 条件语句:
if语句:单分支结构,if 条件: 代码块,条件成立则执行代码块。if-else语句:双分支结构,条件成立执行if代码块,否则执行else代码块。if-elif-else语句:多分支结构,依次判断条件,满足任一条件则执行对应代码块,均不满足则执行else代码块。if嵌套:条件语句内部嵌套另一个条件语句,需外层条件成立后才判断内层条件。
- 循环语句:
while语句:条件循环,while 条件: 代码块,条件成立则重复执行代码块,需手动更新条件避免无限循环。for语句:遍历循环,for 临时变量 in 目标对象: 代码块,可遍历字符串、列表等可迭代对象,常与range()函数搭配生成整数序列。- 循环嵌套:
while或for语句内部嵌套另一个循环语句,外层循环每执行一次,内层循环完整执行一轮,适用于复杂重复逻辑(如打印图形)。
- 跳转语句:
break语句:结束当前循环,嵌套循环中仅结束本层循环。continue语句:跳出本次循环,直接进入下一轮循环,不执行后续代码块。
- 核心应用:可实现计算器、猜数字、逢 7 拍手、五子棋棋盘打印、房贷计算器等功能,通过分支判断、重复执行、循环中断组合满足不同业务逻辑。
字符串
在登录网站时,浏览器需要将账号和密码发送到服务器进行验证。密码本质上是一串由字母、数字和符号组成的字符串。字符串在编程中用于表示和处理文本信息,是 Python 中最常用的数据类型之一。
字符串定义
字符串是由字母、符号或数字组成的字符序列。
Python 支持使用 单引号 ' ' 、双引号 " " 和 三引号 ''' ''' 或 """ """ 定义字符串。
bash
print('使用单引号在一行输出')
print("使用双引号在一行输出")
print("""使用三引号
进行多行输出""")
输出:
bash
使用单引号在一行输出
使用双引号在一行输出
使用三引号
进行多行输出
当字符串中包含相同类型的引号时,应更换外层引号类型以避免冲突:
bash
print("let's go")
print('他说:"Python 很棒!"')
转义字符与原始字符串
反斜杠 \ 用于转义,使特殊符号或控制字符能在字符串中正确表示:
bash
print('let\'s go')
print('E:\\python\\code')
输出:
bash
let's go
E:\python\code
常见转义字符:
bash
\n ------ 换行
\r ------ 回车
\t ------ 制表符
\b ------ 退格
\\ ------ 反斜杠本身
如果希望字符串中的转义符不生效,可以使用 原始字符串 (在字符串前加 r 或 R):
bash
print(r'转义字符:\n表示换行;\r表示回车;\b表示退格')
格式化字符串
字符串格式化用于将变量嵌入字符串中,Python 提供三种方式:
使用 % 格式化
bash
字符串格式化 %
name='刘备'
age=20
info='他的姓名是%s,年龄是%d'
print(info % (name,age))
使用 format() 方法
format() 使格式化更直观,可按顺序或名称进行替换:
bash
字符串format格式化
name='刘备'
age=20
info='他的姓名是{},年龄是{}'
print(info.format(name,age))
name='刘备'
age=20
info='他的姓名是{a},年龄是{b}'
print(info.format(b=age,a=name))
格式化浮点数的精度:
bash
浮点精度
import math
r=5
pi=math.pi
s=pi*r**2
info = '半径是{a},Π为{b:.3},圆的面积是{c:.4}'
print(info.format(a=r,b=pi,c=s))
使用 f-string
f-string 是最简洁的格式化方式:
bash
f-string
name='张飞'
age=20
print(f'他的姓名是{name},年龄是{age}')
字符串查找与替换
使用 find() 查找子串在字符串中的位置:
bash
print('pythono'.find('o'))
word = """八百标兵奔北坡,北坡炮兵并排跑。炮兵怕把标兵碰,标兵怕碰炮兵炮。"""
idx = 0
#统计次数
count = 0
while True:
idx = word.find('兵', idx, len(word))
if idx == -1:
break
count += 1
idx += 1
print(count)
word = """八百标兵奔北坡,北坡炮兵并排跑。炮兵怕把标兵碰,标兵怕碰炮兵炮。"""
count=0
for tmp in word:
if tmp=='兵':
count +=1
print(count)
使用 replace() 替换子串:
bash
#替换,标兵>战士
word = """八百标兵奔北坡,北坡炮兵并排跑。炮兵怕把标兵碰,标兵怕碰炮兵炮。"""
print(word.replace('标兵','战士',2))
字符串分割与拼接
split() 用于分割字符串,返回列表:
bash
#分割
word = """八百标兵奔北坡,北坡炮兵并排跑,炮兵怕把标兵碰,标兵怕碰炮兵炮"""
print(word.split(','))
IP='192.168.10.100'
print(IP.split('.'))
dns='https://www.baidu.com:8080'
print(dns.split(':')[2])
join() 用于拼接字符串:
bash
#拼接
symbol='-'
word='python'
print(symbol.join(word))
symbol='.'
for i in range(256):
word=['192','168','10',str(i)]
print(symbol.join(word))
symbol='.'
for i in range(256):
word=['192','168','10',str(i)]
new_list.append(symbol.join(word))
print(new_list)
删除字符串中的指定字符
strip()、lstrip()、rstrip() 用于删除字符串中的空格或指定字符:
bash
#删除
word = '*人生苦短, 我用Python !*'
print(word)
print(word.strip('*'))
print(word.lstrip('*'))
print(word.rstrip('*'))
#只留,我用python
word = '*人生苦短, 我用Python !*'
print(word.lstrip('*人生苦短,').rstrip(' !*') )
大小写转换
bash
#大小写
string = 'Life is short. I use Python'
print(string.upper())
print(string.lower())
print(string.capitalize())
print(string.title())
字符串对齐
使用 center()、ljust()、rjust() 设置对齐方式:
bash
#对齐方式
word=' hello world'
print(len(word))
print(word.center(15,'-'))
print(word.ljust(15,'-'))
print(word.rjust(15,'-'))
总结
- 字符串定义与转义 :字符串是字符序列,可用单引号、双引号(单行)或三引号(多行)定义。遇相同类型引号需用转义字符
\处理,或更换外层引号;\n(换行)、\t(制表符)等为常用转义字符,加r/R可定义原始字符串,使转义字符失效。 - 字符串格式化:
%格式化:用%s(字符串)、%d(整数)、%f(浮点型)等格式符占位,通过格式字符串 % 数据替换,多数据需用元组包裹。format()方法:字符串中用{}占位,通过str.format(数据)替换,支持按顺序、索引、名称匹配,还可指定浮点型精度(如{:.3f})。- f-string 格式化:以
f/F开头,字符串中用{变量名}直接引用变量,简洁直观,无需指定数据类型。
- 字符串查找与替换:
find(sub[, start[, end]]):查找子串,返回首次出现的索引,未找到返回-1,可指定查找范围。replace(old, new[, count]):将旧子串替换为新子串,count指定替换次数,默认替换所有,返回新字符串。
- 字符串分割与拼接:
split(sep=None, maxsplit=-1):按指定分隔符分割字符串,返回列表,maxsplit指定分割次数,默认不限制。join(iterable):用字符串作为连接符,拼接可迭代对象(如字符串、列表)中的元素,返回新字符串;也可通过+拼接字符串、*实现字符串重复。
- 字符串去字符操作:
strip(chars):删除字符串首尾指定字符(默认删除空格)。lstrip(chars):仅删除字符串头部指定字符。rstrip(chars):仅删除字符串尾部指定字符。
- 字符串大小写转换:
upper():全部转为大写;lower():全部转为小写。capitalize():字符串首字母大写,其余小写;title():每个单词首字母大写。
- 字符串对齐:
center(width, fillchar):居中对齐,指定总长度和填充字符(默认空格)。ljust(width, fillchar):左对齐;rjust(width, fillchar):右对齐,参数规则与center()一致。
- 核心特性与应用:字符串创建后不可修改,所有操作均返回新字符串。可实现敏感词替换、文本排版、进制转换、文本进度条等功能,是处理文本数据的核心工具。