python个人学习笔记_第1页
python个人学习笔记_第2页
python个人学习笔记_第3页
python个人学习笔记_第4页
python个人学习笔记_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录

一、软件安装与环境设置.........................................................1

二、从print。开始................................................................5

三、变量与数据类型.............................................................7

四、流程控制(IF语句)........................................................12

五、流程控制(WHILE语句)...................................................16

六、流程控制(FOR语句)......................................................17

七、数据结构(列表list)..............................................................................................................22

八、数据结构(元组tuple、字典diet、集合set).................................................................26

九、函数.......................................................................33

一、软件安装与环境设置

软件支持pythonhttps:〃www.pvthon.orp/downloads/

编辑器pycharmhttps:〃/pvcharm/download/

学习语法时使用IDLE(建议多用),实战项目时使用pycharm(每次进入环境设置慢,运行

较慢)。

Python环境设置难点在于path环境变量设置,如在安装时没有勾选相应选项,可在计算机

高级系统设置中完成:

其中,PATH值为:(视安装时设置目录不同有所区别)

C:\Users\czj\AppData\Local\Programs\Python\Python37\Scripts\;C:\Users\czj\AppData\Local\Pr

ograms\Python\Python37\;%PyCharmCommunityEdition%

Pycharm安装完成后要添加编译器:

SSettings

而I

Project:pystudy>ProjectInterpreter®Forcurrentproject

Appearance&BehaviorProjectInterpreter芦Python3.7

Appearance

tjs

MenusandToolbars

oPackageVersionLatestversion

t

>SystemSettings

AAutomat0.8.00.8.0

・FileColors

Django3.0.33.0.3

ScopesProtego0.1.160.1.16

NotificationsPyDispatcher2.0.52.0.5

QuickListsPyHamcrest2.0.02.0.0

PathVariablesPyMySQL0.9.30.9.3

KeymapScrapy1.8.01.8.0

>EditorTwisted19.10.019.10.0

Pluginsasgiref3.2.33.2.3

>VersionControlattrs19.3.019.3.0

e

n7Project:pystudy—cffi1.13.2▲1.14.0

p

MProjectInterpreterconstantly15.1.015.1.0

S

MProjectStructurecryptography2.82.8

.:sBuild,Execution,Deploymentcssselect1.1.01.1.0

£

helloword0.0.10.0.1

-c>Debugger

>o

ePythonDebuggerhyperlink19.0.019.0.0

u-

z:idna2.82.8

★BuildoutSupport

>Consoleincremental17.5.017.5.0

Jbanl___

Coverage

|hOK|CancelApply

在python运行中,会有很多标准库和模块支持,减少工作量和提高工作效率。第三方模块

需利用pip命令安装或卸载。Pip命令运行在CMD环境下,通过不同开关和命令组合达到查

看、安装、升级和卸载模块的功能。

piplist列出已安装模块

pipinstall安装模块包(远程或本地)

pipuninstall卸载已安装模块包

(XIC:\Windows\system32\cmd.exe|=||

C:\Users\czj>pipuninstallbeautifulsoup4

Foundexistinginstallation:beautifulsoup^l4.8.2

Uninstallingbeautifulsoup4~4.8.2:

Idouldremoue:

c:\users\czj\appdata\local\programs\python\python37\lib\site-packages\beauti

fulsoupH-4.8.2.dist-info\x

c:\users\czj\appdata\local\programs\python\python37\lib\site-packages\bs4\*

Proceed(y/n)?y

Successfullyuninstalledbeautifulsoup4-4.8.2

C:\Users\czj>

piplist-o查询可升级包

pipinstall-upgrade升级模块包

SC:\Windows\system32\cmd.exe|d||即£

MicrosoftWindows[版本6.1.7601]

版权所有(c)2009MicrosoftCorporation。保留所有权利。

C:\Users\czj>piplist-o

PackageUersionLatestType

cffi1.13.21.14.0wheel

C:\Users\czj>pipinstall--upgradecffi

Installingcollectedpackages:cffi

Attemptinguninstall:cffi

Foundexistinginstallation:cffi1.13.2

Uninstallingcffi-1.13.2:

Successfullyuninstalledcffi-1.13.2

Successfullyinstalledcffi-1.14.0

C:\Users\czj>

二、从print。开始

输出单行字符串

>>>print("helloworld")

helloworld

输出多行字符串(\n为换行符)

>>>print("howdo\nyoudo?n)

howdo

youdo?

也可以:

>>>x="'howdo

youdo?'"

>>>print(x)

howdo

youdo?

输出重复字符

>>>print('*"*30)

******************************

如果用文件运行,则先编辑保存文件再运行(\t为分隔符)(IDLE下编写):

printC*,*30)

print("O\t^加学生信息”)

运行结果为:

******************************

0添加学生信息

用文件运行,输出完整菜单(pycharm下编写):

~test.py

[1print("*"*30)

print("1\士添加学生信息”)

print("2\t修改学生信息")

print("3\七查询学生信息”)

print("e\t退出")

command=input("请选择相应项目序号:”)

运行结果:

Run:芦.test

之C:\Users\czj\AppData\Local\Programs

■1添加学生信息

-2修改学生信息

K23查询学生信息

丑。退出

”请选择相应项目序号:

计算

>>>print(l+l)

2

输出键盘输入内容(利用input())

>>>x=input("请输入一"字:')

请输入一个数字:9

>>>print(x)

9

格式化输出

print。格式化输出形式一:)

print("我叫%s,年龄%d,性别%s"%('jacky',30,'male'))

printf*,*19)

print('格式化输出形式二:’)

print("我叫{},年龄{},性别{}".format('jacky',30,'male'))

运行结果

格式化输出形式一:

我叫jacky,年龄30,性别male

*******************

格式化输出形式二:

我叫jacky,年龄30,性别male

三、变量与数据类型

变量命名避免与关键字重名,利用“=”赋值("==”是比较运算符)

>>>a=0

>>>b=l

>>>print(a+b)

1

>>>print(A+B)

Traceback(mostrecentcalllast):

File"<pyshell#7>"fline1,in<module>

print(A+B)

NameError:name'A'isnotdefined

从上面的操作可以看出,python区分大小写。

多个变量同时赋值:

>>>a,b=0,l

>>>print(a+b)

1

不支持缺省赋值。不管用哪种方法赋值,每个变量都应该有它对应的值:

>>>a,b=l

Traceback(mostrecentcalllast):

File"<pyshell#4>",linelfin<module>

arb=l

TypeError:cannotunpacknon-iterableintobject

>>>arb,c=l,l

Traceback(mostrecentcalllast):

File"<pyshell#3>",line1,in<module>

a,brc=l,l

ValueError:notenoughvaluestounpack(expected3,got2)

如果多个变量值相同,赋值时可以:

>>>a=b=c=l

>>>print(a+b+c)

3

下面的例子中,利用列表给变量赋值。第二行代码的错误在于列表的序号应该从。开始而最

大序号应为2:

>>>lista=[l,2,3]

>>>a,b,c=lista[l]Jista[2]Jista[3]

Traceback(mostrecentcalllast):

File"<pyshell#8>"rline1,in<module>

a,b,c=lista[l],lista[2]Jista[3]

IndexError:listindexoutofrange

>>>a,b,c=lista[0],lista[l]Jista[2]

>>>print(a+b+c)

6

赋值时定义变量的数据类型

>>>a=l

>>>b=1.0

>>>c="l"

>>>type(a)

<class'int'>

>>>type(b)

<class'float'>

>>>type(c)

<class'str'>

数据类型之间相互转换

>>>float(a)

1.0

>>>int(b)

1

>>>int(c)

1

>>>str(b)

'1.0'

运算符使用:

>>>x=100

>>>y=200

>>>print(x+y)

300

>>>print(x>y)

False

>>>print(x<y)

True

>>>print(xandy)

200

>>>print(x>0andy<500)

True

>>>print(x>0andy>500)

False

>>>print(id(x))

8791264099696

字符串操作

1、连接

>>>x="123"

>>>y="456"

>>>x+y

,123456,

>>>x="123"

>>>y="456'

>>>z="a"+x+y

>>>z

,al23456,

2、重复

>>>print(x*5)

123123123123123

3、大小写转换

>>>print(str.upper(z))

A123456

>>>print(str.lower(z))

al23456

字符串转换处理的其他情况:

str.islower()检查字符串是否全是小写,返回布尔值

str.isupper()检查字符串是否全是大写,返回布尔值

str.capitalize()把字符串的第一个字符大写

str.title()返回标题化的字符串(所有单词首字母大写,其余小写)

str.swapcase()翻换字符串的大小写

>>>a="happynewyear"

>>>print(str.capitalize(a))

Happynewyear

>>>print(str.title(a))

H叩pyNewYear

>>>print(str.swapcase(a))

HAPPYNEWYEAR

进阶问题如果a=〃it,sfine〃,即字符串中带有引号。怎么处理?

程序分析用split分割后,分开转换处理,然后再连接。

处理如下:

>>>a="happynewyear"

>>>print(str.capitalize(a))

Happynewyear

>>>print(str.title(a))

HappyNewYear

>>>print(str.swapcase(a))

HAPPYNEWYEAR

>>>a="it'sfine"字符串带引号

>>>print(str.title(a))

It'SFine效果不理想

>>>lista=a.split(…)切片,列表赋值

>>>print(lista)

['it','sfine1]

>>>print(str.title(lista[O]))

It

>>>print(str.title(listarnn

SFines应该用小写

>>>listb=lista[l].split('")把底⑴切片,分开处理

>>>print(listb[O]+"\t"+listb[l])

sfine

>>>print(str.title(listb[l]))

Fine

>>>print(str.title(listaron+B"+li«throi+ctr.title(listb[l]))

It'sFine单词间用空格分开

>>>print(str.title(listc*rnn+"'"+licthrni+""+str.title(listb[l]))

It'sFine最后处理结果

4、去空格

>>>x=n123"

>>>x

'123'

>>>print(str.strip(x))

123

str.strip()去掉字符两边的空格和回车换行符

str.lstrip()去掉字符左边的空格和回车换行符

str.rstrip()去掉字符右边的空格和回车换行符

5、拆分字符串,拆分结果为列表,可切片调用:

>>>x='l23"

>>>print(x.split(''))

['1','2','3']

>>>lista=x.split('')

>>>print(lista[O])

1

Split。如果后面带上第二个参数,则表示分隔成多少个元素。注:。表示1个,即n+1个。

>>>print(x.split('',1))

['1",'23'1

技能实训

Ch02test(p40).py

在这个实训中,先把每个字符串赋予一个变量,遵循去空格一一换字符一一小写这样的处理

顺序。多利用输出语句查看运行结果以确定运行情况,精确找出程序编写过程中的错误。在

变量赋值时,如果只有一个数据类型,可用一个字母加数字赋值;如果存在多种数据类型,

可以分开命名变量:字符串型可用a、b、c、d赋值,数值可以用x、y赋值。

格式化输出

1、浮点数设置格式

>>>printC%5.2f%x)

123.46

>>>print('%5.6f,%x)

123.456000

%5.2f指:长度为5,小数位为2

2、不同数制之间的转换

>>>x=100

>>>bin(x)

'ObllOOlOO'Ob代表二进制

>>>hex(x)

'0x64'Ox代表十六进制

>>>oct(x)

,0ol44'Oo代表八进制

十进制数100等于二进制数1100100十六进制数64八进制数144

3、字符串格式化输出

>>>print('helloworld')

helloworld

>>>print('%20s'%'hpllnworlds

helloworld长度20,右对齐,不足部分空格补足。

>>>print('%-20s'%'HAIIOworlds

helloworld长度20,左对齐,不足部分空格补足。

>>>print('%.2s'%'helloworld1)

he取2个字符

用.format格式化输出

>>>print('{0}{lJ'.formatChello'/world'))#带数字编号

helloworld

>>>print('{}{},.format(,hello7world,))#不带字段

helloworld

>>>print('{0}{l},.formatChello';world'))#带数字编号

helloworld

>>>print('{l}{0},.formatChello';world,))#带数字编号

worldhello

>>>print('{0}{1}{l},.formatChello';world'))#带数字编号

helloworldworld

>>>print("Mynameis%sandweightis%dkg!"%('Zara',21))用%定义

MynameisZaraandweightis21kg!

四、流程控制(IF语句)

1、最简单的选择结构:

>>>sale=6000

>>>ifsale<5000:

print。业绩过低”)

else:

print,你真棒”)

你真棒

多语句编写时,建议采用IDE文件环境而不采用IDLE交互环境。Python中的缩进要求非常

严格,必须严格对齐。编写时应注意,同时要注意中英文字符的区别。如果出现错误提示,

检查缩写缩进是否规范、字符书写是否规范:

晶test.py-F:/pystudy/test.py(3.7.6)

FileEditFormatRunOptionsWindowHelp

sale=5000

ifsale<5000:

print,业绩过低”)

else:

print。你真棒")

2、表达式如果涉及数值比较,转换成相同数据类型

错误写法:

sale=input("请输入业绩数值:,)

ifsale<5000:

print,业绩过低”)

else:

print("你真棒")

运行时出现错误提示:

请输入业绩数值:4000

Traceback(mostrecentcalllast):

File"F:/pystudy/test.py",line2,in<module>

ifsale<5000:

TypeError:'<'notsupportedbetweeninstancesof'str'and'int'

即:input。接受键盘输入的数据为str类型,而5000为int类型,不能比较。

正确写法:

sale=int(input(情输入业绩数值:'))

ifsale<5000:

print,业绩过低”)

else:

print,你真棒”)

If语句三目运算:

语法:为真时的结果if判断条件else为假时的结果

例:x=x+1ifx%2==lelsex

说明:当x除以2的余数为1时,x的值为x+1;如果余数不为1,则返回值为X。

完整语句:

x=int(input(精输入一个整数:"))

x=x+1ifx%2==lelsex

print(x)

运行结果:

请输入f整数:3

4

>>>

=======================RESTART:F:/pystudy/自学记S/test.py==============

请输入f整数:4

4

3、三个以上多分支

课本47页例子:

sale=6000

ifsale<=5000:

print。无提成”)

elifsale<=10000:

printC•最高提成10%”)

elifsale<=50000:

print("最高提成20%”)

else:

printC1最高提成30%")

输出结果:

最高提成10%

涉及多分支时,请注意比较运算符。统一比较运算符。

4、if语句嵌套

题目利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之

间的用B表示,60分以下的用C表示。

程序分析用条件判断即可。

编写如下:

points=int(input('输入^(:1))

itpoints<60:

grade='C

elifpoints<90:

grade="B'

else:

grade='A'

print(grade)

进阶要求在B段分Bl和B2,Bl:60-74,B2:75-89o

采用if语句分段嵌套:

points=int(input(输入分数:1))

ifpoints<60:

grade='C

else:

ifpoints<75:

grade='Bl'

else:

ipoints<90:

grade="B2"

else:

grade='A"

print(grade)

编写时也可能采用if...elif...else...结构。

技能实训

Ch03test(p50).py

参考教材49页代码,采用if语句内外嵌套。首先,定义月份、舱位和机票原价三个变量;

第一层判断:出行月份是旺季或淡季;第二层判断:舱位是头等舱或经济舱;最后输出标杆

折扣价。

<11。11m$=时(即仇("请选择您出行的月份1~12:"))

seat=int(inputC1请您选择舱位?头等舱请输入1,经济舱请输入2:”))

moneys=int(input("请输入机票原价:"))

itmonths>=4andmonths<=10:

print。出行月份为旺季”)

ifseat==l:

printC1您选择的是头等舱”)

print,机票折扣为9折”)

print("您的机票价格为:"+str(moneys*0.9))

print(moneys*0.9)

else:

printC■您选择的是经济舱”)

print,机票折扣为斯”)

printC■您的机票价格为:'+str(moneys*0.6))

else:

print。出行月份为淡季”)

ifseat==l:

print,您选择的是头等舱”)

print。机票折扣为5折”)

print,您的机票价格为:"+str(moneys*0.5))

else:

print,您选择的是经济舱”)

print。机票折扣为韦斤”)

print("您的机票价格为:"+str(moneys*0.4))

进阶提问请问最后输出的机票价格是什么数据类型?

五、流程控制(WHILE语句)

While语句的关键在于条件表达式,如果条件表达式为Flase(即条件不成立),语句会跳过

循环体。如果条件一开始就不成立,循环体会一次也不执行。

1至10数值之和:

count=0

i=l

whilei<=10:

count=count+i

i=i+l

print("count="+str(count))

i=i+l不能省略,否则会出现死循环。count=conut+i也可以写成count+=io

count=0

i=l

whilei<=10:

count+=i

i=i+l

print(Bcount=B+str(count))

教材52页例子

sum=0

count=0

i=l

whilei<=100:

ifi%2!=0:

sum+=i

count+=l

i+=l

print("avg="+str(sum/count))

有两个问题:1、原则上不用关键字作变量名,所以最好不用sum;2、按以上编写程序运行

后结果应为:avg=50.0,因为进行除法运算sum/count时,得出的结果应为浮点数。如果

一定要按页显示,最后输出语句应为:修改后语

52printCavg='+str(int(sum/count)))o

句为:

num=O

count=0

i=l

whilei<=100:

ifi%2!=0:

num+=i

count+=l

i+=l

print("avg="+str(int(num/count)))

六、流程控制(FOR语句)

for语句遍历数据集合,所以通常使用inrange()。range()是python中产生一个数的集合

工具,基本结构为range(start,stop,step),即产生从start数开始,以step为步长,至stop

数结束的数字集合,其中包含start数但不包含stop数,start可以省略,默认为0,step

也可,默认值为1。

输出字符串字符:

forletterin'Python':#分行打印字符串中的字母

print('当前字母letter)

输出1至10数值之和:

count=0

foriinrange(l,ll):

count+=i

print(count)

语句中不设增量语句i=i+l,因为range。函数默认步长为1。

输出1到10中奇数之和(与上例比较,其实就是步长改为2):

count=0

foriinrange(lrllf2):

count+=i

print(count)

进阶提问

用户登录问题:

1、输入用户名和密码;

2、判断用户名和密码是否正确?(正确输入为:name='admin',passwd='gclcmxy')

3、登录仅有三次机会,不超过3次重新输入,超过3次则报错。

foriinrange(3):

name=input('用户名:')

passwd=input('密码:')

ifname=='admin'andpasswd=='gdcmxy':

print。登录成功)

break

else:

print('登录失败’)

print('您还剩余%d次机会'%(2-i))

printC登录次数超过三次,请核对后登录,)

上述语句中变量i从0开始,到3结束,即分别为0、1、2三次运行过程。所以在剩余机会

次数中用了2-i而不能用34。

多重循环(教材55页示例9)

end="y"

whileend=="y'orend=="Y":

print("输入销售人员:”,end="”)

name=input。#录入销售人员姓名

sum=0

foriinrange(l,4):

print("请输入第"+str(i)+”个月的销售金额:.)

score=input。#录入霜售金额

sum+=int(score)

avg=sum/3#计算平均销售金额

print(name+”的月平均销售金额是:"+str(avg))

print,继续输入吗(y/n)?")

end=input。#录入位

print,销售金额录入结束”)

Print。输出后默认换行,而加入end=""代表不自动换行。

Break和continue的使用:

foriinrange(l,100):

ifi%4==0:

continue

print(i)

ifi==50:

break

print,艮至到50")

print("程序结束”)

输出1-100的数字,如遇到4倍数不输出。在数列中原设定为100,但在上述语句中设置了

if语句判断是否已经到50,如果条件成立则退出循环。在python中还有pass语句,作用是

暂时没啥想法,空操作,留下位置将来编写。

技能实训I(教材59页)

最初思路:

Max=0

Min=0

x=int(inputs请输入一个整数:"))

whilex!=0:

ifx==0:

Max=x

Min=x

elifx>Max:

Max=x

elifx<Min:

Min=x

x=int(input,请输入另一个整数:"))

print。最大值是:最小值是:;Min)

输出运行结果不正确。Max值结果正确而Min最小值无法改变。

请输入一个整数:4

请输入另一个整数:9

请输入另一个整数:6

请输入另一个整数:0

最大值是:9最小值是:0

请输入一个整数:3

请输入另一个整数:2

请输入另一个整数:5

请输入另一个整数:7

请输入另一个整数:4

请输入另一个整数:0

最大值是:7最小值是:0

调整一下:

Max=0

Min=0

x=int(input(精输入一个整数:"))

whilex!=0:

ifMax==O:

Max=x

Min=x

elifx>Max:

Max=x

elifx<Min:

Min=x

x=int(input(精输入另一个整数:"))

print。最大值是:\Max/\f/最小值是:\Min)

运行结果正确:

请输入一个整数:8

请输入另一个整数:5

请输入另一个整数:9

请输入另一个整数:3

请输入另一个整数:5

请输入另一个整数:1

请输入另一个整数:0

最大值是:9最小值是:1

调整为教材要求的输出结果,也可以在while循环体中判断x是否为0:

Max=0

Min=0

whileTrue:

X=int(input。请输入一个整数:"))

ifx==0:

break

ifMax==0:

Max二x

Min=x

elifx>Max:

Max=x

elifx<Min:

Min=x

print。最大值是:",Max/\t\-最小值是:\Min)

个人编写习惯问题。前面编写时思路主要是根据教材59页提供的分析思路,编成语句,结

果无法实现。所以有时我们所表述和理解的与机器所理解和执行的是不一致的。

作业(教材60页)

1、显示英文星期名称

whileTrue:

num=int(inputC1输入一整数1~7:"))

ifnum==O:

break

elifnum==l:

printCMON")

elifnum==2:

printCTUE”)

elifnum==3:

printCWED')

elifnum==4:

printCTHU*)

elifnum==5:

print('FRI")

elifnum==6:

print("SAT")

elifnum==7:

print("SUN")

else:

print("输入错误,请重新输入")

print,程序结束”)

运行结果:

输入一个整数1~7:1

MON

输入一个整数1~7:2

TUE

输入一个整数1~7:3

WED

输入一个整数7:4

THU

输入一个整数1~7:5

FRI

输入一个整数1~7:6

SAT

输入一个整数1~7:7

SUN

输入一个整数1~7:8

输入错误,请重新输入

输入一个整数1~7:0

程序结束

2、斐波那契数列

num=int(input("输入一整数:"))

x=0

y=0

foriinrange(l,num+l):

ifi==1:

x=0

y=i

else:

n=y

y=x+y

x=n

print(y,end="\t")

数列range。开始值默认为0,如果不设开始值会多出一个0;数列range。不包含结束值,所

以要+1。运行结果:

输入一个整数:8

01123581321

===================RESTART:F:\pystudy\自学记录\ch03zy2(p60).py===

输入一个整数:8

1123581321

3、整数反转

s=input。输入一串整数:")

string=""

num=len(s)-l

foriinrange(len(s)):

string+二s[num-i]

print(string)

上面的例子利用了for循环。利用字符串列表切片更简单高效:

s=input。输入一串整数:")

print(s[::-l])

七、数据结构(列表list)

>>>s=[1000,5200,4700,3860,1200,8500]赋值

>>>s[0]定位

1000

>>>S.appendCSOOQ")增加(在list原有元素后增加一个新元素:字符串“3000”)

>>>s

[1000,5200,4700,3860,1200,8500,'3000']

>>>dels[-l]删除

>>>s

[1000,5200,4700,3860,1200,8500]

>>>s.append(3000)增加(在list原有元素后增加一个新元素:整型数3000)

>>>s

[1000,5200,4700,3860,1200,8500,3000]

>>>s[l]=2000新元素(整型数2000)作为list的第二个元素,替换原有元素5200。

>>>s

[1000,2000,4700,3860,1200,8500,3000]

List的操作主要有赋值、定位、增加、删除、更新、插入。

在list的索引号1位置中插入新数据,原有的元素依次后移:

>>>s

[1000,2000,4700,3860,1200,8500,3000]

>>>sJnsert(l,4500)

>>>s

[1000,4500,2000,4700,3860,1200,8500,3000]

回到我们前面的一个例子(整数反转):

>>>s="123456-

>>>s[::-l]

,654321,

把字符串看成一个列表。用法:列表名[n:m:步长]得到从n(包含)到m(不包含)的元

素,得到的是原列表的拷贝。如果n为最大索引号,m为0,步长带负号,列表倒数(取不

到第一个元素)。忽略n默认从0开始,同时忽略m默认到结尾。

>>>s[::]

,123456,

>>>s[0:len(s)]

,123456,

>>>s[0:len(s):-l]

(I

第一个语句把list所有元素输入;第二个语句同理,用求字符串长度len⑸代替m;当n、m

不省略时,用负数作为步长时list为空。

隔位取元素

>>>s[0:len(s):2]

'135'

教材66页示例5:

s=[10000f5200f4700,3860r1200f8500]

forindexinrange(len(s)):

ifs[index]<5000:

s[index]=5000

print。索引为%d的员工月薪小500(T%(index))

print。修改后的列表:')

print(s)

通过for循环遍历列表,找出小于5000的元素并替换为5000o

二维列表(列表之中包含列表)

s=『ar,”王保华■,10000],[匕2/李伟新”,5200],[匕3/张强”,4700],

[匕24","张明”,3860],[匕5",”陈香”,1200],[匕6”,“李牧”,8500]]

forxins:

foryinx:

print(y,end="\t")

print("\n")

print("-"*30)

列表的排序

设li=[3,2,6,5,1,8],通过sorted进行排序从低到高显示,可写成sorted(li);如果是从高到低

排序,可写成sorted(li,reverse=True)。使用sorted函数并不会对列表存储产生影响。

技能实训

1、杨辉三角

a=[l]

print(a)#打印第1行

#其他7层用循环嵌套

foriinrange(7):#第一©OS环:环

newline=[]#保存新的列表,第二循环时更新为空

forxinrange(len(a)+1):#第二层循环:列表长度循环

ifx==0:#如果是第1个元素,值为1

newline.append(l)

elifx==len(a):#如果是最后1个元素,值为1

newline.append(l)

else:

#列表中的数的值等于它上方两数之和

newline.append(a[x]+a[x-1])

a=newline#更新数列

print(a)

运行结果:

[1]

[1,1]

[1,2,1]

[1,3,3,1]

[1,4,6,4,1]

[1,5,10,10,5,1]

[1,6,15,20,15,6,1]

[1,7,21,35,35,21,7,1]

2、冒泡排序

a=[]

foriinrange(6):

num=input。请输入第%d个整数:”%(i+l))

a.append(int(num))#6个整数形成~个数列

print("6个整数输入后形成的数列:”)

print(a)

forxinrange(l,len(a)):

foryinrange(x,0,-l):

ifa[y]<a[y-1]:#比较前后元素,如果前一个元素较大,前后元素互换

temp=a[y-1]

a[y-1]=a[y]

a[y]=temp

print("通过冒泡排序处理后的数列:,)

print(a)

运行结果:

请输入第1个整数:8

请输入第2个整数:4

请输入第3个整数:1

请输入第4个整数:8

请输入第5个整数:9

请输入第6个整数:3

6个整数输入后形成的数列:

[8,4,1,8,9,3]

通过冒泡排序处理后的数列:

[1,3,4,8,8,9]

二维列表(列表中包含另一个列表)

lista=[[1,2,3],[4,5,6],[7,8,9]]

print('lista列表元素有:’)

print(lista)

print('其中lista列表第二个元素是:’)

print(lista[1])

printClist[1]的数据类型是:)

print(type(lista[1]))

print('lista[1]列表第三个元素是:,)

print(lista[1][2])

运行结果

lista列表元素有:

[[1,2,3],[4,5,6],[7,8,9]]

其中lista列表第二个元素是:

[4,5,6]

的数据类型是:

<class'list'>

lista[1]列表第三个元素是:

6

二维列表的操作

对二维列表中元素的操作可参考列表操作

如:在中增加一个元素后,lista[1]和lista同时改变。

[4,5,6,9]

[[1,2,3],[4,5,6,9],[7,8,9]]

八、数据结构(元组tuple、字典diet、集合set)

列表赋值形式:列表名=[value]

元组赋值形式:元组名=(value)

元组和列表的区别在于:列表元素可以更改而元组元素不能更改。

>>>a=[l,2,3]

>>>a

[1,2,3]

>>>a[l]=4

>>>a

[1,4,3]

>>>b=(1,2,3)

>>>b[l]=4

Traceback(mostrecentcalllast):

File"<pyshell#5>",line1,in<module>

b[l]=4

TypeError:'tuple'objectdoesnotsupportitemassignment

上述例子中,a为列表,可以更改;b为元组,不能更改。

如果要改动元组元素,可以与列表进行转换。list。把元组转换成列表,tuple。把列表转换成

元组。

>>>b=list(b)

>>>b

[1,2,3]

>>>b[l]=4

>>>b

[1,4,3]

>>>a=tuple(a)

>>>a

(1,4,3)

>>>a[l]=2

Traceback(mostrecentcalllast):

File"<pyshell#12>",line1,in<module>

a[l]=2

TypeError:'tuple'objectdoesnotsupportitemassignment

上述例子中,原来的元组b转换成列表,所以可以更改;相反,原来的列表a转换成元组,

里面的元素不可更改。

当列表中储存大量数据时,获取数据相当耗时。如果列表中某一部分数据具有唯一性,可以

以它作为索引快速获取数据。这时,可以用字典diet来保存数据。

字典赋值形式:

字典名={key:value}

>>>d={'al*:[l,2,3]/a2,:[4,5,6]}

>>>d

{'al':[1,2,3],'a2':[4,5,6]}

字典元素访问:

>>>print(d["a2"])

[4,5,6]

利用索引可以进行字典元素的增加、删除和更改。由于字典以索引形式查找数据,所以在字

典中不存在序号的概念,也不没有插入操作了:

>>>d=ral,:[l,Z3],"a2":[4,5,6]}

>>>d

{'al':[1,2,3],'a2':[4,5,6]}

>>>d['a3']=[6,8,9]

>>>d

{'al':[1,2,3],'a2':[4,5,6],'a3':[6,8,9])

>>>d['a4']=[0,0,0]

>>>d

{'al':[1,2,3],'a2':[4,5,6],'a3':[6,8,9],'a4':[0,0,0]}

>>>deld["a3']

>>>d

{"al':[1,2,3],'a2':[4,5,6],'a4':[0,0,0])

>>>d["a4"]=[l,l,l]

>>>d

('al':[1,2,3],'a2':[4,5,6],'a4':[1,1,1])

进阶问题如果我们新增一个键值为“a3”、数据为[6,6,6]的元素,那么,它是放在什么地方?

集合与列表的区别:集合是无序的,数据也是唯一的。如果在集合中添加已有数据,则集合

只保留一个。

集合赋值形式:

1、空集合:集合名=set()

2、非空集合:集合名={元素}

>>>a=setO

>>>a.add("鱼百肉丝”)

>>>print(a)

{‘鱼香肉丝’}

>>>a.add(We蛋")

>>>a

{‘煎鸡蛋','鱼香肉丝’}

>>>a.add("羊肉煲”)

>>>a.add("羊肉煲”)

>>>a

{,羊肉煲丁煎鸡蛋丁鱼香肉丝,}

>>>a.add("官保鸡丁")

>>>a

f羊肉煲丁煎鸡蛋丁官保鸡丁丁鱼香肉丝?

上述例子中重复输入“羊肉煲”,但显示时只有一个,可见集合有排重功能。

集合运算

1、并I

2、交&

>>>a={1,2,3}

>>>b={2,5,6}

>>>c=a|b

>>>c

(1,2,3,5,6)

>>>d=a&b

>>>d

{2}

技能实训(教材77页《桃天》)

string=(为此夭夭,灼灼其华。之子于归,宜其室家。\n”

为叱夭夭,有黄其实。之子于归,宜其家室。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论