之前有位粉丝说我写的东西像复制粘贴的,自己一看还真是像,以后会尽量改正。 练习题 练习58:以特殊方式跟管理员打招呼创建一个至少包含5个用户名的列表,且 其中一个用户名为admin。想象你要编写代码,在每位用户登录网站后都打印一条文字 好消息。遍历用户名列表,并向每位用户打印一条问候消息。如果用户名为admin,就打印一条特殊的问候消息,如下所示。Helloadmin,wouldyouliketoseeastatusreport?否则,打印一条普通的问候消息,如下所示。HelloJaden,thankyouforlogginginagain。 步骤 创建一个至少包含5个用户名的列表,且其中一个用户名为admin 这个要求是简单的创建列表,列表中包含’admin’的元素。 usernames〔admin,wangwei,lijie,xufeng,jaden〕 想象你要编写代码,在每位用户登录网站后都打印一条文字好消息。想象你要编写代码,在每位用户登录网站后都打印一条文字好消息。遍历用户名列表,并向每位用户打印一条问候消息。如果用户名为admin,就打印一条特殊的问候消息,如下所示。Helloadmin,wouldyouliketoseeastatusreport?否则,打印一条普通的问候消息,如下所示。HelloJaden,thankyouforlogginginagain。 这个就是if语句的简单用法: 以特殊方式跟管理员打招呼 创建一个至少包含5个用户名的列表,且其中一个用户名为admin。 usernames〔admin,wangwei,lijie,xufeng,jaden〕 forusernameinusernames:遍历用户列表 ifusernameadmin:判断用户是否为admin print(fHello{username},wouldyouliketoseeastatusreport) else: print(fHello{username。title()},thankyouforlogginginagain。) 以后写代码会加上注释慢慢养成习惯,并规范他 练习59:处理没有用户的情形在为完成练习58编写的程序中,添加一条if语 句,检查用户名列表是否为空。如果为空,就打印如下消息。Weneedtofindsomeusers! 删除列表中的所有用户名,确定将打印正确的消息 usernames〔〕 ifusernames:判断是否列表为空 forusernameinusernames:遍历用户列表 ifusernameadmin:判断用户是否为admin print(fHello{username},wouldyouliketoseeastatusreport) else: print(fHello{username。title()},thankyouforlogginginagain。) else: print(Weneedtofindsomeusers!) 这里是在遍历for语句前加个if语句判断usernames列表是否有元素,是执行for语句,不是输出Weneedtofindsomeusers! 练习510:检查用户名按下面的说明编写一个程序,模拟网站如何确保每位用户 每个用户名都独一无二。 创建一个至少包含5个用户名的列表,并将其命名为currentusers。 再创建一个包含5用户名的列表,将其命名为newusers,并确保其中有一两 用户名也包含在列表currentusers中。 遍历列表newusers,对于其中的每个用户名,都检查它是否已被使用。如果是, 就打印一条消息,指出需要输入别的用户名;否则,打印一条消息,指出这个 用户名未被使用。 确保比较时不区分大小写。换句话说,如果用户名John已被使用,应拒绝用 户名JOHN。(为此,需要创建列表currentusers的副本,其中包含当前所有 用户名的小写版本。) 本题前三问都很简单重点是第四问创建列表currentusers的副本存放currentusers的小写版本: 创建一个空的列表 currentuserslower〔〕 把currentusers列表中的元素转化成小写在存入新列表currentuserlower中 foruserincurrentusers: currentuserslower。append(user。lower()) 再从newusers列表中遍历每个元素,转化成小写后再与列表currentuserslower中的元素比较 foruserinnewusers: ifuser。lower()incurrentuserslower: print(f{user}hasbeenused。Youneedtoenteranotherusername:) else: print(f{user},Hasnotbeenused。) 练习511:序数序数表示位置,如1st和2nd。序数大多以th结尾,只有1、2 和3例外。 在一个列表中存储数字19。 遍历这个列表。 在循环中使用一个ifelifelse结构,以打印每个数字对应的序数。输出内容 应为1st2nd3rd4th5th6th7th8th9th,但每个序数都独占一行。 ordinalslist(range(1,10)) print(ordinals) fornumberinordinals: ifnumber1: print(f{number}st) elifnumber2: print(f{number}nd) elifnumber3: print(f{number}rd) else: print(f{number}th) If语句学习就到这里下面是字典的内容 字典示例 什么是字典 字典就是一系列键值对 alien0{color:green,points:5} alien0表示字典的名称 是为字典赋值 Python中,字典用放在花括号{}中的一系列键值对表示 什么是键值对 {color:green,points:5} 其中‘color’是键:后的‘green‘是值,不同的键值对有逗号隔开 键值是两个相关联的值。指定键时,Python将返回与之相关联的值。和值之间用冒号分隔,而键值对之间用逗号分隔。在字典中,想存储多少个键值对都可以。 访问字典中的值 我们知道了什么是字典,哪如何使用字典,首先访问字典中的值, alien0〔points〕 ’points‘就是要访问的键python会返回这个键对应的值。 添加键值对 之后就是对字典就行修改了,字典是一个动态的,可随时更改 在字典中添加键值对 alien0〔xposition〕0 字典alien0中创建新的键’xposition‘复制为0 修改字典中的值 添加之后就是修改字典中的值 修改字典中的值就是对字典中的已有键重新赋值 alien0〔color〕yellow 删除键值对 对于字中不再需要的信息,可使用del语句将相应的键值对彻底删除。使用del语句时, 必须指定字典名和要删除的键。 delalien0〔yposition〕 由类似对象组成的字典 字典可以是由一个对象的多种信息组成也可以是,多个对象的同种信息组成。 favoritelanguages{ jen:Python, sarah:C, edward:ruby, phil:Java } 举例中字典的键是不同的人,值是编程语言 使用get()来访问值 alien0。get(point,Nopointvalueassigned。) get()中的第一个参数是字典的中的键,第二个参数是指定键不存在的时候返回的值 get()的功能是取字典中的一个键如果存在就返回其值,如果不存在就返回第二个参数 练习61:人使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。该字典应包含键firstname、lastname、age和city。将存储在该字典中的每项信息都打印出来。 创建包含4个键值对的字典personmessage personmessages{ firstname:bill, lastname:gates, age:60, city:seattle } print(personmessages〔firstname〕) print(personmessages〔lastname〕) print(personmessages〔age〕) print(personmessages〔city〕) 练习62:喜欢的数使用一个字典来存储一些人喜欢的数。请想出5个人的名字, 并将这些名字用作字典中的键;找出每个人喜欢的一个数,并将这些数作为值存储在字 典中。打印每个人的名字和喜欢的数。为了让这个程序更有趣,通过询问朋友确保数据 是真实的。 favoritenumbers{} billgates:5, elonmusk:10, stevejobs:15, jeffbezos:20, larryellison:25 favoritenumbers〔billgates〕5 favoritenumbers〔elonmusk〕10 favoritenumbers〔stevejobs〕15 favoritenumbers〔jeffbezos〕20 favoritenumbers〔larryellison〕25 valuefavoritenumbers〔billgates〕 print(fBillGatesfavoritenumberis{value}。) valuefavoritenumbers〔elonmusk〕 print(fElonMuskfavoritenumberis{value}。) valuefavoritenumbers〔stevejobs〕 print(fSteveJobsfavoritenumberis{value}。) valuefavoritenumbers〔jeffbezos〕 print(fJeffBezosfavoritenumberis{value}。) valuefavoritenumbers〔larryellison〕 print(fLarryEllisonfavoritenumberis{value}。) 练习63:词汇表Python字典可用于模拟现实生活中的字典。为避免混淆,我们 将后者称为词汇表。 想出你在前面学过的5个编程术语,将其用作词汇表中的键,并将它们的含义 作为值存储在词汇表中。 以整洁的方式打印每个术语及其含义。为此,可先打印术语,在它后面加上一 个冒号,再打印其含义;也可在一行打印术语,再使用换行符()插入一个 空行,然后在下一行以缩进的方式打印其含义。 glossaryes{ string:字符串, comment:注释, dictionary:字典, list:表, loop:循环, } wordstring print(f{word。title()}:{glossaryes〔word〕}) wordcomment print(f{word。title()}:{glossaryes〔word〕}) worddictionary print(f{word。title()}:{glossaryes〔word〕}) wordlist print(f{word。title()}:{glossaryes〔word〕}) wordloop print(f{word。title()}:{glossaryes〔word〕}) 遍历所有键值对 fork,vinuser0。items() 遍历2个变量一个k是用来存储键,v用来存储值的 。items()方法 字典items()以列表返回可遍历的(键,值)的元组数组 friends〔phil,sarah〕 fornameinfavoritelanguages。keys(): print(fHi{name。title()}。) ifnameinfriends: languagefavoritelanguages〔name〕 print(f{name。title()},Iseeyoulove{language}。) iferinnotinfavoritelanguages。keys(): print(Erin,pleasetakeourpoll!) Favoritelanguages。keys()把字典favoritelanguages中的键来组成一个列 Favoritelanguages。values()把字典favoritelanguages中的值来组成一个列 练习64:词汇表2现在你知道了如何遍历字典,可以整理为完成练习63而编写 的代码,将其中的一系列函数调用print()替换为一个遍历字典中键和值的循环。确定 该循环正确无误后,再在词汇表中添加5个Python术语。当你再次运行这个程序时, 这些新术语及其含义将自动包含在输出中。 glossaryes{ string:字符串, comment:注释, dictionary:字典, list:表, loop:循环, } forname,meaninglossaryes。items(): print(f{name。title()}:{mean}) glossaryes〔function〕函数 glossaryes〔method〕方法 glossaryes〔statement〕语句 glossaryes〔retract〕缩进 glossaryes〔tuple〕元组 forname,meaninglossaryes。items(): print(f{name。title()}:{mean}) 练习65:河流创建一个字典,在其中存储三条重要河流及其流经的国家。例如, 一个键值对可能是nile:egypt。 使用循环为每条河流打印一条消息,下面是一个例子。 TheNilerunsthroughEgypt。 使用循环将该字典中每条河流的名字打印出来。 使用循环将该字典包含的每个国家的名字打印出来。 创建一个空的字典rivers rivers{} 为字典rivers添入信息 rivers〔nile〕egupt rivers〔amazon〕brazil rivers〔theganges〕india 遍历rivers字典中的键值对 forriver,stateinrivers。items(): print(fThe{river。title()}runsthrough{state。title()}。) forriverinrivers。keys(): print(river。title()) forstateinrivers。values(): print(state。title()) 练习66:调查在6。3。1节编写的程序favoritelanguages。py中执行以下操作。 创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,而其他人 未包含在字典中。 遍历这个人员名单。对于已参与调查的人,打印一条消息表示感谢;对于还未 参与调查的人,打印一条消息邀请他参加。 favoritelanguages{ jen:Python, sarah:C, edward:ruby, phil:Python } surveylist〔jen,sarah,bill,musk〕 fornameinsurveylist: ifnameinfavoritelanguages。keys(): print(f感谢{name。title()}。) else: print(f{name。title()},邀请你参加调查。) 嵌套 将字典完整的看成一个元素存入列表中,可在字典中嵌套列表甚至字典。 alien0{color:green,points:5} alien1{color:yellow,points:10} alien2{color:red,points:15} aliens〔alien0,alien1,alien2〕 练习67:人们在为完成练习61而编写的程序中,再创建两个表示人的字典, 然后将这三个字典都存储在一个名为people的列表中。遍历这个列表,将其中每个人 的所有信息都打印出来 person0{ first:bill, last:gates, age:60, city:seattle, } person1{ first:elon, last:musk, age:50, city:sanfrancisco, } person2{ first:jeff, last:bezos, age:55, city:newyork, } people〔person0,person1,person2〕 forpersoninpeople: namef{person〔first〕}{person〔last〕} ageperson〔age〕 cityperson〔city〕 print(f{name。title()}:) print(fAge:{age}) print(fCity:{city。title()}) 练习68:宠物创建多个表示宠物的字典,每个字典都包含宠物的类型及其主人 的名字。将这些字典存储在一个名为pets的列表中,再遍历该列表,并将有关每个宠 物的所有信息都打印出来。 创建一个pets的空列表 pets〔〕 创建多个宠物的字典,每个字典包含宠物类型和主人名称 pet{ variety:dog, master:john, } pets。append(pet) pet{ variety:cat, master:jeff, } pets。append(pet) pet{ variety:hamster, master:jenny, } pets。append(pet) forpetinpets: namepet〔master〕。title() varietypet〔variety〕。title() print(f{name}petisa{variety}) JohnpetisaDog JeffpetisaCat JennypetisaHamster 练习69:喜欢的地方创建一个名为favoriteplaces的字典。在这个字典中, 将三个人的名字用作键,并存储每个人喜欢的13个地方。为了让这个练习更有趣些, 可以让一些朋友说出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其 喜欢的地方打印出来。 创建一个字典其中是列表镶嵌在字典中 favoriteplaces{ jeff:〔newyork,tokyo〕, bill:〔pairs〕, elon:〔london,beijng,hongkong〕, } 遍历字典将键赋值name将值赋予places赋值完name是个字符串places是个列表 forname,placesinfavoriteplaces。items(): print(f{name。title()}sfavoriteplacesis:) 遍历列表places中的值赋予place forplaceinplaces: print(f{place}) 练习610:喜欢的数2修改为完成练习62而编写的程序,让每个人都可以有多 个喜欢的数,然后将每个人的名字及其喜欢的数打印出来。 创建一个空的字典 favoritenumbers{} 往字典中添加信息‘人名’和喜欢的数字 favoritenumbers〔billgates〕〔5,7〕 favoritenumbers〔elonmusk〕〔10,13〕 favoritenumbers〔stevejobs〕〔15,18〕 favoritenumbers〔jeffbezos〕〔20,22,23〕 favoritenumbers〔larryellison〕〔25,26,30,33〕 forname,numbersinfavoritenumbers。items(): print(f{name。title()}sfavoritenumberis:) fornumberinnumbers: print(f{number}) 练习611:城市创建一个名为cities的字典,将三个城市名用作键。对于每座 城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城 市的事实。在表示每座城市的字典中,应包含country、population和fact等键。将每 座城市的名字以及有关信息都打印出来。 创建4个字典 cities{} city01{} city02{} city03{} 给每个字典赋值 city01〔country〕japan city01〔population〕13500000 city01〔fact〕ThesouthernkantoplainofHonshuisland。 city02〔country〕usa city02〔population〕10000000 city02〔fact〕northeastoftheAtlanticcoastoftheUnitedStates city03〔country〕china city03〔population〕21530000 city03〔fact〕NorthwestmarginofnorthChinaPlain cities〔tokyo〕city01 cities〔newyork〕city02 cities〔beijing〕city03 遍历字典输出每个信息 forname,messagesincities。items(): namename。title() countrymessages〔country〕。title() populationmessages〔population〕 factmessages〔fact〕。title() print(f{name}:) print(fCountry:{country}) print(fPopulation:{population}) print(fFact:{fact}) Tokyo: Country:Japan Population:13500000 Fact:TheSouthernKantoPlainOfHonshuIsland。 NewYork: Country:Usa Population:10000000 Fact:NortheastOfTheAtlanticCoastOfTheUnitedStates Beijing: Country:China Population:21530000 Fact:NorthwestMarginOfNorthChinaPlain