Python基础语法学习

文章目录

  • 基础语法
    • 标识符
    • 注释
    • 行与缩进
    • 多行语句
    • 获取控制台输入
    • print输出
    • import 与 from...import
  • 基本数据类型
    • 布尔类型
    • 数字类型
    • 字符串
    • 列表(List)
    • 元组(Tuple)
    • 集合(Set)
    • 字典(Dictionary)
  • 数据类型转换
    • 隐式类型转换
    • 显式类型转换
  • 条件控制
    • if 语句
    • match...case
  • 循环语句
    • while
    • while循环使用else
    • for语句
    • for语句使用else
  • 函数
    • 参数
      • 必须参数
      • 关键字参数
      • 默认参数
      • 不定长参数

基于Python3

基础语法

标识符

  1. 第一个字符必须是英文字母或下划线_
  2. 标识符的其他的部分由字母、数字和下划线组成。
  3. 标识符对大小写敏感。

注释

Python中单行注释以#开头

# 第一个Python程序
print("Hello Python")  # 这里也是注释

多行注释可以用多个#号,还有三个英文单引号''' 或者三个英文双引号 """

# 第一行注释
# 第二行注释"""
第三行注释
第四行注释
"""'''
第五行注释
第六行注释
'''print("Hello Python")

行与缩进

Python使用缩进代表代码块,不需要使用大括号{}

同一个代码块的语句必须包含相同的缩进空格数

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

如果同一个代码块语句缩进空格数不一样,则会报错,如下所示:

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

报错提示如下

  File "D:\pycode\test\test1.py", line 7print("未成年")^
IndentationError: unindent does not match any outer indentation level

多行语句

如果一条语句太长,可以使用反斜杠 \ 来连接多行语句

a = "123"
b = "456"
c = "789"
d = a + \b + \c
print(d)

获取控制台输入

name = input("请输入姓名:")
print(name)

print输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""

如果不换行并且在后面加上某个表示符号,则使用end="标识符"

age = 18
name = "lzc"
# 换行打印到控制台
print(age)
print(name)
print("------")
# 不换行打印到控制台
print(age, end=",")
print(name, end="")

import 与 from…import

  1. import或者from...import来导入相应的模块。
  2. 将整个模块somemodule导入,格式为:import somemodule
  3. 从某个模块中导入某个函数,格式为:from somemodule import somefunction
  4. 从某个模块中导入多个函数,格式为:from somemodule import firstfunc, secondfunc, thirdfunc
  5. 将某个模块中的全部函数导入,格式为:from somemodule import *

基本数据类型

Python中的变量不需要指定类型。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

可以通过type()函数查看变量的类型

a, b, c = 123, 6.66, True
print(type(a), type(b), type(c))

输出内容如下

<class 'int'> <class 'float'> <class 'bool'>

Python3中常见的数据类型有:数字、字符串、布尔类型、列表、元组、集合、字典

布尔类型

布尔类型即TrueFalse

Python中,所有非零的数字和非空的字符串、列表、元组等数据类型都被视为True,只有0空字符串空列表空元组等被视为False

布尔类型可以用来控制程序的流程,比如判断某个条件是否成立,或者在某个条件满足时执行某段代码。

a = True
if a:print("a=True")
else:print("a=False")

布尔值可以用andornot运算

a = True
b = False
print(a and b)  # False
print(a or b)  # True
print(not a)  # False

布尔值类型转换

a = True
b = False
print(int(a))  # 1
print(float(b))  # 0.0
print(str(a))  # "True"

数字类型

Python3支持intfloatbool

Python3中,boolint的子类,TrueFalse可以和数字相加, True==1False==0 会返回 True

Python3里,只有一种整数类型int,表示为长整型,没有python2中的Long

字符串

Python中的字符串用单引号'或双引号"括起来,使用反斜杠\转义特殊字符。

a = "123"
b = '456'
c = "\\n789"
print(a)  # 输出 123
print(b)  # 输出 456
print(c)  # 输出 \n789

字符串的截取语法格式:变量[头下标:尾下标],遵循左闭右开原则。下标为负数则代表从尾部开始,比如下标为-1则代表最后一个元素。
使用len()函数可以获取字符串长度。

a = "123456789"
print(a)  # 输出整个字符串
print(a[0:-1])  # 输出第一个到倒数第二个的所有字符
print(a[0])  # 输出第一个字符
print(a[2:5])  # 输出第三个到第五个的所有字符
print(a[2:])  # 输出从第三个开始的所有字符
print(len(a))  # 输出字符串长度

加号+是字符串的连接符。星号*表示复制当前字符串,与之结合的数字为复制的次数。

a = "123456789"
print(a + "10")  # 连接字符串
print(a * 2)  # 输出字符串两次

使用innot in可以判断字符串是否包含给定的字符串

a = "123456789"
b = "456"
print(b in a)  # True
print(b not in a)  # False

Python中,字符串格式化使用与Csprintf函数一样的语法。

print("我叫%s,今年%d岁,浮点数保留两位小数:%.2f,指定整数位数(位数不够前面补0):%03d" % ("张三", 18, 3.1415926, 1))
# 我叫张三,今年18岁,浮点数保留两位小数:3.14,指定整数位数(位数不够前面补0):001

常见的占位符

占位符替换内容
%d整数
%f浮点数
%s字符串
%x十六进制整数

Python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

a = """姓名\t年龄
李华\t18
"""
print(a)

列表(List)

列表是写在方括号[]之间、用逗号分隔开的元素列表。

和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

列表的截取语法格式:变量[头下标:尾下标],遵循左闭右开原则。下标为负数则代表从尾部开始,比如下标为-1则代表最后一个元素。
使用len()函数可以获取列表长度。

a = ["111", "222", "333", "444", "555"]
print(a)  # 完整列表
print(a[0])  # 获取第一个元素
print(a[1:3])  # 获取第二个到第三个的所有元素
print(a[1:])  # 获取从第二个开始的所有元素
print(len(a))  # 获取列表长度

列表常用方法

a = ["111", "222", "333", "333"]
print(a)  # ['111', '222', '333', '333']# 在列表末尾添加新的对象
a.append("666")
print(a)  # ['111', '222', '333', '333', '666']# 删除第二个元素
del a[1]
print(a)  # ['111', '333', '333', '666']# 移除列表中某个值的第一个匹配项
a.remove("333")
print(a)# 判断元素是否存在于列表中
print("666" in a)  # True
print("777" in a)  # False

列表遍历

a = ["111", "222", "333", "333"]
for x in a:print(x)

元组(Tuple)

元组(Tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号()里,元素之间用逗号隔开。元组中的元素类型也可以不相同。

a = (123, "456", 123.12)
print(a)

集合(Set)

集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。集合使用大括号{}表示,元素之间用逗号,分隔。

a = {123, 456, 789, 123}
print("a =", a)  # 重复的元素会被自动去掉
b = {456, 666, 777}
print("a =", b)
print("a - b : a和b的差集 =", a - b)
print("a | b : a和b的并集 =", a | b)
print("a & b : a和b的交集 =", a & b)
print("a ^ b : a和b不同时存在的元素 =", a ^ b)

字典(Dictionary)

字典是一种映射类型,字典用{ }标识,它是一个无序的键(key):值(value)的集合。键(key)必须使用不可变类型。在同一个字典中,键(key)必须是唯一的。

a = {}
a["name"] = "张三"
a["age"] = 18
print(a)
b = {"city": "shenzhen"}
print(b)

输出内容如下

{'name': '张三', 'age': 18}
{'city': 'shenzhen'}

数据类型转换

对数据内置的类型进行转换,一般情况下你只需要将数据类型作为函数名即可。
数据类型转换可以分为两种:显式类型转换(需要使用类型函数来转换)、隐式类型转换(自动完成)

隐式类型转换

Python会自动将一种数据类型转换为另一种数据类型。
对两种不同类型的数据进行运算,较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据丢失。

num_int = 123
num_float = 1.23
num_new = num_int + num_float
print("datatype of num_int:", type(num_int))
print("datatype of num_float:", type(num_float))
print("value of num_new:", num_new)
print("datatype of num_new:", type(num_new))

输出如下

datatype of num_int: <class 'int'>
datatype of num_float: <class 'float'>
value of num_new: 124.23
datatype of num_new: <class 'float'>

显式类型转换

使用int()float()str()函数来执行显式类型转换

int()强制转换为整形

x = int(1)
y = int(2.8)
z = int("3")
print(x, type(x))
print(y, type(y))
print(z, type(z))

输出如下

1 <class 'int'>
2 <class 'int'>
3 <class 'int'>

float()强制转换成浮点类型

x = float(1)
y = float(2.8)
z = float("3")
w = float("4.2")
print(x, type(x))
print(y, type(y))
print(z, type(z))
print(w, type(w))

输出如下

1.0 <class 'float'>
2.8 <class 'float'>
3.0 <class 'float'>
4.2 <class 'float'>

str()强制转换成字符类型

x = str("s1")
y = str(2)
z = str(3.0)
print(x, type(x))
print(y, type(y))
print(z, type(z))

输出如下

s1 <class 'str'>
2 <class 'str'>
3.0 <class 'str'>

条件控制

条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。

条件控制中常用的操作运算符和逻辑运算符

操作符描述
<小于
<=小于或等于
>大于
>=大于或等于
==等于,比较两个值是否相等
!=不等于
and
or
not

if 语句

一般形式如下

if condition_1:statement_block_1
elif condition_2:statement_block_2
else:statement_block_3
score = 80
if score < 60:print("不及格")
elif score >= 60 and score < 80:  # 这里可以写成 60 <= score < 80print("良")
else:print("优秀")

match…case

Python 3.10 增加了match...case的条件判断

match subject:case <pattern_1>:<action_1>case <pattern_2>:<action_2>case <pattern_3>:<action_3>case _:<action_wildcard>

例如:

day = 1
match day:case 6:print("星期六")case 7:print("星期日")case _:  # 当其他 case 都无法匹配时,匹配这条print("工作日")

循环语句

while

num = 1
while num <= 10:print(num)num = num + 1

Python中没有do..while循环。

while循环使用else

如果while后面的条件语句为false时,则执行else的语句块。

num = 1
while num <= 5:print(num, "小于等于5")num = num + 1
else:print(num, "大于5")

for语句

for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串。

for <variable> in <sequence>:<statements>
else:<statements>

例如

list = ["aaa", "bbb","ccc","ddd"]
for x in list:print(x)

for语句使用else

for…else 语句用于在循环结束后执行一段代码

list = ["aaa", "bbb","ccc","ddd"]
for x in list:print(x)
else:print("循环介绍")

函数

使用def关键字定义函数

def 函数名(参数列表):函数体

使用函数计算两个数相加

def sum(a, b):return a + b
c = sum(10, 20)
print(c)

参数

必须参数

def hello(name):print("name:", name)hello()

不传参数会报错

Traceback (most recent call last):File "D:\pycode\test\test1.py", line 4, in <module>hello()
TypeError: hello() missing 1 required positional argument: 'name'

关键字参数

使用关键字参数允许函数调用时参数的顺序与声明时不一致

def hello(name, age):print("name:", name)print("age:", age)hello(age=18, name="xiaoli")

输出如下

name: xiaoli
age: 18

默认参数

调用函数时,如果没有传递参数,则会使用默认参数。

def hello(name, age = 20):print("name:", name)print("age:", age)hello(age=18, name="xiaoli")
print("-------------------")
hello("wangwu")

输出

name: xiaoli
age: 18
-------------------
name: wangwu
age: 20

不定长参数

加了星号*的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。

def hello(a, *b):print(a)print(b)hello(123, 456, 789)

输出

123
(456, 789)

加了两个星号**的参数会以字典的形式导入。

def hello(a, **b):print(a)print(b)hello(123, name="xiaoli", age="18")

输出

123
{'name': 'xiaoli', 'age': '18'}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html input 展示隐藏的密码

<!DOCTYPE html> <html> <meta http-equiv"Content-Type" content"text/html;charsetutf-8"/> <body><h2>登录表格</h2><form action"/action_page.php"><div class"container"><…

chrome查看浏览器内核日志

由于经常在网页上调试播放音视频&#xff0c;但是总遇到一些未知原因&#xff0c;导致无法正常播放&#xff0c;亟需查看浏览器内核日志&#xff0c;分析原因&#xff0c;做一下笔记。 (1) 查看浏览器快捷键属性 &#xff08;2&#xff09;在快捷键启动位置补充参数 --enable-…

菜鸡shader:L12 SD处理贴图制作时钟动画

文章目录 SD处理贴图Shader代码C#代码最后效果 SD处理贴图 呃呃感觉这节课&#xff0c;很大一部分都是在将怎么用SD来处理贴图&#xff0c;在这里就简单放一下课上的截图吧&#xff0c;我也跟着做了一下&#xff0c;虽然表盘十二个数排列间隔不一样&#xff0c;但还是稀碎地做…

脉冲频率、转速相关计算(信捷PLC C语言FC编程应用)

转速、线速度、角速度转换和计算关系请查看下面文章链接: 转速/线速度/角速度计算FC_RXXW_Dor的博客-CSDN博客里工业控制张力控制无处不在,也衍生出很多张力控制专用控制器,磁粉制动器等,本篇博客主要讨论PLC的张力控制相关应用和算法,关于绕线机的绕线算法,大家可以参看…

12.Netty源码之整体架构脉络

Netty 整体架构脉络 Netty 的逻辑处理架构为典型网络分层架构设计&#xff0c;共分为网络通信层、事件调度层、服务编排层&#xff0c;每一层各司其职。 网络通信层 网络通信层的职责是执行网络 I/O 的操作。它支持多种网络协议和 I/O 模型的连接操作。当网络数据读取到内核缓冲…

闲置旧手机搭建服务器?在安卓手机上使用Termux搭建web服务「公网远程访问」

文章目录 概述1.搭建apache2.安装cpolar内网穿透3.公网访问配置4.固定公网地址5.添加站点 概述 Termux是一个Android终端仿真应用程序&#xff0c;用于在 Android 手机上搭建一个完整的Linux 环境&#xff0c;能够实现Linux下的许多基本操作&#xff0c;不需要root权限Termux就…

docker系列5:docker安装nginx

传送门 前面介绍了docker的安装&#xff1a;docker系列1&#xff1a;docker安装 还有docker镜像加速器&#xff1a;docker系列2&#xff1a;阿里云镜像加速器 以及docker的基本操作&#xff1a; docker系列3&#xff1a;docker镜像基本命令 以及容器的基本命令&#xff1a;…

k8s服务发现之第五弹--使用 Service 连接到应用

Kubernetes 的网络模型 通过前面教程的学习&#xff0c;我们已经可以将容器化的应用程序在 Kubernetes 中运行起来&#xff0c;并且发布到 Kubernetes 内/外的网络上。 通常&#xff0c;Docker 使用一种 host-private 的联网方式&#xff0c;在此情况下&#xff0c;只有两个容…

Go学习 2、程序结构

2、程序结构 2.1 命名 一个名字必须以一个字母或下划线开头&#xff0c;后面可以跟任意数量的字母、数字或下划线。 大写字母和小写字母是不同的。 GO语言有25个关键字&#xff0c;关键字不能用于自定义名字。 还有大约30多个预定义名字&#xff0c;对应内建的常量、类型和函…

【iOS】多界面传值

文章目录 前言一、属性传值二、协议传值三、block传值四、KVO传值五、KVO的自动触发与手动触发六、通知传值总结 前言 在写网易云音乐以及3GShare包括后面的学生管理系统时&#xff0c;用到许多界面传值方法&#xff0c;特撰写博客记录目前学过的几种多界面传值方法 一、属性…

【Docker】Docker部署私有仓库的配置及应用

文章目录 一、Docker-registry 搭建本地私有仓库1. Registry 的概念2. Registry 的部署过程 二、Docker-harbor 搭建私有仓库1. 什么是Harbor2. Harbor 的特性3. Harbor的构成4. Harbor 的部署过程4.1 安装 harbor4.2 创建项目并进行上传下载4.3 上传镜像到私有仓库4.4 从私有仓…

Vue--插槽

一、插槽-默认插槽 1.作用 让组件内部的一些 结构 支持 自定义 2.需求 将需要多次显示的对话框,封装成一个组件 3.问题 组件的内容部分&#xff0c;不希望写死&#xff0c;希望能使用的时候自定义。怎么办 4.插槽的基本语法 组件内需要定制的结构部分&#xff0c;改用**…

mysql的主键选择

一.没有定义主键有什么问题 如果定义了主键&#xff0c;那么InnoDB会使用主键作为聚簇索引如果没有定义主键&#xff0c;那么会使用第一非空的唯一索引&#xff08;NOT NULL and UNIQUE INDEX&#xff09;作为聚簇索引如果既没有主键也找不到合适的非空索引&#xff0c;那么In…

【数据挖掘】时间序列的傅里叶变换:用numpy解释的快速卷积

一、说明 本篇告诉大家一个高级数学模型&#xff0c;即傅里叶模型的使用&#xff1b; 当今&#xff0c;傅里叶变换及其所有变体构成了我们现代世界的基础&#xff0c;为压缩、通信、图像处理等技术提供了动力。我们从根源上理解&#xff0c;从根本上应用&#xff0c;这是值得付…

STM32MP157驱动开发——按键驱动(线程化处理)

文章目录 “线程化处理”机制&#xff1a;内核函数线程化处理方式的按键驱动程序(stm32mp157)编程思路button_test.cgpio_key_drv.cMakefile修改设备树文件编译测试 “线程化处理”机制&#xff1a; 工作队列是在内核的线程的上下文中执行的 工作队列中有多个 work&#xff0…

Git远程仓库使用方法

目录 介绍 详细教程 1、创建远程仓库 2、在本地初始化仓库 3、关联远程仓库 4、提交代码 5、拉取到本地仓库 6、提交到Git仓库 5、将本地代码推送到远程仓库 介绍 远程仓库在协同开发中起着关键的作用&#xff0c;它提供了一个中央存储库&#xff0c;使多个开发者能够…

Hadoop中HDFS的架构

一、Switch语句 语法规则&#xff1a; ①语句中的变量类型可以是byte、short、int或者char;从javaSE5开始支持枚举类型&#xff1b; javaSE7开始&#xff0c;switch支持String。 ②没有break时&#xff0c;后续case的语句都会执行 二、修饰符 访问修饰符 Java中&#xff0c…

【C++】vector类的模拟实现(增删查改,拷贝构造,赋值运算,深浅拷贝)

文章目录 前言一、 整体1.命名空间:2构造函数&#xff1a;1普通构造2迭代器构造3初始化字符构造4拷贝构造&#xff1a; 3析构函数 二、成员函数实现1.大小1当前大小(size())2总体容量(capacity()) 2.返回头尾迭代器1begin&#xff08;&#xff09;2end&#xff08;&#xff09;…

小程序如何修改商品

​商家可能会遇到需要修改产品信息的情况。无论是价格调整、库存更新还是商品描述的修改&#xff0c;小程序提供了简便的方式来帮助你们完成这些操作。下面是一些简单的步骤和注意事项&#xff0c;帮助你们顺利地修改商品。 一、进入商品管理页面 在个人中心点击管理入口&…

面向对象编程:从抽象到直观的探索之旅

文章目录 1. 面向过程与面向对象2. 面向对象的思想3. 类与对象的关系4. 类中包含什么&#xff1f;5. 类与对象的关系结语 在编程的世界里&#xff0c;我们常常会遇到两种不同的编程思想&#xff1a;面向过程和面向对象。面向过程是一种直观且容易理解的编程方式&#xff0c;而面…