数据结构与算法(Python版) 源代码 (周元哲 版)第3章 python数据类型_第1页
数据结构与算法(Python版) 源代码 (周元哲 版)第3章 python数据类型_第2页
数据结构与算法(Python版) 源代码 (周元哲 版)第3章 python数据类型_第3页
数据结构与算法(Python版) 源代码 (周元哲 版)第3章 python数据类型_第4页
数据结构与算法(Python版) 源代码 (周元哲 版)第3章 python数据类型_第5页
全文预览已结束

下载本文档

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

文档简介

第3章python数据类型.................................2

3.12实例..............................................3

3.12.1发扑克牌.....................................3

3.12.2找单词.......................................4

3.12.3计算两个日期间隔天数........................5

第3章python数据类型

【例3・11]比较了"+"和append。两种方法

importtime

result=[]

start=time.time()

foriinrange(10000):

result=result+[i]

print,+操作执行”,len(result)J次,用时;time.time()・start)

result=[]

start=time.time()

foriinrange(10000):

result.append(i)

print("append操作执行"Jen(result),'次,用时time.time()・start)

程序运行结果如下所示:

+操作执行10000次,用时0.2020115852355957

append操作执行10000次,用时0.0009999275207519531

【例332】比较了Insert()和append。两种方法

importtime

defInsert():

a=[]

foriinrange(10000):

a.insert(0,i)

defAppend():

a=[]

foriinrange(10000):

a.append(i)

start=time.time()

foriinrange(lO):

Insert()

print('Insert:'»time.time()-start)

start=time.time()

foriinrange(lO):

Append()

print(,Append:*,time.time()-start)

程序运行结果如下所示:

Insert:0.57800(X)68665

Append:0.0309998989105

【例3-14]每一个列表中只要有一个元素出现两次,那么该列表即被判定为包含重复

元素。编写函数判定列表中是否包含重复元素,如果包含返回True,否则返回Falseo然后

使用该函数对n行字符串进行处理。最后统计包含重复元素的行数与不包含重复元素的行

数。

输入格式:

输入n,代表接下来要输入n行字符串。

然后输入n行字符串,字符串之间的元素以空格相分隔。

输出格式:

True二包含重复元素的行数,False二不包含重复元素的行数,后面有空格。

输入样例:

5

12345

13254

12361

12321

11111

输出样例:

True=3,False=2

【代码如下所示】

n=int(input())

true=false=0

foriinrange(n):

a=input()

a=list(a.split())

iflen(list(a))==len(set(a)):#利用集合中元素不能重复的特性

false+=1

else:

true+=1

print('True=%d,False=%d'%(true,false))

3.12实例

3.12.1发扑克牌

【例336】发扑克牌。

【解析】扑克牌有54张牌,其中52张是正牌,另2张是副牌(大王和小王)。52张正牌

又均分为13张一组,并以黑桃、红桃、梅花、方块四种花色表示各组,每组花色的牌包括

从1-10(1通常表示为A)以及J、Q、K标示的13张牌。

importrandom

SUITS=['Club',,Diamond','Heart','Spade']

RANKS=[,AV273,;4,;5,,,677V8,;9V10,;J7Q;K]

deck=[]

forrankinRANKS:

forsuitinSUITS:

card=rank.+'of+suit

deck+=[card]

n=len(deck)

foriinrange(n):

r=random.randrange(i,n)

deck[r],deck[i]=deck[i],deck[r]

forsindeck:print(s)#输出扑克牌的随意组合

运行结果如下所示:

3ofHeart

AofHeart

3ofClub

4ofClub

JofClub

3olDiamond

4ofSpade

2ofClub

KofSpade

7ofHeart

6ofSpade

9ofSpade

JofSpade

9ofHeart

AofSpade

6ofDiamond

AofDiamond

QofSpade

3.12.2找单词

【例3-17]输入一串字符,统计其中单词出现的次数,单词之间用空格分隔开。

【解析】采用字典数据结构来实现,如果某个单词出现在字典中,可以将单词作为键,访问

它的值(单词的次数),并将其关联值加1;如果某个单词(键)不存在于字典中,使用赋

值的方式创建键,并将其关联值置为1.

string=input("inputstring/')

string_list=string.split()

word_dict={}

forwordinstring_list:

ifwordinword_dict:

word_dict[word]+=1

else:

word_dict[word]=1

print(word_dict)

【程序运行结果】

inputstring:!amaboyIamastudent

{T:2,'am':2,'a':2,'boy':1,'student':1}

3.12.3计算两个日期间隔天数

【例3-18]输入两组同年的年月日,计算之间相隔天数。其中,默认第二组输入日期比第

一组输入日期大。例如,输入201831,2018-5-25,输出间隔天数86。

【提示】输入的字符串转换为整数需要用到split。函数以及map()函数。"2018-3-l".split("-")

的含义是将字符串按切分,返回「201将,"3",T]列表。map(int,list)含义是将int函数依次

应用于list中的每一个元素。闰年的定义为被4整除且不能被100整除或被400整除的年份。

【解析】

=map(int,inputC开始年月日,输入形式如2018-2-3:*).split(-'))

y2,m2,d2=map(int,input(,结束年月日,输入形式如2018-2-3:*).split(-'))

a=[31,28,31,30,31,30,31,31,30,31,30,31]

d=0

ifml>m2:

ml,m2=m2,ml

dl,d2=d2,dl

foriinrange(ml,m2):

温馨提示

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

评论

0/150

提交评论