首页 > 编程语言 >Python之列表解决实际问题案例(字谜、文件分析)

Python之列表解决实际问题案例(字谜、文件分析)

时间:2024-08-22 11:25:06浏览次数:12  
标签:Python 列表 单词 word1 word2 sorted 字谜

字谜

字谜通过重新安排单词里的字母,来组成新的单词或词组。例如,将cinema转换成另一个英语单词iceman。在这个例子中,将设计一个程序,检查两个词是否构成字谜。如何做到这一点?做法是找出两个字谜单词所共享的特性。一种典型的方式是将字母排序。考虑前面的例子。如果将两个字谜单词 cinema和iceman中的字母排序,得到的字符串都为aceinn。想想这意味着什么。排序后的列表是 cinema和iceman中字母的另一种重排。对字母排序将得到两个单词的共同表示。
下面是算法描述:
1)输入两个单词
2)对单词进行排序
3)比较两个排序后的单词
第一步为“输入两个单词”,因此需要提示用户输入两个用空格隔开的单词。nput命令将两个单词作为字符串返回,例如,‘cinema iceman’。接下来,利用split来获取列表中每个单词。得到单词列表后,需要抽取这两个单词。

twowords=input("请输入两个单词:")
word1,word2=twowords.split()

第二步进行排序。两个单词都是字符串类型,可以利用sorted()函数返回一个排序号的字母列表。

word1_sorted=sorted(word1)
word2_sorted=sorted(word2)

第三步比较。列表可以直接通过比较运算符进行比较,比较的时候会从第一个元素开始,一一比对,如果有不相同的元素,就会返回假,并停止比较。否则返回真。

if word1_sorted==word2_sorted:
	print("两个单词构成字谜")
else:
	print("两个单词不构成字谜")

整合代码,得到一个判断的函数,两个比较的单词作为函数的参数输入,函数返回true或flase

def isanagame(word1,word2):
	word1_sorted=sorted(word1)
	word2_sorted=sorted(word2)
	if word1_sorted==word2_sorted:
		return True
	else:
		return Flase

现在在加上输入,并调用函数,就可以得到最终的代码了。

def isanagame(word1,word2):
	word1_sorted=sorted(word1)
	word2_sorted=sorted(word2)
	if word1_sorted==word2_sorted:
		return True
	else:
		return Flase
		
twowords=input("请输入两个单词:")
word1,word2=twowords.split()
if isanagame(word1,word2):
	print("两个单词构成字谜")
else:
	print("两个单词不构成字谜")

文件分析

程序员常常需要用各种方法对文本文件进行分析。让我们利用列表来分析文件。具体要完成的工作如下:

  • 分析文件长度,按单词计数。
  • 追踪文件中只出现一次的不同单词。

将采用林肯总统的《葛底斯堡演说》(1863)作为示例。这个演说很著名的原因有很多,其中一点就是它非常简短。利用Python来对此演说进行简单分析。

1.《葛底斯堡演说》的长度

len函数返回列表的长度,因此将演说的内容全部放到列表中来获取其长度。一种好的方法是先用空列表,然后使用append方法每次将一个单词添加到列表中。从互联网上下载演说,并把它存放在文件 gettysburg中,将文件与程序放在同一目录下。首先打开文件,逐行读取文件内容。将每行内容读入一个长字符串中,以便于使用split方法来抽取单词并放入列表。可用将演讲列表扩展为每行一个列表的形式(使用extend)。算法如下:
1)打开文件进行读取。
2)初始化演讲列表为空。
3)对文件中的每一行:
(a)将其中的单词抽取出来,并放入一个列表中。
(b)一个个单词地判断是不是空单词“–”,不是的话再将单词添加到演讲列表中。
4)获取演讲列表的长度。

通过观察发现,步骤2)和步骤3)能在一个函数内实现,这个函数将创建演讲内容的单词列表。调用函数makewordlist,把它合并到打开文件的程序中,调用函数,然后显示出结果。

#输入一个文件,返回单词列表
def makewordlist(gFlie):
	speech=[]    #空列表
	for lineString in gFile:  #一行一行地循环
		lineList=lineString .split()   #空格分隔,得到单词列表
		for w in lineList:
			if w !="--":
				speech.append(w)   #符合要求的加到总列表中
	return speech

gFile=open("gettysburg.txt","r")   #打开文件
speech=makwordlist(gFile)    #得到单词列表
print("文章的单词长度为:%d"%len(speech))

2、有多少个不同的单词

先建立不同单词的列表,然后计算该列表的长度。首先创建唯一单词的空列表(请注意采用合适的模式)。接下来逐个单词遍历speech列表,检查该单词是否已在唯一单词列表中如果不存在,则将单词添加到列表中。检查的时候还要注意,大小写不同的也是同一个单词,有些单词后面带有标点符号要先去掉再比较。具体算法如下:
1)初始化唯一单词列表为空
2)对演说中每个单词:
(a)对单词全部变成小写
(b)用strip去掉指定字符
©如果该单词不在列表中:
(b)将单词添加在列表中。
编一个函数来实现算法,该函数命名为makeUnigue。

def makeUnique(speech):
	unique=[]    #空列表存放不同的单词
	for word in speech:
		word=word.lower().strip(",.")   #变小写后去指定符号
		if word not in unique:
			unique.append(word)    #把列表里没有的单词放进来
	return unique

在主函数中加入

unique=makeUnique(speech)
print("文章中不同的单词有:")
print(unique)
print("一共有%d个不同的单词。"%len(unique))

标签:Python,列表,单词,word1,word2,sorted,字谜
From: https://blog.csdn.net/weixin_43325374/article/details/141420957

相关文章

  • Python之列表的常用方法(添加删除排序等)
    一、列表的可变性二、列表方法1、不修改列表的方法2、修改列表的方法(1)添加(2)删除(3)列表排序(4)颠倒列表三、练习四、range、split和多重赋值五、使用join在列表和字符串之间转换一、列表的可变性在字符串中,不能直接去替换字符串中指定索引的值,需要使用切片和连接符。......
  • Python开发中,SQLAlchemy 的同步操作和异步操作封装,以及常规CRUD的处理。
    在我们使用Python来和数据库打交道中,SQLAlchemy是一个非常不错的ORM工具,通过它我们可以很好的实现多种数据库的统一模型接入,而且它提供了非常多的特性,通过结合不同的数据库驱动,我们可以实现同步或者异步的处理封装。1、SQLAlchemy介绍SQLAlchemy 是一个功能强大且灵活的Python......
  • Python中的常用的数据预处理所需工具
    Jupyter对于数据预处理的重要功能是支持用逐行编写和运行代码,实时查看结果。Jupyter是一个开源的交互式计算环境,它允许用户以网页的形式编写和运行代码,以及创建和共享文档,这些文档可以包含实时代码、方程、可视化和解释性文本。Jupyter的主要组件包括:1.JupyterNotebook:一......
  • 【Python脚本】刚度矩阵格式转换
    对于1-2-3坐标系:应力矩阵如下:\[\left.[\sigma]=\left[\begin{array}{ccc}\sigma_{11}&\sigma_{12}&\sigma_{13}\\\sigma_{12}&\sigma_{22}&\sigma_{23}\\\sigma_{13}&\sigma_{23}&\sigma_{33}\end{array}\right.\right]\]张量应变矩阵如下:......
  • python开发环境安装-包含Anaconda的安装配置和pycharm的安装
    一、需要得安装包1、 Anaconda3-5.3.0-Windows-x86_64.exe python环境2、pycharm-professional-2021.2.2.exe     开发工具3、ide-eval-resetter-2.1.13.zip            破解工具二、Anaconda安装Anaconda,中文大蟒蛇,是一个开源的Python发行版本。1......
  • 学Python必不可少的语言开发,程序员赶紧收藏!
      Python是一种广泛使用的高级编程语言,以其简洁易读的语法和强大的库支持而闻名。它支持多种编程范式,包括面向对象、命令式和函数式编程。Python的应用领域非常广泛,包括网络编程、数据分析、人工智能、机器学习、Web开发、自动化运维等。开发环境搭建安装Python:......
  • python configparser操作配置文件
    一、configparser概述configparser是Pyhton标准库中用来解析配置文件的模块;Python2.x中名为ConfigParser,3.x已改名为configParser二、配置文件的格式常见的配置文件后缀:.ini,.conf等,主要结构为包括以下的文本信息:sections(段)keys(properties\键)values(值)格式如下......
  • 提升代码迭代速度的Python重载方法使用详解
        概要在Python编程中,模块是组织代码的重要工具,它们使得代码更加模块化和易于维护。在开发和调试过程中,有时需要对已经导入的模块进行修改并重新加载以应用更改。Python提供了一个名为reload的模块,用于在不重新启动解释器的情况下重新加载已经导入的模块。本文将详......
  • Python代码部署之用Kubernetes实现自动化详解
    概要在现代软件开发中,容器化和微服务架构逐渐成为主流,而Kubernetes则是管理容器化应用的事实标准。Kubernetes(简称K8s)提供了自动化部署、扩展和管理容器化应用的强大功能。本文将详细介绍如何使用Kubernetes来部署Python代码,包括Kubernetes的基本概念、部署流程,以及通过示例......
  • Python是一种广泛使用的编程语言,其主要用途有什么?
    Python是一种广泛使用的编程语言,其主要用途包括但不限于以下几个方面:1.Web开发Python拥有众多Web开发框架,如Django和Flask,这些框架使得开发者能够高效地构建和维护Web应用程序。许多著名的网站,如YouTube、Instagram以及国内的豆瓣等,都是使用Python进行开发的。2.数据科学......