当前位置: 首页 > news >正文

*Python基础语法

目录

Python注释

Python变量

Python输出

Python输入

Python运算符

Python分支语句

Python循环

Python字符串

Python列表


Python注释

为了提高程序的可读性。

单行注释

# 注释内容

语法规范:#与注释内容之间要有一个空格,与语句末尾要有两个空格

多行注释

'''

注释内容

'''

语法规范:多行注释不能写在语句末尾

Pycharm单行注释快捷键:选中代码,Ctrl + /

Python变量

变量概述

用户视角来看,变量是个带标签的容器,标签就是变量名,里面存储的就是数据值;

本质上,Python的变量是指向内存中数据对象的标签,是对内存地址的引用。这与C语言不同,C语言的变量是对内存空间的命名,操作变量就是在操作内存中的二进制数据。

例如:

# Python中
a = 1  # 在内存中创建一个整数对象10,让变量a引用这个对象
b = a  # 让变量b也引用变量a引用的同一个对象10
a = 20  # 在内存中创建一个新的整数对象20,让变量a转而引用这个新对象。b仍然指向原来的对象 # C语言中
int a = 5;  # 在内存中开辟4字节空间,命名为a,并存放二进制的5#所以从底层内存开销来看,Python的对象模型比C语言的变量机制消耗更多内存

变量命名规则

①只能包含字母、数字和下划线,不能以数字开头;

②区分大小写(age、AGE、Age是不同变量);

③不能使用关键字作为变量名(if、for、class等);

④Python社区的通用规范:变量名、函数名、方法名全部用小写字母,单词之间用下划线连接(user_name);类名每个单词首字母大写,不加下划线(MyClass);变量名要具有描述性,避免无意义的命名。

常见数据类型

①数字:int(整型)、float(浮点型)、complex(复数)

②布尔:bool

③序列:str(字符串)、list(列表,可变)、tuple(元组,不可变)

④映射-键值对:dict(字典)

⑤集合:set(可变集合)、frozenset(不可变集合)

例如:

# type()函数来检查变量当前所指向的对象类型
age = 25  # <class 'int'>
price = 19.9  # <class 'float'>
z = 3 + 4i  # <class 'complex'>is_active  # <class 'bool'>, bool实际上是整数的子类name = "Lown"  # <class 'str'>
fruits = ["apple","banana","orange"]  # <class 'list'>
single_element = (20,)  # <class 'tuple'>, 注意逗号,创建单元素元组person = {"name": "Lown","age": 20,"city": "Shen Zhen"
}  # <class 'dict'>unique_numbers = {1, 2, 3, 2, 1}  # <class 'set'>,无序,重复元素会被去除
immutable_set = frozenset([1, 2, 3, 2, 1])  # <class 'frozenset'>

不可变类型:一旦创建,其值就不能被修改,重新赋值会创建新对象

int、float、complex、bool、str、tuple、frozenset

可变类型:创建后,其值可以在原地修改,不创建新对象

list、dict、set

变量基本操作

Python是动态类型语言,变量会在第一次赋值时被创建,不需要提前声明变量或类型,变量的类型在运行时确定,并且可以改变。这与C语言完全不同。

例如:

x = 5
x = "Python"
a,b,c = 1,2,"Python"  # 对象可被多个变量引用
a,b = b,a  # 优雅地交换
p = q = 100  #为多个变量赋同值# del语句删除变量
del x

Python输出

最常用的是print()函数。

基本输出

# 输出字符串
print("Hello World")# 输出数字
print(20)# 输出变量
name = "Lown"
print(name)# 输出多个值
print("Name:",name,"Age:",20)# 输出到多行,自动换行,与C语言不同
print("Name:",name)
print("Age:",20)

print()函数参数

# sep 设置分隔符
print("2025","10","25",sep="-")  # 2025-10-25# end 设置结束符,默认以换行符结束
print("Hello",end=" ")
print("World",end="!")
print("I am Lown")
# Hello World!I am Lown# file 输出到文件
with open("output.txt","w") as f:print("I am Lown",file=f)

格式化输出

# 基本用法
print(f"{name} is {age} years old")#表达式计算
print(f"Next year, {name} is {age + 1} years old")# 格式化数字
print(f"Height: {height:.3f} meters")  # 保留3位小数
print(f"Large number: {1000000:,}")  # 千位分隔符,Large number: 1,000,000
print(f"Persent:{0.987:.2%}")  # 百分比,保留两位小数,Persent:98.70%
print(f"ID:{id:06d}")  # 6位数,不足位用0补齐,ID:000666

Python输入

最常用的输入函数是input()函数。

基本用法

# input()返回的是字符串
age = input("Enter your age: ")
print(f"类型:{type(age)},值:{age}")  # 类型:<class 'str'>,值:20

基本类型转换

用数据类型转换函数转,与C语言类似。

# int(),float(),str(),bool(),complex()
# list(),tuple(),set(),dict()# 转换为整数
age = int(input("Enter your age: "))
print(f"类型:{type(age)},值:{age}")  #类型:<class 'int'>,值:20# 转换为布尔值,非空字符串都会转换为True,空字符串转为False
is_active = bool(input("是否激活(直接回车为否):"))
print(is_active)

多种输入格式

# split() 以指定字符分割
data = input("请输入姓名和年龄(用空格分隔):")
name,age = data.split()  # 空格分割
age = int(age)
print(name,age)  # Lown 20# 直接分割多个变量
name, age = input("请输入姓名和年龄: ").split()
age = int(age)
print(name, age)# 处理不确定数量的输入
numbers = input("请输入多个数字(用空格分隔): ")
number_list = [int(x) for x in numbers.split()]
print(f"数字列表: {number_list}, 总和: {sum(number_list)}")  # 数字列表: [20, 30, 40], 总和: 90

Python运算符

主要讲解与C语言的差异。

算数运算符

# +、-、*、/、//、%、**
a,b = 10,3
print(f"{a} + {b} = {a+b}")  # 13print(f"{a} / {b} = {a / b}")  # 3.3333333333333335,C语言取整3
print(-10 // 3)  # -4,向负无穷取整,而C语言是向零取整,余数符号与被除数相同-3
print(-10 % 3)  # 2,向负无穷取整,余数符号与除数相同。计算过程:-10=(-4)*3+2
print(10 % -3)  # -2,计算过程:10 = (-3)*(-4)-2
print(-10 % -3)  # -1,计算过程:-10=(-3)*3-1print(f"{a} ** {b} = {a ** b}")  # 1000,幂运算,C语言要用pow()函数a += 1
print(a)  # python中没有++和--(自增运算符和自减运算符)

比较运算符

# ==、!=、>、<、=>、<=,与C语言相同
a,b = 10,5
print(a == b)  # Falseprint(1< a < 11)  # True,python特有的链式比较,C语言必须(1<a)&&(a<11)

逻辑运算符

# and、or、not,相当于C语言中的&&、||、!
a,b = True,False
print(a and b)  # False
print(a or b)  # True#短路求值
def test_func():print("函数被调用")return Trueprint(False and test_func())  # 返回第一个为False的值, test_func() 不会被调用
print(True or test_func())    # 返回第一个为True的值, test_func() 不会被调用

位运算符

# 语法与C完全相同
a, b = 5, 3  # 5 = 0101, 3 = 0011print(f"{a} & {b} = {a & b}")   # 1  (0101 & 0011 = 0001)
print(f"{a} | {b} = {a | b}")   # 7  (0101 | 0011 = 0111)
print(f"{a} ^ {b} = {a ^ b}")   # 6  (0101 ^ 0011 = 0110)
print(f"~{a} = {~a}")           # -6 (按位取反)
print(f"{a} << 1 = {a << 1}")   # 10 (0101 << 1 = 1010)
print(f"{a} >> 1 = {a >> 1}")   # 2  (0101 >> 1 = 0010)# 注意:Python整数没有位数限制,不会溢出
big_num = 1 << 100  # 2^100,在C中会溢出,Python中不会
print(f"2^100 = {big_num}")

赋值运算符

# 基本赋值和复合赋值与C语言相同
# =、+=、-=、*=、/=、//=、%=、**=(C语言没有这个)# Python 特有的多重赋值
a, b, c = 1, 2, 3           # 同时给多个变量赋值
x = y = z = 0               # 链式赋值# 交换变量值(Python特有,不需要临时变量)
a, b = 5, 10
a, b = b, a  # 交换 a 和 b 的值
print(f"a={a}, b={b}")  # a=10, b=5

身份运算符

# is,is not,python特有# 检查两个变量是否引用同一个对象(内存地址相同)
a = [1, 2, 3]
b = a        # b 和 a 引用同一个列表
c = [1, 2, 3] # c 是新的列表对象print(a is b)     # True (同一个对象)
print(a is c)     # False (不同对象,虽然值相同)
print(a == c)     # True (值相等)# 与 None 比较时常用 is
x = None
print(x is None)    # True
print(x is not None) # False# 小整数缓存(Python优化)
a = 256
b = 256
print(a is b)  # True (Python缓存了小整数)a = 257
b = 257  
print(a is b)  # False (大整数不缓存)

成员运算符

# 检查元素是否在容器中
numbers = [1, 2, 3, 4, 5]
print(3 in numbers)        # True
print(6 not in numbers)    # Truetext = "Hello World"
print('Hello' in text)     # True
print('Python' not in text) # True# 字典中检查键
person = {'name': 'Alice', 'age': 25}
print('name' in person)    # True
print('Alice' in person)   # False (检查键,不是值)

运算符优先级(由高到低)

海象运算符 :=

# 海象运算符 := 在表达式中进行赋值
# 常用于 while 循环和条件判断while (data := input("请输入数据: ")) != "quit":print(f"处理: {data}")# 在列表推导式中使用,比传统写法更简单、性能更好
numbers = [1, 2, 3, 4, 5]
squares = [n_sq for x in numbers if (n_sq := x ** 2) > 10]
print(squares)  # [16, 25]

Python分支语句

if语句

# 条件表达式不需要括号,条件后面跟冒号,缩进代替代码块,语句结尾不需要分号
if x > 10:print("x 大于 10")

if-else语句

if age >= 18:print("成年人")
else:print("未成年人")

if-elif-else语句

# 相当于C的else if
if score >= 90:print("A")
elif score >= 80:    print("B")
elif score >= 70:print("C")
else:print("D")

嵌套if语句

if x > 0:if y > 0:print("第一象限")else:print("第四象限")
else:print("第二或第三象限")

三元表达式

// C 语言的三元运算符
int max = (a > b) ? a : b;
char* result = (score >= 60) ? "及格" : "不及格";# Python 的三元表达式
max_value = a if a > b else b
result = "及格" if score >= 60 else "不及格"

空值检查

# Python 简洁写法(利用空值为False的特性)
if name:print(f"Hello, {name}")

Python循环

for循环

# 不需要初始化、条件、递增,用range()代替计数器
for i in range(5):print(i,end=' ')  # 0 1 2 3 4# 直接遍历列表,而C语言需要索引
numbers = [1, 2, 3, 4, 5]
for number in numbers:print(number,end=' ')

while循环

i = 0
while i < 5:print(i,end=" ")  # 0 1 2 3 4i += 1# python中没有do-while,但可以模拟
j = 0
while True:print(j,end=" ")  # 0 1 2 3 4j += 1if j >= 5:break

range()函数

# 指定起始值,默认从0开始,范围左闭右开。下面相当于for(int i=1;i<5;i++)
for i in range(1,5):print(i,end =" ")  # 1 2 3 4# 指定步长,默认步长为1。下面相当于for(int i=1;i<5;i+=2)
for i in range(1,5,2):print(i,end =" ")  # 1 3# 反向遍历。下面相当于for(int i=5;i>1;i--)
for i in range(5,1,-1):print(i,end =" ")  # 5 4 3 2

遍历各数据结构

# 遍历列表
fruits = ['apple', 'banana', 'cherry']
# 直接遍历
for fruit in fruits:print(fruit)# 遍历字典
person = {'name':'Lown', 'age':20, 'gender':'male'}
# 遍历键
for key in person:print(f"键:{key}")
# 遍历值
for value in person.values():print(f"值:{value}")
# 遍历键值对
for key, value in person.items():print(f"{key} : {value}")# 遍历字符串
text = "Hello World!"for char in text:print(char,end="")

enumerate枚举遍历

fruits = ['apple', 'banana', 'cherry']
# 使用 enumerate 同时获取索引和值
for index, fruit in enumerate(fruits):print(f"第{index}个水果是{fruit}")
# 第0个水果是apple
# 第1个水果是banana
# 第2个水果是cherry# 指定起始索引
for index, fruit in enumerate(fruits, start=1):print(f"第{index}个水果是{fruit}")
# 第1个水果是apple
# 第2个水果是banana
# 第3个水果是cherry

循环控制语句

# break
# 找到第一个偶数后停止
numbers = [1, 3, 5, 7, 8, 9]
for num in numbers:if num % 2 == 0:print(f"找到偶数:{num}")break# continue
# 跳过奇数,只打印偶数
for num in range(10):if num % 2 != 0:continueprint(f"偶数:{num}")

循环的else子句

# else子句在循环正常完成时执行,即循环没有被break中断
numbers = [1, 3, 5, 7, 9]
for num in numbers:if num % 2 == 0:print(f"找到偶数: {num}")break
else:print("没有找到偶数")

嵌套循环的简化

# 生成坐标对
points = [(x, y) for x in range(3) for y in range(2)]
print(points)  # [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]

zip()函数并行遍历

# 并行遍历就是同时遍历多个列表
for name, age in zip(names, ages):print(f"{name} : {age}")
# Lown : 20
# Charles : 19
# Joey : 22

列表推导式

# 传统方式:计算平方
squares = []
for x in range(5):squares.append(x ** 2)
print(squares)  # [0, 1, 4, 9, 16]# 列表推导式,还可以在range()函数后面带条件
squares = [x**2 for x in range(5)]
print(squares)  # [0, 1, 4, 9, 16]# 字典推导式
squares_dict = {x: x**2 for x in range(5)}
print(squares_dict)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}# 集合推导式
unique_squares = {x**2 for x in [1, 2, 3, 3, 2]}
print(unique_squares)  # {1, 4, 9}

Python字符串

字符串创建

# 字符串创建后不能修改,不需要手动分配和释放内存str1 = "Hello"           # 不可变,自动内存管理
str2 = 'World'           # 单引号也可以
str3 = """多行
字符串"""                # 三引号用于多行字符串# 自动 Unicode 支持
chinese = "你好世界"      # 直接支持中文
emoji = "Python 🐍"     # 支持表情符号

字符串连接

str1 = "Hello"
str2 = "World"
# 用 + 运算符连接
result1 = str1 + " " + str2  # Hello World
# 用join()方法高效连接
result2 = " ".join([str1,str2])  # Hello World
# 重复操作符 *
repeat = "Ha" * 3  # HaHaHa
#格式化字符串
result3 = f"{str1} {str2}"  # Hello World

字符串索引

text = "Python"# 正向索引(从0开始)
print(text[5])    # 'n'# 负向索引(从-1开始)
print(text[-1])   # 'n'(最后一个)# 字符串不可变,不能修改
# text[0] = 'J'  # TypeError: 'str' object does not support item assignment

字符串切片

text = "Hello World"# 基本切片:[start:end:step]
print(text[0:5])      # Hello(索引0到4)
print(text[6:11])     # World(索引6到10)
print(text[6:])       # World(从6到结尾)
print(text[:5])       # Hello(从开头到4)
print(text[::2])      # HloWrd(每隔一个字符)# 负索引切片
print(text[-5:])      # World(最后5个字符)
print(text[::-1])     # dlroW olleH(反转字符串)

大小写转换方法

text = "Hello World"
print(text.upper())  # HELLO WORLD,所有字符转换成大写
print(text.lower())  # hello world,所有字符转换成小写
print(text.capitalize())  # Hello world,仅字符串首字母大写,其余字符小写
print(text.title())  # Hello World,每个单词的首字母大写,以空格分隔的视为不同单词
print(text.swapcase())  # hELLO wORLD,大写转小写,小写转大写

查找和替换方法

text = "Hello World"#查找
print(text.find("World"))  # 6,返回索引
print(text.find("Python"))  # -1,没找到返回-1
print(text.index("World"))  # 6,没找到会报错print(text.count("l"))        # 3,字符出现的次数
print(text.startswith("Hello")) # True,检查字符串是否以括号内字符串开头
print(text.endswith("World"))   # True,检查字符串是否以括号内字符串结尾#替换
print(text.replace("Hello", "Python"))   # Python World
print(text.replace("l","L", 1))   # HeLlo World,数字参数指定最大替换次数,默认所有

分割和连接方法

text = "apple,banana,orange,grape"# split()分割
fruits = text.split(',')
print(fruits)  # ['apple', 'banana', 'orange', 'grape']
# 限制分割次数
limited = text.split(',',2)
print(limited)  # ['apple', 'banana', 'orange,grape']
#行分割
lines = "Line1\nLine2\nLine3\nLine4\nLine5".splitlines()
print(lines)  # ['Line1', 'Line2', 'Line3', 'Line4', 'Line5']
#连接
joined = "-".join(fruits)
print(joined)  # apple-banana-orange-grape

去除空白字符方法

text = "   Hello World   \n"
print(text.strip())  # Hello World,去除两端空白
print(text.lstrip())  # Hello World   \n,去除左边空白
print(text.rstrip())  #    Hello World,去除右边空白# 去除特定字符
text2 = "***Hello World***"
print(text2.strip("*"))  # Hello World

字符串验证方法

text = "Hello123"
print(text.isalpha())  # False,是否全为字母
print(text.isalnum())  # True,是否全为字母或数字
print(text.isdigit())  # False,是否全为数字
print(text.islower())  # False,是否全为小写
print(text.isupper())  # False,是否全为大写
print(text.isspace())  # False,是否全为空白字符print("123".isdigit())    # True,字符串后可以直接跟方法

转义字符

# 常见转义字符
print("换行:\n新行")
print("制表符:\t缩进")
print("退格:Hello\b")      # Hell
print("回车:\r覆盖")        # "覆盖"字符串回到行首
print("双引号: \"")
print("单引号: \'")
print("反斜杠: \\")

防止转义的原始字符串

# 原始字符串
path = r"C:\Users\Name\Documents"  # r:不解析任何转义字符
print(path)  # C:\Users\Name\Documents# 对比普通字符串
normal_path = "C:\\Users\\Name\\Documents"  # 也是一种方式
print(normal_path)  # C:\Users\Name\Documents

Python列表

列表是Python中最灵活、最常用的数据结构。列表可以理解为动态数组,但功能要强大得多。

----------------------------------------------------分清轻重缓急-----------------------------------------------------------

http://www.dtcms.com/a/532269.html

相关文章:

  • 广东卫视你会怎么做网站化妆品网站的建设方案
  • WPF 静态样式与动态样式的定义及使用详解
  • 有没有专业做盐的网站手机wap网站程序
  • 【线程同步系列6】一个基于VC封装的多线程类CMyThread(类似QT中的QThread类的run方法)
  • python+vue旅游购票管理系统设计(源码+文档+调试+基础修改+答疑)
  • 宠物管理|宠物店管理|基于SSM+vue的宠物店管理系统(源码+数据库+文档)
  • 站内关键词自然排名优化制作图片的免费软件
  • Cline中模型识别任务与clinerules相关性的实现逻辑
  • Linux 进程面试考点:进程状态、通信方式、信号量等关键问题速记
  • 网站建设有哪些类型西昌网站建设公司
  • 风中有朵雨做的云网站观看美容网站开发
  • Java IO 流详解:字符流(Reader/Writer)与字符编码那些事
  • C++新特性—— 智能指针(shared_ptr/unique_ptr/weak_ptr)
  • OpenCV(十四):绘制直线
  • 支持支付宝登录的网站建设wordpress指定分类文章列表
  • Halcon卡尺 Measure_pos原理与实现(C++ 和Python版本,基于OpenCV)
  • 在线课程网站开发任务书邢台 网站建设
  • 专业做英文网站如何看出一个网站优化的是否好
  • PostgreSQL事务隔离级别详解
  • 从底层逻辑到实战落地:服务端与客户端负载均衡器的深度拆解
  • 笔试强训(十三)
  • 基于罗伊适应模型的产后抑郁家庭护理干预研究综述​
  • Bright Data 抓取浏览器API实战:助力高效完成定向大规模数据稳定采集
  • 合肥市做效果图的网站最适合新人的写作网站
  • 关于做视频网站的一些代码南京网站制作公司怎么样
  • 6分钟制作TikTok游戏领域热门短视频分析AI Agent
  • 自由通讯的魔法:Go从零实现UDP/P2P 聊天工具
  • Cortex-M3-STM32F1 开发:(十二)HAL 库开发 ➤ SysTick 系统滴答定时器
  • go-ethereum core之以太网虚拟机EVM
  • 自己怎么免费做网站网站开发 合同