Python基础(一)

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 年发布。"
)

标识符与关键字

标识符是变量、函数、类等名称。命名时应遵守以下规则:

  1. 由字母、数字和下划线组成,且数字不能开头;
  2. 区分大小写,例如 Tomtom 是不同的标识符;
  3. 不能与 Python 关键字同名。

常见命名建议:

  • 变量名应见名知意,例如:nameage
  • 常量使用大写字母和下划线连接:ORDER_LIMIT
  • 函数与模块名使用小写字母和下划线连接:get_info()
  • 类名首字母大写:StudentPerson

查看 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}")

总结

  1. 代码格式 :注释分单行(# 开头)和多行(三对单 / 双引号包裹),需规范空格间距;缩进用 4 个空格(Python3 不允许 Tab 与空格混用),同一代码块缩进量需一致;长语句可利用圆括号、中括号、大括号隐式换行,每行建议不超过 79 字符。
  2. 标识符与关键字 :标识符由字母、数字、下划线组成,数字不能开头,区分大小写且不能使用关键字;命名建议见名知意,常量大写、模块 / 函数名小写(下划线连接)、类名首字母大写。Python3 有 35 个关键字(如iffordef),可通过keyword.kwlist查看。
  3. 变量与数据类型 :变量用变量名=值定义,关联内存单元中的数据;基础数据类型包括整型(int)、浮点型(float)、布尔型(bool)、复数型(complex),组合类型有字符串(''/""/''' '''包裹)、列表([],可修改)、元组((),不可修改)、集合({},无序唯一)、字典({key:value},键不重复),用type()可查看数据类型。
  4. 输入与输出input([prompt])接收用户输入,返回字符串类型;print(*objects, sep=' ', end='\n')输出数据,sep指定分隔符,end指定结尾字符,支持多对象输出。
  5. 数字类型细节 :整型支持二进制(0b/0B)、八进制(0o/0O)、十进制、十六进制,可通过bin()/oct()/int()/hex()转换进制;浮点型可表示为普通小数或科学计数法(e/E);复数由实部和虚部(j 结尾)组成,通过.real/.imag获取对应部分;布尔型True对应 1、False对应 0,空值、0、空序列等会被判定为False
  6. 类型转换int()将数据转为整型(浮点型转整型保留整数部分),float()转为浮点型,complex()转为复数型,可实现数字类型间的强制转换。
  7. 运算符 :算术运算符(+-*///%**)支持同类型及混合运算;赋值运算符(=)可多变量同时赋值,复合赋值运算符(+=*=等)兼具运算与赋值功能,Python3.8 新增海象运算符:=用于表达式内赋值;比较运算符(==><等)返回布尔值;逻辑运算符(andornot)用于逻辑判断;成员运算符(innot 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 提供了两种循环方式:whilefor

三大核心:初始值、循环条件、如何退出

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 提供了两种跳转语句:breakcontinue

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=',')

总结

  1. 流程控制核心:Python 通过条件语句、循环语句、跳转语句改变默认的自上而下执行顺序,实现分支、重复、中断等逻辑。
  2. 条件语句:
    • if语句:单分支结构,if 条件: 代码块,条件成立则执行代码块。
    • if-else语句:双分支结构,条件成立执行if代码块,否则执行else代码块。
    • if-elif-else语句:多分支结构,依次判断条件,满足任一条件则执行对应代码块,均不满足则执行else代码块。
    • if嵌套:条件语句内部嵌套另一个条件语句,需外层条件成立后才判断内层条件。
  3. 循环语句:
    • while语句:条件循环,while 条件: 代码块,条件成立则重复执行代码块,需手动更新条件避免无限循环。
    • for语句:遍历循环,for 临时变量 in 目标对象: 代码块,可遍历字符串、列表等可迭代对象,常与range()函数搭配生成整数序列。
    • 循环嵌套:whilefor语句内部嵌套另一个循环语句,外层循环每执行一次,内层循环完整执行一轮,适用于复杂重复逻辑(如打印图形)。
  4. 跳转语句:
    • break语句:结束当前循环,嵌套循环中仅结束本层循环。
    • continue语句:跳出本次循环,直接进入下一轮循环,不执行后续代码块。
  5. 核心应用:可实现计算器、猜数字、逢 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 ------ 退格
\\ ------ 反斜杠本身

如果希望字符串中的转义符不生效,可以使用 原始字符串 (在字符串前加 rR):

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,'-'))

总结

  1. 字符串定义与转义 :字符串是字符序列,可用单引号、双引号(单行)或三引号(多行)定义。遇相同类型引号需用转义字符\处理,或更换外层引号;\n(换行)、\t(制表符)等为常用转义字符,加r/R可定义原始字符串,使转义字符失效。
  2. 字符串格式化:
    • %格式化:用%s(字符串)、%d(整数)、%f(浮点型)等格式符占位,通过格式字符串 % 数据替换,多数据需用元组包裹。
    • format()方法:字符串中用{}占位,通过str.format(数据)替换,支持按顺序、索引、名称匹配,还可指定浮点型精度(如{:.3f})。
    • f-string 格式化:以f/F开头,字符串中用{变量名}直接引用变量,简洁直观,无需指定数据类型。
  3. 字符串查找与替换:
    • find(sub[, start[, end]]):查找子串,返回首次出现的索引,未找到返回-1,可指定查找范围。
    • replace(old, new[, count]):将旧子串替换为新子串,count指定替换次数,默认替换所有,返回新字符串。
  4. 字符串分割与拼接:
    • split(sep=None, maxsplit=-1):按指定分隔符分割字符串,返回列表,maxsplit指定分割次数,默认不限制。
    • join(iterable):用字符串作为连接符,拼接可迭代对象(如字符串、列表)中的元素,返回新字符串;也可通过+拼接字符串、*实现字符串重复。
  5. 字符串去字符操作:
    • strip(chars):删除字符串首尾指定字符(默认删除空格)。
    • lstrip(chars):仅删除字符串头部指定字符。
    • rstrip(chars):仅删除字符串尾部指定字符。
  6. 字符串大小写转换:
    • upper():全部转为大写;lower():全部转为小写。
    • capitalize():字符串首字母大写,其余小写;title():每个单词首字母大写。
  7. 字符串对齐:
    • center(width, fillchar):居中对齐,指定总长度和填充字符(默认空格)。
    • ljust(width, fillchar):左对齐;rjust(width, fillchar):右对齐,参数规则与center()一致。
  8. 核心特性与应用:字符串创建后不可修改,所有操作均返回新字符串。可实现敏感词替换、文本排版、进制转换、文本进度条等功能,是处理文本数据的核心工具。
相关推荐
CarmenHu2 小时前
RAFT微调学习笔记
笔记·学习
QiZhang | UESTC2 小时前
JAVA算法练习题day67
java·python·学习·算法·leetcode
Kratzdisteln2 小时前
【TIDE DIARY 7】临床指南转公众版系统升级详解
python
智者知已应修善业2 小时前
【c# 想一句话把 List<List<string>>的元素合并成List<string>】2023-2-9
经验分享·笔记·算法·c#·list
B站_计算机毕业设计之家3 小时前
深度学习:python人脸表情识别系统 情绪识别系统 深度学习 神经网络CNN算法 ✅
python·深度学习·神经网络·算法·yolo·机器学习·cnn
d111111111d3 小时前
STM32外设学习--ADC模数转换器--笔记
笔记·stm32·单片机·嵌入式硬件·学习
合作小小程序员小小店3 小时前
web网页开发,在线%聚类,微博,舆情%系统,基于python,pycharm,django,nlp,kmeans,mysql
python·pycharm·kmeans·聚类·sklearn·kmean
Dan.Qiao3 小时前
python读文件readline和readlines区别和惰性读
开发语言·python·惰性读文件
A.A呐3 小时前
【QT第三章】常用控件1
开发语言·c++·笔记·qt