版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章Python程序设计基础content重点难点重点:1.Python的安装与配置环境2.Python包管理与第三方库导入3.Python基本输入/输出4.Python数据类型5.程序控制语句难点:1.Python数据类型2.程序控制语句Contents目录4.1Python开发环境搭建与使用4.2Python包管理与第三方库导4.3Python代码规范及帮助4.4Python基本输入/输出4.5常量和变量4.6Python数据类型4.7运算符与表达式4.8程序控制语句4.9Python程序举例4.1Python开发环境搭建与使用4.1.1Python语言特点1.Python语言简介
Python语言由吉多•范罗苏姆(GuidovanRossum)于1989年圣诞节期间开始设计,首个公开发行版Python0.9.0于1991年正式发布。2.Python语言特点(1)简单(2)易学、易读、易维护(3)免费、开源(4)可移植性(5)解释性(6)面向对象(7)可扩展性(8)可嵌入性(9)丰富的库(10)高级动态编程4.1.2Python的安装与配置环境1.安装Python下面以Windows系统为例演示Python标准安装流程:(1)登录官网下载安装程序(2)安装
(3)验证安装成功2.环境变量补配配置流程如下:(1)在“此电脑”图标处单击鼠标右键,在弹出的快捷菜单中选择“属性”菜单项。(2)在“计算机名、域和工作组设置”面板右侧单击“更改设置”选项,在“系统属性”对话框选择“高级”选项卡。(3)单击“环境变量”按钮,在“系统变量”区域双击“Path”变量。(4)在弹出的“编辑环境变量”对话框中单击“新建”按钮,依次添加Python的安装路径以及Scripts子文件夹路径,以Python实际安装路径为准。如果机器上安装了多个版本的Python,建议使用“上移”按钮,把最常用的版本所在路径放在Path变量的开始处,然后单击“确定”按钮即可。(5)配置验证。3.IDLE的启动IDLE(IntegratedDevelopmentandLearningEnvironment)是Python官方内置的轻量级IDE,主要服务于教学场景与小规模脚本调试。安装好python以后,IDLE就会自动安装,不需要另外安装,有交互式和脚本(文件)式两种执行方式。(1)交互式执行方式
安装Python后,可以通过交互式运行代码。单击“开始”->“所有程序”->“Python3.12”,->“IDLE(Python3.1264-bit)”菜单项,即可启动IDLE打开Shell窗口。
在提示符“>>>”后输入Python语句后,按回车键执行并显示结果,如果需要再次执行前面执行过的语句,可以按组合键Alt+P和Alt+N翻看上一条语句或下一条语句.(2)脚本式执行方式:
如果需要保存和反复修改、运行代码,可以通过脚本式执行方式运行代码,在IDLE窗口中单击菜单栏的“File”->“NewFile”菜单项,新建一个Python文件。在新建的窗口中,编写Python代码。
代码编写完成后,单击新建窗口菜单栏的“File”->“Save”菜单项,或使用快捷键Ctrl+S保存文件。
单击菜单栏的“Run”->“RunModule”菜单项,或使用快捷键“F5”来运行Python文件。4.1.3PyCharm的安装与使用1.PyCharm简介
PyCharm是JetBrains公司推出的专业PythonIDE(IntegratedDevelopmentEnvironment),提供全生命周期的开发,主要功能包括:(1)基础开发功能(2)调试分析工具(3)工程化管理(4)版本控制集成2.PyCharm下载与安装PyCharm下载与安装步骤如下:(1)访问JetBrains官方网站下载PyCharm集成开发环境安装包。PyCharm有两个版本:社区版(CommunityEdition),专业版(Professional)。(2)完成PyCharm安装包下载后,定位至安装文件保存目录,双击扩展名为.exe的安装程序文件启动安装进程。(3)按照安装向导指引逐步完成配置,包括选择安装路径、创建桌面快捷方式、配置环境变量等核心选项。安装路径不要选择有中文的目录,在“安装选项”对话框中勾选全部复选框。(4)单击“完成”按钮结束安装进程。3.PyCharm的使用
在使用PyCharm进行开发前,需确保系统已正确安装Python解释器并配置环境变量。
Python项目遵循标准层级结构:项目(Project)->包(Package)->模块(Module)的三级组织方式,实际代码逻辑通常存储在.py格式的模块文件中。(1)新建项目
单击“文件”->“新建项目”菜单项,进入项目创建界面。在“位置”字段设置项目存储路径,建议使用英文目录。确认配置信息后,单击“创建”按钮完成项目初始化。(2)新建包
在“项目名称”目录上单击鼠标右键,在弹出的快捷菜单中选择“新建”->“Python软件包”菜单项,在弹出的对话框中输入包名按回车键确认创建。(3)新建模块/文件
在目标Python包上单击鼠标右键,在弹出的快速菜单中选择“新建”->“Python文件”选项。在弹出的对话框“名称”处输入模块名称,按回车键确认创建。
4.2Python包管理与第三方库导入4.2.1Python包管理1.模块(Module)以.py为扩展名的独立代码文件,实现特定数据处理功能。2.包(Package)通过目录结构与__init__.py文件组织的模块集合,主要作用是解决命名冲突,实现模块化分层管理。3.库(Library)功能关联的包/模块集合,分为三类:(1)标准库(2)第三方库(3)自定义库4.2.2pip包管理工具
1.pip常用命令(1)安装最新版本语法格式:pipinstallpackage-name例如:pipinstallrequests(2)安装指定版本语法格式:pipinstallpackage-name==1.2.3(版本号)例如:pipinstallnumpy==2.2.3(3)升级库版本语法格式:pipinstall--upgradepackage-name例如:pipinstall--upgradepandas(4)卸载库语法格式:pipuninstallpackage-name例如:pipuninstallmatplotlib(5)查看已安装的包及版本语法格式:piplist2.安装第三方库示例下面以在Windows操作系统下安装NumPy的操作步骤为例,具体说明使用pip在线安装第三方库的方法。(1)打开Windows的“命令提示符”窗口。(2)执行安装命令:“pipinstallnumpy”,随后会显示安装过程信息,当出现“Successfullyinstalled…”提示时,代表安装成功。(3)安装验证:可以使用以下方式验证安装是否成功,进入Python交互环境(IDLE),在提示符后输入如右上所示代码4.2.3模块导入Python通过模块化架构实现代码复用,提供三种标准导入模块方式:方式1:import模块名[as别名]#导入标准库math>>>importmath
#使用math模块中的sqrt函数
>>>result=math.sqrt(16)
>>>print(result)
4.0
#导入标准库random,并设置别名为m>>>importrandom
asm
#使用别名调用函数获得[1,100]区间的一个随机整数>>>result=m.randint(1,100)
>>>print(result)#每次运行结果不同36
>>>importnumpyasnp>>>print(np._version_)2.2.3#输出版本号即成功方式2:from模块名import函数/类/变量名[as别名]#从math模块中导入sqrt函数>>>frommathimportsqrt#直接使用sqrt函数,无须像importmath时写math.sqrt>>>result=sqrt(9)>>>print(result)3.0#输出结果#从datetime模块中导入datetime类并起别名dt,datetime模块用于处理日期和时间>>>fromdatetimeimportdatetimeasdt>>>now=dt.now()>>>print(now)2025-04-1112:38:54.236840
#输出结果
方式3:from模块名import*实际开发中应谨慎使用。>>>frommathimport*
#从math模块导入所有内容#可直接使用pi(圆周率常量)和sin(正弦函数)等>>>print(pi)3.141592653589793
#输出结果>>>print(sin(pi/2))1.0#输出结果4.3Python代码规范及帮助4.3.1Python代码规范1.缩进在Python中,代码之间的逻辑关系是依靠代码块的缩进量来表示的,缩进结束就表示一个代码块结束。#正确的缩进x=9y=20if(x>y):
print('max=',x)else:
print('max=',y)2.注释Python代码注释规范主要有两种形式。(1)单行注释以“#”开始,表示本行#之后的内容为注释。是单行注释,常放在某语句后面,也可以单独成一行。(2)多行注释包含在一对三引号'''…'''或"""…"""之间且不属于任何语句的内容将被解释器认为是注释。#使用脚本式执行方式#三引号中间的内容为多行注释"""输出结果:012345"""foriinrange(5):
#循环输出数字0-5
print(i,end='')3.导入模块规则每个import语句只导入一个模块,尽量避免一次导入多个模块。4.必要的空格与空行在运算符两侧、函数参数之间、逗号两侧建议使用空格分开。5.尽量不要写过长的语句如果语句过长,可以考虑拆分成多个短一些的语句。如果一行语句确实太长,可以在行尾加上反斜杠“\”来换行分成多行,建议使用圆括号将多行内容括起。4.3.2使用帮助Python自带了大量关于库及函数的说明文档,可以使用help()函数来获取帮助信息。灵活使用帮助文档对学习Python语言至关重要。使用格式如下:help(对象)如果使用help查看内置函数和类型的帮助信息,可以在IDLE环境下输入以下命令,即可查看指定的内置函数的信息,例如:>>>help(max)
#获取max()函数的帮助信息如果需要查看模块中成员函数信息,可以先用import导入该模块,再用help查看其某个成员函数的信息,例如:>>>importos>>>help(os.fdopen)如果需要查看整个模块的信息,可以先用import导入该模块,再用help查看整个模块的帮助信息,例如:>>>importmath>>>help(math)4.4Python基本输入/输出4.4.1Python基本输出1.基本语法与用法格式为:print([输出项,…][,sep=分隔符][,end=结束符])>>>print('hello','world')helloworld
#输出结果为helloworld>>>print('hello','world',sep=',')hello,world
#输出结果为hello,worldprint('************')print('hello','world')print('************')#保存执行后的输出结果为:************helloworld************#如果结束符指定为空,则不输出换行符,例如:print('************',end='')print('hello','world',end='')print('************')#输出为:************helloworld************print("姓名","年龄","分数",sep="|",end="\n---\n")print("张三",20,85.5,sep="|")#输出结果为:#姓名|年龄|分数#---#张三|20|85.5#print函数支持同时输出多个内容,用逗号分隔,例如:>>>name="Alice">>>age=30>>>print("Mynameis",name,"andI'm",age,"yearsold")MynameisAliceandI'm30yearsold#输出结果2.格式化输出(1)格式化占位符输出(%操作符)用于对输出数据进行格式化,能在字符串中插入变量值,指定变量类型和输出格式,如指定小数点位数、输出宽度和填充字符等。在字符串中用%s(字符串)、%d(整数)、%f(浮点数)等占位符,后面参数提供实际值。>>>print("Number:%d,Pi:%f"%(100,3.14159))Number:100,Pi:3.141590
#输出结果>>>name="Bob">>>age=28
>>>print("Mynameis%sandI'm%dyearsold."%(name,age))
MynameisBobandI'm28yearsold.
#输出结果(2)格式化输出(str.format()方法)str.format()方法提供了较为灵活的格式化方式。支持位置参数(按顺序对应占位符)和关键字参数(通过指定关键字来对应占位符),还能指定填充字符、对齐方式、宽度、精度等格式化选项。适用于需要精细控制输出格式,或使用多个变量且可能重复使用的场景。>>>num=100>>>pi=3.1415926#{0}是位置参数占位符,对应format方法中第一个参数num#{1:.2f}也是位置参数占位符,其中:.2f
表示将对应参数(这里是pi)格式化为保留两位小数的浮点数>>>print("Number:{0},Pi:{1:.2f}".format(num,pi))Number:100,Pi:3.14
#输出结果#位置参数示例>>>print("Thenumberis{},andtheletteris{}".format(10,'a'))Thenumberis10,andtheletterisa
#输出结果
#关键字参数示例>>>print("Name:{name},Age:{age}".format(name="Bob",age=30))Name:Bob,Age:30#输出结果#指定宽度和填充字符,左对齐,宽度为10,用'-'填充>>>print("'{:-<10s}'".format("hello"))'hello-----'
#输出结果#指定精度,保留两位小数>>>price=9.999>>>print("Price:{:.2f}".format(price))Price:10.00#输出结果(3)格式化字符串常量输出(f-string)Python3.6引入,在字符串前加上f(或F),字符串中的大括号{}内可直接嵌入表达式,Python会自动计算表达式的值并插入到相应位置。这种方式简洁直观,且在处理变量和表达式时效率较高,支持复杂表达式,能让代码更易读和编写。>>>name="Alice">>>age=25>>>height=1.65#嵌入变量>>>print(f"Mynameis{name},andI'm{age}yearsold.")MynameisAlice,andI'm25yearsold.#输出结果#嵌入表达式>>>print(f"Theresultof3+5is{3+5}.")Theresultof3+5is8.#输出结果#格式化数值,保留两位小数>>>print(f"Myheightis{height:.2f}meters.")Myheightis1.65meters.#输出结果4.4.2Python基本输入input函数实现交互式输入,其一般格式为:变量=input("提示字符串:"),例如:user_input=input("请输入一些内容:") #获取用户输入print("你输入的内容是:",user_input) #输出用户输入的内容input函数返回值始终为字符串类型,如果需要其他类型的数据(如整数或浮点数),可以通过int()、float()等内置函数进行显式类型转换。#获取整数输入age=int(input("请输入你的年龄:"))
#获取浮点数输入height=float(input("请输入你的身高(米):"))print("你的年龄是:",age)print("你的身高是:",height)
4.5常量和变量4.5.1常量常量是在程序运行过程中其值不发生改变也不能改变的字面值常量,如123、12.34、“abcd”等都是字面值常量>>>PI=3.1415926>>>radius=5>>>area=PI*(radius**2)>>>print(f"半径为{radius}的圆面积为{area}")半径为5的圆面积为78.539815#输出结果4.5.2变量变量是在程序运行过程中其值可以发生变化的量。1.变量的名称Python中标识符的命名规则如下:(1)标识符的第一个字符是字母或下划线,不能是数字。(2)标识符由字母、数字和下划线组成。(3)大小写敏感,标识符区分大小写,如student_name和student_Name是两个不同的标识符。(4)标识符中不能包含空格、@、%以及$等特殊字符。(5)不建议使用系统内置的模块名、类型名或函数名以及已导入的模块名及其成员名作为标识符,这将会改变其类型和含义,可以通过“dir(__builtins__)”查看所有内置对象名称。(6)不能使用关键字。可以使用keyword模块打印关键字>>>importkeyword>>>print(keyword.kwlist)
#输出的当前版本的关键字['False','None','True','and','as','assert','async','await','break','class','continue','def','del','elif','else','except','finally','for','from','global','if','import','in','is','lambda','nonlocal','not','or','pass','raise','return','try','while','with','yield']Python是一种动态语言,关键字列表也可能会更改,可以利用keyword.iskeyword()函数判断标识符是否为关键字。>>>importkeyword>>>print(keyword.iskeyword('and'))True>>>print(keyword.iskeyword('And'))FalsePython标识符有一些命名的惯例,Python对标识符的长度没有严格限制,但建议标识符名称不要过长,以便于阅读和理解。虽然Python允许使用Unicode字符集中的任何字符来命名标识符(例如中文),但出于代码可读性和兼容性的考虑,建议使用ASCII字符集中的字符来命名标识符。类型命名约定示例变量/函数/方法蛇形命名法(snake_case)全小写,单词间用下划线分隔student_count常量全大写蛇形命名法(UPPER_SNAKE_CASE)MAX_CONNECTIONS类名驼峰命名法(CamelCase)首字母大写,无下划线DataParser3.变量的值Python是一种动态类型语言,不仅变量的值可以改变,变量的类型也可以改变,可以使用“typy(变量名)”获取变量的数据类型。#变量定义与赋值>>>x=10
#变量x为整型>>>y=3.14
#变量y为浮点型>>>name="Alice"#变量name为字符串型>>>is_valid=True#变量is_valid为布尔型#变量重新赋值>>>x=10
#变量x为整型,值为10>>>x=20
#变量x为整型,x的值从10变为20>>>type(x)
#内置函数type()用来查看变量的类型<class'int'>
#输出:变量x的类型为整型>>>x="Hello"
#变量x的类型从整数变为字符串>>>type(x)<class'str'>
#输出:变量x的类型为字符串2.变量的类型在Python语言中,不需要显式指定变量的类型,给变量赋值即指定了该变量的类型,变量的类型取决于变量值的数据类型。在Python中,采用动态类型系统,变量本质是对内存对象的引用标识。Python中,函数id()可以返回指定对象的地址,id()函数的返回值并不固定,但其返回值一定为整数。>>>a=256 #创建int对象256,变量a指向该对象>>>b=a #变量b与a共享同一对象引用>>>print(id(a)==id(b))True #输出True>>>a+=1 #创建新int对象257,a指向新对象>>>print(id(a)==id(b))False #输出False4.6Python数据类型4.6.1数字型Python常见的数字类型如下所示,其中可变性指对象创建后值是否可修改。类型名称描述示例可变性注意事项int整数42,
-100不可变小整数(-5~256)驻留优化float浮点数3.14,
-0.5e3不可变注意浮点精度问题,如
0.1+0.2!=0.3complex复数(实部
+虚部)1+2j,
3j不可变虚部后缀为
j
或
Jbool布尔值True,
False不可变继承自
int,True(1),
False(0)1.整型数(int)整型数据通常被称为整数,可以是正整数或负整数,不带小数点。2.浮点型(float)表示带小数点的数值,支持小数或科学计数法两种表示方式。由于精度的问题,浮点数运算可能会有一定的误差,应尽量避免在浮点数之间进行相等性测试,应该以二者之差的绝对值是否足够小来作为两个浮点数是否相等的依据。>>>a=10
#没有前缀表示十进制>>>b=0b1010
#前缀0b表示二进制>>>c=0o12
#前缀0o或0O表示八进制>>>d=0xA
#前缀0x表示十六进制>>>a=3.14
#小数形式表示>>>print(a)
#输出a的值为3.143.14>>>b=3.14e2
#科学计数法表示,相当于b=3.14*102>>>print(b)
#输出b的值为314.0314.0>>>a=0.1+0.2>>>b=0.3>>>tolerance=1e-9>>>is_equal=abs(a-b)<tolerance>>>print(is_equal)True#输出结果3.复数类型(complex)复数由实部(real)和虚部(imag)构成,在Python中,复数的虚部以j或J作为后缀,格式为:a+bj,其中a表示实部,b表示虚部。>>>b=2+4j>>>print(b,type(b))(2+4j)<class'complex'>>>>T=True>>>print(T+4)5>>>F=False>>>print(F-4)-44.布尔型(bool)在Python3中,bool是int的子类,只有True(表示真)和False(表示假)两种值,可以和数字相加,True(1)、False(0)。除直接给变量赋值True和False外,还可以用bool(X)来创建布尔型变量。>>>a="">>>b="hello">>>print(bool(a))False>>>print(bool(b))True1.字符串的创建Python中可以使用单引号、双引号、三单引号、三双引号作为定界符来表示字符串。当文本包含某类引号时,应选择不同类型的定界符,避免转义。三引号支持跨行定义且保留换行符>>>s1='Hello'
#使用单引号作为定界符>>>s2="Python"
#使用双引号作为定界符>>>print(s1,s2,sep='')HelloPython#正确示例>>>msg="It'saPythonstring"
#双引号包含单引号>>>html='<ahref="index.html">'
#单引号包含双引号#错误示例(需转义)>>>bad_str='It\'sastring'
#需转义单引号#多行文本>>>poem='''静夜思…床前明月光,…疑是地上霜。'''>>>print(poem)静夜思床前明月光,疑是地上霜。2.索引和切片获取字符串子串可以通过索引和切片操作获取字符串的子串。索引用于获取单个字符,切片用于获取由连续字符组成的子串。Python中索引位置从0开始,切片语法为:“变量[start:end:step]”,其规则是:包含起始索引start、不包含结束索引end、按step步长间隔取值,默认为1,可省略步长参数。>>>x='hellopython'>>>print(x)
#输出原始字符串hellopython>>>print(x[2:5])
#切片操作(索引2到5,但不包含5)llo>>>print(x[8])
#获取索引8的字符h3.字符串操作常见的内置方法Python还提供了一些方法支持对字符串的操作,常见的内置方法有:(1)capitalize():把句首的字母大写。(2)split():把句子分成单词。(3)find(x):找到给定词x在句中的索引,找不到返回-1。(4)replace(x,y):把句中x替换成y。(5)count():用于统计字符串或列表中某个元素出现的次数。>>>x='hellopython'>>>print(x.capitalize())Hellopython>>>x='hellopythonprogramming'>>>print(x.find('python'))6>>>print(x.find('world'))-1>>>x='hellopythonprogramming'>>>print(x.replace('programming','language'))hellopythonlanguage>>>s='helloworld'>>>print(s.count('l'))3转义字符描述\\反斜杠符号\'单引号\"双引号\n换行符\t水平制表符\r回车符\b退格(Backspace)\f换页符\v垂直制表符\a响铃(ASCIIBEL字符)\ooo八进制值表示的字符(如\123表示字符S)\xhh十六进制值表示的字符(如\x41表示字符A)\(行尾)续行符(用于代码换行时保持语法连续)>>>print('\101\n\x42\nC')ABC>>>print("续行符示例:这是一个非常长的字符串,\可以换行书写。")续行符示例:这是一个非常长的字符串,可以换行书写。4.Python的转义字符需要使用特殊字符时,可以用反斜杠(\)转义字符,Python的转义字符如下表所示。5.Python字符串运算符Python字符串的常用运算符如下表所示。运算符描述+字符串连接*重复输出字符串[]通过索引获取字符串中的字符[:]提取字符串的子序列in成员运算符,如果字符串中包含给定的字符则返回Truenotin成员运算符,如果字符串中不包含给定的字符则返回True>>>a='Hello'>>>b='World'>>>print(a+b)HelloWorld>>>print(a*2)
HelloHello>>>print(a[2])l>>>print(a[0:3])Hel>>>print('H'ina)True>>>print('H'notina)False注意:(1)字符串不可变性:所有运算符操作均生成新字符串,原字符串不变。(2)类型匹配:+和*要求操作数类型正确,如str+int会报错。(3)大小写敏感:比较运算符区分大小写,如"A"!="a"。(4)Unicode码点:字符比较基于Unicode值,如'A'(65)<'a'(97)。类型名称描述示例可变性注意事项list有序序列[1,"a"],
[]可变支持动态扩展/收缩tuple有序序列(1,"a"),
(3.14,)不可变单元素元组需加逗号(如
(x,))dict无序键值对集合{'a':1},
dict(x=1)可变键必须是可哈希对象set无序唯一元素的集合{1,2},
set()可变元素必须是可哈希对象4.6.3列表、元组、字典、集合列表(list)、元组(tuple)、字典(dict)、集合(set)是Python中常用的数据类型,很多复杂的业务逻辑最终由这些基本数据类型来实现,下表比较了它们之间的区别,有关这些数据类型的详细使用请参考第5章相关内容。1.列表(list)列表是Python中最基本的数据结构,用于存储一系列有序的项目。列表中的项目可以是不同类型的数据。使用英文方括号[]作为定界符,元素之间用逗号分隔。创建列表后,可以随时增删或修改里面的内容,列表里的元素可以是数字、字符串、布尔值,甚至其他列表,用数字索引(从0开始)获取元素,支持正数和负数索引。>>>numbers=[10,20,30,40]
#创建列表对象>>>print(numbers[0])
#输出10(第一个元素)10>>>print(numbers[-1])
#输出40(最后一个元素)402.元组(tuple)元组与列表类似,但元组是不可变的,意味着一旦创建,其内容不能被修改。元组通常用于存储固定不变的数据集合。用圆括号()定义,元素之间用逗号分隔。如果只有一个元素,需要加逗号如(5,),支持不同类型,元组可以包含数字、字符串、列表等任意类型,和列表一样,用数字索引,从0开始获取元素。>>>x_tuple=(4,5,6)
#创建元组对象>>>print(x_tuple[2])
#使用下标访问元组中指定位置的元素63.字典(dict)字典是一种存储键值对的数据结构,用花括号{}定义,每个元素由“键:值”组成,键和值之间用冒号分隔。键必须是不可变类型,如字符串、数字、元组,值可以是任意类型。可以通过键快速访问值,键不可重复,值可重复,如果键重复,后面的值会覆盖前面的值,可以随时添加或删除键值对。>>>x_dict={'A':65,'B':66,'C':67}
#创建字典对象>>>print(x_dict['A'])
#字典对象的下标是“键”654.集合(set)集合是一个无序的、不包含重复元素的数据结构。使用花括号“{}”作为定界符,集合会自动去重,且支持数学上的集合运算(如交集、并集)。元素没有固定顺序,不支持索引访问。空集合只能用set()方法定义,不能直接使用“{}”定义。集合的元素必须不可变,不能包含列表或字典,但可以包含元组。>>>x_set={7,8,9}
#创建集合对象>>>print(7inx_set)
#成员测试True#自动去重>>>names={"小明","小红","小明"}>>>print(names)
{'小明','小红'}
#输出{"小明","小红"}4.7运算符与表达式运算符功能说明例子+算术加法,列表、元组、字符串合并与连接,正号3+6=9-算术减法,集合差集,相反数6-2=4*算术乘法,序列重复2*3=6/除法6/2=3.0%模运算符或求余运算符7%2=1**幂运算2**2=4//整除,其结果是将商的小数点后的数舍去7//2=3,7.0//2.0=3.04.7.1运算符1.算术运算符Python语言的算术运算符如下表所示。(1)“+”运算符“+”运算符除了用于算术加法和表示正号以外,还可以用于列表、元组、字符串的连接。>>>[1,2,3]+[4,5,6]
#连接两个列表
[1,2,3,4,5,6]>>>
(1,2,3)+(4,5)
#连接两个元组
(1,2,3,4,5)>>>'hello'+'python'
#连接两个字符串'hellopython'但不支持不同类型对象之间相加或连接。例如:>>>'A'+2
#抛出异常,不支持不同类型对象相加>>>{1,2,3,4,5}-{2,3,5}
#集合的差集运算{1,4}(3)“*”运算符“*”运算符除了表示算术乘法,还可以用于列表、元组、字符串这几个类型的对象与整数的乘法,表示序列元素的重复,生成新的列表、元组或字符串。>>>
(1,2,3)*2
#元组与整数相乘,得到新元组(1,2,3,1,2,3)>>>'hello'*2
#字符串与整数相乘,得到新的字符串'hellohello'(2)“-”运算符“-”运算符除了用于算术减法和相反数以外,还可以用于集合的差集运算。>>>-11//3-42.比较运算符比较运算符也称关系运算符,用于对两变量或表达式的结果进行比较,若结果为真,则返回True,若结果为假,则返回False。常用的关系运算符如下表所示。运算符功能说明例子结果==等于3==4False!=不等于3!=4True>大于3>4False<小于3<4True>=大于等于3>=4False<=小于等于3<=4True(4)“//”运算符:“//”运算符有“向下取整”的特点。3.逻辑运算符逻辑运算符主要用于某些条件判断。and是逻辑与运算符,二元运算符,and两端的条件均为真时,结果才为真。or是逻辑或运算符,二元运算符,or两端的条件只要有一个条件为真,结果即为真。not是逻辑非运算符,一元运算符,not后的条件为真,结果为假,not后的条件为假,结果为真。运算符功能说明例子结果and逻辑与TrueandTrueTrueor逻辑或TrueorFalseTruenot逻辑非notTrueFalsePython中,将非0的数值、非空的数据类型等价于True,0或空类型等价为False。Python逻辑运算符遵循短路求值(Short-CircuitEvaluation)机制:(1)and返回第一个使表达式为假的值,若全为真则返回最后一个值,如10and0返回0(2)or返回第一个使表达式为真的值,若全为假则返回最后一个值,如10or0返回10(3)not 始终返回布尔值(True/False),如not5返回False>>>print(bool(-10))
#True(非零数值)True>>>print(bool(""))
#True(非空字符串,空格也视为非空)True>>>print(bool([]))
#False(空列表)False>>>print(bool({}))
#False(空字典)False>>>print(2or3or1)
#返回第一个真值22>>>print(0and"data")
#返回第一个假值004.赋值运算符Python中,使用“=”进行赋值,一般格式为:variable=expression。#将表达式的3.14159*2*2计算结果赋值为变量area>>>area=3.14159*2*2
>>>5=x
#错误,常量不可作为左值>>>len("test")=3
#错误,函数调用结果不可修改>>>x+2=10
#错误,表达式不可作为左值Python允许“=”与其他算术运符组合成复合赋值运算符,Python主要的赋值运算符如下表所示。假设c=10,a=2。运算符功能说明例子结果=直接赋值运算符c=ac的值为2+=加法赋值运算符c+=a相当于c=c+a,c的值为12-=减法赋值运算符c-=a相当于c=c-a,c的值为8*=乘法赋值运算符c*=a相当于c=c*a,c的值为20/=除法赋值运算符c/=a相当于c=c/a,c的值为5.0%=取模赋值运算符c%=a相当于c=c%a,c的值为0**=幂赋值运算符c**=a相当于c=c**a,c的值为100//=整除赋值运算符c//=a相当于c=c//a,c的值为55.位运算符位运算符是对操作数按其二进制形式逐位进行运算,主要作用于整数类型(int),布尔值(bool)作为int子类也可参与运算(True=1,False=0),但运算结果为int类型。运算符名称运算规则说明&按位与二进制数1&1=1,1&0=0,0&1=0,0&0=0|按位或二进制数1|1=1,1|0=1,0|1=1,0|0=0^按位异或二进制数1^1=0,1^0=1,0^1=1,0^0=0~按位取反二进制数
~1=0,~0=1<<左移高位溢出丢弃,低位补0,左移
n位等价于数学运算
a*(2**n)>>右移低位溢出丢弃,高位补符号位(算术右移),右移
n
位等价于数学运算:a//(2**n)>>>print(5<<2)
#5*4=20->0b101->
0b10100->20
20>>>print(-3<<3)
#-3*8=-24->补码运算后结果为-24(符号位保留)-24>>>print(16>>2)
#16/4=4→0b10000→0b100→4
4>>>print(-8>>1)
#-8/2=-4→补码运算后结果为-4(符号位保留)-46.成员运算符成员运算符用于判断指定序列中是否包含某个值,即测试一个对象是否为另一个对象的元素,成员运算符如下表所示。运算符功能说明示例运算结果in如果在指定序列中找到值,则返回True,否则返回False5in[1,2,3,4]Falsenotin如果在指定序列中找到值,则返回False,否则返回True5notin[1,2,3,4]True7.标识运算符标识运算符用于比较两个对象的内存地址,返回值为布尔型。标识运算符如下所示。运算符示例功能说明isxisy如果变量x和变量y指向相同的对象,则返回True,否则为Falseisnotxisnoty如果变量x和变量y指向不同的对象,则返回True,否则为False“xisz”其实等同于“id(x)==id(z)”,如果引用的是同一个对象,则返回True,否则返回False。>>>x=20>>>y=30>>>z=20>>>print(xisz)True>>>print(xisnoty)True>>>print(yisz)False8.常见运算符的优先级当一个表达式中出现多种不同的运算符时,先执行具有较高优先级的运算,然后执行较低优先级的运算。Python常见运算符优先级从高到低如下表所示。运算符优先级()括号显式控制优先级**幂运算(右结合,如
2**3**2=2^(3^2)=512)+x,-x,~x一元正负、按位取反*,/,//,%乘、除、整除、取模+,-加、减<<,>>位移运算&按位与^按位异或|按位或<,<=,>,>=,!=,==比较运算符not逻辑非and逻辑与or逻辑或#优先级综合示例>>>result=5
+5*2**3//4#运算顺序分解:#1.2**3=8#2.5*8=40#3.40//4=10#4.5+10=15>>>print(result)
#输出1515#括号强制改变优先级>>>value=(3+5)*(2**3)>>>print(value)
64
注意:(1)建议使用()显式定义优先级以避免歧义。(2)幂运算符“**”是唯一右结合的核心运算符。(3)比较运算符链式写法具有特殊逻辑。#链式比较等价于and连接>>>print(1<2<3)
#
等价于1<2and2<3True4.7.2表达式表达式是使用运算符将变量、常量及函数等运算对象按照一定的规则连接起来的式子,表达式经过运算得到一个确定的值。input_year=int(input("请输入一个年份:"))if(input_year%4==0andinput_year%100!=0)or(input_year%400==0):
print(f"{input_year}是闰年")else:
print(f"{input_year}不是闰年")程序运行结果如下:请输入一个年份:20242024是闰年4.8程序控制语句4.8.1分支结构1.单分支if语句单分支if语句的格式如下:if<条件表达式>:代码块注意:代码块要采用缩进格式,不要遗漏条件表达式后面的“冒号”。【例4-1】输入一个整数,判断它是否是三位数。思路:根据三位数的区间范围[100,999],比较输入数字与100和999之间的大小关系。num=int(input("请输入一个整数:"))ifnum>=100andnum<=999:
print(f"{num}是三位数")2.双分支if语句双分支if语句的格式if<条件表达式>:代码块1else:代码块2注意:代码块要采用缩进格式,不要遗漏条件表达式和else后面的“冒号”。【例4-2】
输入一个整数,判断它是奇数还是偶数。思路:根据余数判断该数是奇数还是偶数,如果这个数能被2整除(余数为0)则是偶数,否则是奇数。num=int(input("输入一个数字:"))if(num%2)==0:
print(f"{num}是偶数")else:
print(f"{num}是奇数")【例4-3】输入2个数,找出较大者。思路:比较变量a和b的大小,如果a小于b则最大值为b,否则最大值为a。a=float(input("请输入实数a:"))b=float(input("请输入实数b:"))ifa<b:max=belse:max=aprint(f"a、b中较大值为:{max}")3.多分支if语句当判断条件为多个值时,可以使用多分支if语句,其语法结构如下:if条件表达式1:代码块1……elif条件表达式2:代码块2…………elif条件表达式n:代码块n……[else:
代码块n+1……]说明:(1)“表达式”可以是关系表达式、逻辑表达式,也可以是各种类型的数据。对于数值型数据,非0为True,0为False。对于字符串或者集合类数据,空字符串和空集合为False,其余为True。(2)elif是“elseif”的缩写,elif子句可以有1~n个。表达式else后面冒号(:)不能省略,关键字if、elif、else缩进相同。(3)代码块1、代码块2、…、代码块N+1必须有相同的缩进。(4)else分支可以省略。【例4-4】编程计算一元二次方程ax2+bx+c=0的根。思路:计算d=b2-4ac。如果d>0,有两个不同实根x=−b±d2a;如果d=0,有一个实根x=−b2a;如果d<0,无实根。importmatha=float(input("请输入一元二次方程的系数a:"))b=float(input("请输入一元二次方程的系数b:"))c=float(input("请输入一元二次方程的系数c:"))d=b*b-4*a*cifd>0:
x1=(-b+math.sqrt(d))/(2*a)
x2=(-b-math.sqrt(d))/(2*a)
print(f"方程有两个不同实根:{x1}、{x2}")elifd==0:
x=-b/(2*a)
print(f"方程有一个实根:{x}")else:print("方程无实根")4.if语句嵌套这3种if语句可以互相嵌套,使用时要注意嵌套if语句的缩进和对齐。常见的if语句的嵌套形式有在单分支的if语句中嵌套双分支if语句,或在双分支if语句中嵌套双分支if语句结构,如下图所示。【例4-5】输入3个数,找出最大值。思路:先比较前两个数的大小,根据比较结果再与第3个数比较,然后确定最大值,本例采用if语句的嵌套结构。a=int(input("请输入实数a:"))b=int(input("请输入实数b:"))c=int(input("请输入实数c:"))if(a>=b):
if(a>=c):
mx=a
else:
mx=celse:
if(b>=c):
mx=b
else:
mx=cprint("最大值为:",mx)4.8.2循环结构1.for循环for循环语句的基本格式:for循环变量in遍历结构:代码块注意:代码块要采用缩进格式,不要遗漏遍历结构后的“冒号”。遍历结构可以是字符串、range()函数、组合类型数据或文件等,本节先介绍字符串、range()函数作为遍历结构。(1)字符串作为遍历结构【例4-6】统计字符串中小写字母的个数。思路:使用for循环遍历字符串,使用islower()函数判断字母是否是小写字母。count=0forletterin'Python':
#遍历字符串
print("当前字母:",letter)
ifletter.islower():
count=count+1print(f"共有小写字母{count}个")程序的输出结果为:当前字母:P当前字母:y当前字母:t当前字母:h当前字母:o当前字母:n共有小写字母5个(2)range()函数作为遍历结构range()函数可以通过3种方式产生遍历序列。range(n):可产生序列:0,1,2,3,⋯⋯,𝑛−1range(m,n):可产生序列:𝑚,𝑚+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店管理业酒店经理及面试题解读
- 京东产品经理面试技巧与答案
- 工程服饰合同范本
- 市场营销合同范本
- 小工厂劳动协议书
- 广告店与位协议书
- 店铺招聘合同范本
- 废弃物收购协议书
- 建房子协议书样本
- 挪威渔业协议书
- (新教材)部编人教版三年级上册语文 第25课 手术台就是阵地 教学课件
- 2026天津农商银行校园招聘考试历年真题汇编附答案解析
- 2025重庆市环卫集团有限公司招聘27人笔试历年参考题库附带答案详解
- 钻井安全操作规程
- 精密减速机行业发展现状及趋势预测报告2026-2032
- 中小学《信息技术》考试试题及答案
- 2025及未来5年挂钟机芯项目投资价值分析报告
- IPO融资分析师融资报告模板
- 搏击裁判员培训课件
- 2024年北京广播电视台招聘真题
- 危险废物安全措施课件
评论
0/150
提交评论