【头歌系统Python实验】字符串处理

目录

第1关:字符串的拼接:名字的组成

第2关:字符转换

第3关:字符串查找与替换


如果对你有帮助的话,不妨点赞收藏评论一下吧,爱你么么哒😘❤️❤️❤️

第1关:字符串的拼接:名字的组成

任务描述

本关任务是将两个不同的字符串,拼接形成一个字符串,并将新字符串输出来。字符串或串(String)是由数字、字母、下划线组成的一串字符。在 Python 中,字符串用单引号或者双引号括起来。在很多情况下,我们需要将两个字符串拼接起来,形成一个字符串。
例如,一个人的姓名,通常是由“姓氏”+“名字”组成的。在很多程序中,为了方便后续处理,通常将姓氏和名字分别存在两个变量中。然后在显示时,要将姓氏和名字拼接起来,按全名显示。

  1. first_name = 'Zhang'

  2. last_name = 'san'

输出如下:

  1. full_name = 'Zhang san'

相关知识

字符串合并

Python 中使用+来合并两个字符串,这种合并字符串的方法叫做拼接。其基本语法如下:

  1. result_string = source_string1 + source_string2

其中:

  • source_string1:待合并的第一个字符串;

  • source_string2:待合并的第二个字符串;

  • result_string:合并后的字符串。

注意:如果需要,在两个字符串之间可以增加相应的空格,具体见下面的例子。例如,将姓氏和名字拼接成全名:

字符串拼接方法

在Python中,有多种方式可以进行字符串拼接。以下是几种常见的方法:

  1. 使用加号(+)运算符:

    1. first_name = "John"

    2. last_name = "Doe"

    3. full_name = first_name + " " + last_name

    4. print(full_name) # 输出:John Doe

  2. 使用逗号(,)将多个字符串作为参数传递给print()函数:

    1. first_name = "John"

    2. last_name = "Doe"

    3. print(first_name, last_name) # 输出:John Doe

  3. 使用字符串的format()方法:

    1. first_name = "John"

    2. last_name = "Doe"

    3. full_name = "{} {}".format(first_name, last_name)

    4. print(full_name) # 输出:John Doe

  4. 使用f-string(格式化字符串):

    1. first_name = "John"

    2. last_name = "Doe"

    3. full_name = f"{first_name} {last_name}"

    4. print(full_name) # 输出:John Doe

注意 使用字符串的 format() 方法: 该方法在Python 2.6及更高版本中获得支持。 在Python 3.6及更高版本中,推荐使用更简洁的f-string来进行字符串格式化。 使用f-string(格式化字符串):

该方法在Python 3.6及更高版本中获得支持。 在Python 3.6之前的版本中,不支持f-string。

在这些方法中,你可以根据自己的喜好和需求选择适合的方式进行字符串拼接。它们都能有效地将多个字符串组合成一个新的字符串。

print() 函数的参数说明如下:

print()函数是Python中用于输出内容的内置函数,它可以接受多个参数并将它们打印到标准输出(通常是控制台)。

下面是print()函数的参数说明:

  1. print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

  • *objects:要打印的对象,可以是一个或多个参数。它们将按顺序打印在一行上。使用逗号分隔多个对象。

  • sep=' '(可选):用于分隔多个对象之间的字符串。默认情况下,它是一个空格字符。

  • end='\n'(可选):用于表示打印结束的字符串。默认情况下,它是一个换行符 \n,表示在输出内容的末尾打印一个换行符,使下一行输出位于新的一行。

  • file=sys.stdout(可选):指定要将输出发送到的文件对象。默认情况下,输出被发送到标准输出流(通常是控制台)。你可以将其设置为一个文件对象,以将输出写入文件。

  • flush=False(可选):控制是否刷新输出缓冲区。默认情况下,缓冲区会自动刷新。如果将其设置为True,则立即刷新缓冲区,将内容输出到目标文件或终端。

通过使用这些参数,你可以控制打印输出的格式、分隔符和结束字符。下面是几个示例:

  1. print("Hello", "World") # 输出:Hello World

  2. print("Hello", "World", sep=", ") # 输出:Hello, World

  3. print("Hello", "World", end="!") # 输出:Hello World!

  4. print("Hello", "World", sep="-", end="!") # 输出:Hello-World!

  5. # coding=utf-8

  6. # 将姓氏和名字分别保存在两个变量中

  7. first_name = 'Zhang'

  8. last_name = 'san'

  9. # 将姓氏和名字拼接,将结果存储在full_name变量中

  10. full_name = first_name + " " + last_name

  11. print(full_name)

输出结果:

  1. Zhang san

输入字符串的读入

由于我们写的程序需要处理不同的姓氏和名字,因此有必要从系统读入用户提供的相关字符串,本节介绍输入字符串的读入方法:

  1. first_name = input("")

  2. last_name = input("")

上面两行程序的含义是: 读入第一行输入对应的字符串,并保存到first_name变量中。 读入第二行输入对应的字符串,并保存到last_name变量中。

如果您想了解更多有关字符串的知识,请参考:【美】 Eric Matthes 著《Python 编程——从入门到实践》第二章。

编程要求

本关的编程任务是补全src/Step1/full_name.py文件中 Begin-End 区间的代码,实现如下功能:

  • 将存放姓氏的字符串变量和存放名字的字符串变量拼接起来,中间用一个空格隔开,并将结果存储在full_name变量中;

  • 打印输出full_name变量。

测试说明

本关的测试文件是src/step1/full_name.py,已在右侧的编程区域打开,测试过程如下:

  1. 学习者将src/Step1/full_name.py中的代码按编程要求依次补充完毕,将然后点击评测,平台将自动编译并运行full_name.py,并以标准输入方式提供测评输入;

  2. 平台获取程序的输出,然后将其与预期输出对比。如果一致,则测试通过,否则测试失败。

以下是平台对src/step1/full_name.py的样例测试集:

测试输入:

  1. Hu

  2. dong

预期输出:

  1. Hu dong


开始你的任务吧,祝你成功!

# coding=utf-8# 存放姓氏和名字的变量
first_name = input()
last_name = input()# 请在下面添加字符串拼接的代码,完成相应功能
########## Begin ##########full_name=first_name+" "+last_name
print(full_name)
#print(first_name, last_name, sep=" ")
########## End ##########

第2关:字符转换

任务描述

本关任务:对给定的字符串进行处理,包括字符串长度计算、大小写转换以及去除字符串前后空格等。
在字符串处理中,经常需要统计字符串的长度、进行大小写转换以及去除字符串前后空格等操作。例如,在基于关键词的搜索引擎中,要查询关键词是否在文档或者网页中出现,搜索引擎并不需要区分关键词中字符的大小写以及关键词前后的空格等。这时就需要对字符串进行处理,将其中的大写字符都转换为小写,并剔除字符串开头和结尾处的空格,然后再统一进行字符串匹配。

相关知识

Python 标准库提供了一系列关于字符串处理的函数。本关的小目标是让大家学习并掌握 Python 常用字符串方法中的len()lower()strip()函数的用法,并完成相应字符串处理任务。

字符串长度获取

Python 提供了len()函数来计算,并返回字符串的长度,即字符串中单个元素的个数。其基本语法如下:

  1. length = len(target_string)

其中:

  • target_string: 目标字符串变量;

  • length: 保存字符串长度的变量;

  • len: 获取字符串长度的语法关键词。

下面给出了具体的使用示例:

  1. # coding=utf-8

  2. # 创建一个字符串变量,获取其长度并打印出来

  3. color = 'It is red'

  4. length = len(color)

  5. print (length)

  6. # 直接在len函数中引入字符串内容获得其长度,然后打印出来

  7. print(len('This is a circle!'))

输出结果:

  1. 9

  2. 17

注意: 从输出结果可以看到,空格也占一个字符元素的位置。

大小写转换

Python 提供了upper()lower()方法,来对字符串进行大小写转换。其中,upper()会将字符串中的所有字符都转换为大写,lower()则将所有字符转换为小写。除此之外,Python 还贴心的提供了title()方法,将字符串所有单词的首字母变成大写,而其他字母依然小写。各个方法的具体语法如下:

  1. # 将源字符串转换为大写并存入upper_string变量

  2. upper_string = source_string.upper()

  3. # 将源字符串转换为小写并存入lower_string变量

  4. lower_string = source_string.lower()

  5. # 将源字符串每个词首字母转换为大写并存入title_string变量

  6. title_string = source_string.title()

其中,source_string为待处理的源字符串。具体使用示例如下:

  1. # coding=utf-8

  2. # 创建一个字符串say_hello

  3. say_hello = 'Dear my Daughter'

  4. # 使用upper()方法对say_hello字符串进行处理

  5. upper_say_hello = say_hello.upper()

  6. # 使用lower()方法对say_hello字符串进行处理

  7. lower_say_hello = say_hello.lower()

  8. # 使用title()方法对say_hello字符串进行处理

  9. title_say_hello = say_hello.title()

  10. # 打印输出四个字符串

  11. print (say_hello+"\n")

  12. print (upper_say_hello+"\n")

  13. print (lower_say_hello+"\n")

  14. print (title_say_hello+"\n")

输出结果:

  1. Dear my Daughter

  2. DEAR MY DAUGHTER

  3. dear my daughter

  4. Dear My Daughter

注意: 由上述打印结果可以看出,上述方法的调用,并不会对原始的 say_hello字符串产生影响,转换后的字符串会存入新的变量中。

去除字符串首尾空格

Python 提供了strip()方法,可以去除字符串两侧(不包含内部)全部的空格。使用该方法,也可以通过指定参数,去除两侧指定的特定字符。

注意:在指定参数时,如果参数是多个字符,则该方法会将多个字符逐个去比对,进行删除(区分大小写),直到首尾两侧没有匹配的字符为止。但是,该方法对字符串中间的字符没有影响。

其基本语法如下:

  1. strip_string1 = source_string.strip()

  2. string_strip2 = source_string.strip(target_char)

其中:

  • source_string:待处理的源字符串;

  • strip_string1strip_string2:处理后的字符串;

  • target_char:需要从源字符串首尾去除的特定字符。

具体使用示例如下:

  1. # coding = utf-8

  2. # 创建一个字符串hello_world

  3. hello_world = ' **The world ** is big!* '

  4. # 利用strip()方法处理hello_world字符串

  5. blank_hello_world = hello_world.strip()

  6. char_hello_world = hello_world.strip('TH *')

  7. # 打印输出转换后的字符串

  8. print(blank_hello_world)

  9. print(char_hello_world)

输出结果:

  1. **The world ** is big!*

  2. he world ** is big!

输出结果分析:

  • 从第一行打印结果可以看到,strip()方法去除了源字符串首尾的所有空格,但是并没有去除字符串中间的空格;

  • 从第二行打印结构可以看出,strip()方法将源字符串首尾所有空格、* 以及字符T去掉了,而源字符串中头部的h因为是小写并没有去除。

编程要求

本关的编程任务是,补全src/Step2/method1.py文件中 Begin-End 区间的代码,实现给定字符串的转换功能,具体要求如下:

  • step1 :将输入的源字符串source_string首尾的空格删除;

  • step2 :将 step1 处理后的字符串的所有单词的首字母变为大写,并打印输出;

  • step3 :将 step2 转换后的字符串的长度打印输出。

测试说明

本关的测试文件是src/Step2/method1.py,测试过程如下:

  1. 学习者将src/Step2/method1.py中的代码补充完毕,然后点击评测。平台自动编译运行method1.py,并以标准输入方式提供测评输入;

  2. 平台获取程序的输出,然后将其与预期输出对比。如果一致,则测试通过,否则测试失败。

以下是平台对src/Step2/method1.py的样例测试集:

测试输入:

  1. Where there is a will,there is a way

预期输出:

  1. Where There Is A Will,There Is A Way

  2. 36


开始你的任务吧,祝你成功!

# coding=utf-8# 获取待处理的源字符串
source_string = input()# 请在下面添加字符串转换的代码
########## Begin ##########strip_string=source_string.strip()
upper_string=strip_string.title()
print(upper_string)
print(len(upper_string))########## End ##########

第3关:字符串查找与替换

任务描述

本关的任务是,给定一个字符串,要利用 Python 提供的字符串处理方法,从该字符串中,查找特定的词汇,并将其替换为另外一个更合适的词。例如,给定一个字符串Where there are a will, there are a way,我们发现这句话中存在语法错误,其中are应该为is,需要通过字符串替换将其转换为Where there is a will, there is a way

在大家日常工作使用 Word 编写文档的过程中,经常会遇到一个问题,发现前面写的文档中某个词用错了,需要换为另外一个词来表达。Word 提供了全文查找与替换的功能,可以帮助用户很方便的处理这一问题。那么,这一功能最基础和核心的就是字符替换,如果我们要自己基于 Python 来实现,该怎么做呢?

相关知识

本关的小目标:学习并掌握 Python 中常用的字符串方法,包括字符串查找、字符串切分、字符串替换等。

字符串查找

Python 提供了内置的字符串查找方法find(),利用该方法可以在一个较长的字符串中查找子字符串。如果该字符串中,有一个或者多个子字符串,则该方法返回第一个子串所在位置的最左端索引,若没有找到符合条件的子串,则返回-1find()方法的基本使用语法如下:

  1. source_string.find(sub_string)

其中:

  • source_string:源字符串;

  • sub_string:待查的目标子字符串;

  • find:字符串查找方法的语法关键字。

例如,在一个字符串中,查找两个单词的位置:

  1. # coding=utf-8

  2. # 创建一个字符串

  3. source_string = 'The past is gone and static'

  4. # 查看"past"在source_string字符串中的位置

  5. print(source_string.find('past'))

  6. # 查看"love"在source_string字符串中的位置

  7. print(source_string.find('love'))

输出结果:

  1. 4

  2. -1

字符串替换

Python 提供了replace()方法,用以替换给定字符串中的子串。其基本使用语法如下:

  1. source_string.replace(old_string, new_string)

其中:

  • source_string:待处理的源字符串;

  • old_string:被替换的旧字符串;

  • new_string:替换的新字符串;

  • replace:字符串替换方法的语法关键词。

例如,在如下字符串中,用small子串替换big子串:

  1. # coding = utf-8

  2. # 创建一个字符串circle

  3. source_string = 'The world is big'

  4. # 利用replace()方法用子串"small"代替子串"big"

  5. print(source_string.replace('big','small'))

输出结果:

  1. The world is small

字符串分割

Python 提供了split()方法实现字符串分割。该方法根据提供的分隔符,将一个字符串分割为字符列表,如果不提供分隔符,则程序会默认把空格(制表、换行等)作为分隔符。其基本使用语法如下:

  1. source_string.split(separator)

其中:

  • source_string:待处理的源字符串;

  • separator:分隔符;

  • split:字符串分割方法的关键词。

例如,用+/还有空格作为分隔符,分割字符串:

  1. # coding = utf-8

  2. # 待处理字符串source_string

  3. source_string = '1+2+3+4+5'

  4. # 利用split()方法,按照`+`和`/`对source_string字符串进行分割

  5. print(source_string.split('+'))

  6. print(source_string.split('/'))

输出结果:

  1. ['1', '2', '3', '4', '5']

  2. ['1+2+3+4+5']

编程要求

本关的编程任务是,补全src/Step3/method2.py文件中 Begin-End 区间的代码,实现如下功能:

  • step1 :查找输入字符串source_string中,是否存在day这个子字符串,并打印输出查找结果;

  • step2 :对输入字符串source_string执行字符替换操作,将其中所有的 day替换为time,并打印输出替换后的字符串;

  • step3 :对 step2 进行替换操作后的新字符串,按照空格进行分割,并打印输出分割后的字符列表。

测试说明

本关的测试文件是src/Step3/method2.py,测试过程如下:

  1. 学习者将src/Step3/method2.py中的代码按上述编程要求补充完毕,然后点击评测,平台将自动编译并运行method2.py,并以标准输入方式提供测评输入;

  2. 平台获取程序的输出,然后将其与预期输出对比。如果一致,则测试通过,否则测试失败。

以下是平台对src/Step3/method2.py的样例测试集:

测试输入:

  1. All day is no day when it is past.

预期输出:

  1. 4

  2. All time is no time when it is past.

  3. ['All', 'time', 'is', 'no', 'time', 'when', 'it', 'is', 'past.']

第一行输出结果即为"day"在source_string字符串中的位置; 第二行输出结果即为将其中所有的 day替换为time后的字符串; 第三行输出结果即为对 step2 进行替换操作后的新字符串,按照空格进行分割后的字符列表。


开始你的任务吧,祝你成功!

# coding = utf-8
source_string = input()# 请在下面添加代码
########## Begin ##########print(source_string.find('day'))
print(source_string.replace('day','time'))
print((source_string.replace('day','time')).split(' '))########## End ##########

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/202985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux--程序地址空间

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 [TOC](文章目录) 一、程序地址空间回顾 我们在讲C语言的时候,老师给大家画过这样的空间布局…

Qt-Q_OBJECT宏使用与“无法解析的外部符号qt_metacall/metaObject/qt_metacast“

有时候我们编写Qt类的时候,修改代码时直接加上Q_OBJECT宏,然后直接构建,会报如下错误: 这里的几个函数的声明是由Q_OBJECT宏引入的,而其对应的实现是由moc实现的,如果我们更新了代码但是没有执行qmake&…

基于Java学生宿舍管理系统

基于Java学生宿舍管理系统 功能介绍: 1、用户管理:系统需要提供用户注册、登录和权限管理功能。管理员可以创建和管理学生、宿舍员工等用户账号,并设置不同的权限级别。 2、宿舍管理:系统需要能够管理宿舍的基本信息&#xff0…

SQL小技巧:where条件后为什么要写1=1?

【微信公众号:跟强哥学SQL】 相信第一次看到下面这个SQL的同学心里都不免会产生疑问。 SELECT * FROM employeesWHERE 11 为什么要在where条件中使用11这样的写法?这不是废话吗? 其实还真不是。 为什么使用11这样的条件? 在…

Linux网卡命名规则

Linux网卡命名规则 网卡命名 一、为什么需要这个 服务器通常有多块网卡,有板载集成的,同时也有插在PCIe插槽的。Linux系统的命名原来是eth0,eth1这样的形式,但是这个编号往往不一定准确对应网卡接口的物理顺序。 为解决这类问题&…

基于FPGA的图像RGB转CIE-Lab实现,包含testbench和MATLAB辅助验证程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1RGB颜色空间 4.2CIE-Lab颜色空间 4.3RGB转CIE-Lab算法原理 5.算法完整程序工程 1.算法运行效果图预览 将FPGA的结果导入到matlab,并和matlab的仿真结果进行对比&#xff1a…

使用TouchSocket适配一个c++的自定义协议

这里写目录标题 说明一、新建项目二、创建适配器三、创建服务器和客户端3.1 服务器3.2 客户端3.3 客户端发送3.4 客户端接收3.5 服务器接收与发送 四、关于同步Send 说明 今天有小伙伴咨询我,他和同事(c端)协商了一个协议,如果使…

【Hadoop_01】Hadoop介绍与安装

1、Hadoop、HDFS、YARN介绍(1)Hadoop简介与优势(2)Hadoop组成(3)HDFS概述(4)YARN概述(5)MapReduce概述 2、安装(1)Centos7.5软硬件安装…

基于jsp+servlet+mybatis的简易在线选课系统

目录 一.数据库 1.数据库和表的创建 2.数据插入 二.代码实现 1.pojo类 (1)Course (2)User (3)Elective 2.mapper接口 (1)UserMapper (2)ElectiveMap…

前端开发实用技巧与经验分享

导语:在前端开发领域,掌握一些实用的技巧和经验可以帮助你更高效地完成任务。本文将分享一些前端开发的实用技巧和经验,帮助你在工作中更好地应对各种挑战。 一、使用开发者工具进行调试和优化 熟练掌握浏览器开发者工具的使用,…

vs 安装 qt qt扩展 改迅雷下载qt

Qt5.14.2安装教程和VS2019中的qt环境配置-CSDN博客 1 安装qt 社区版 免费 Download Qt OSS: Get Qt Online Installer 2 vs安装 qt vs tools 3 vs添加 qt添加 bin/cmake.exe 路径 3.1 扩展 -> qt versions 3.2 4 新版要源码安装 需要自己安装 安装独立安装的旧版 官网…

D. Jumping Through Segments

显然是一个二分答案,关键是怎么搞判断函数? 我们维护合法的降落区间就好了~ // Problem: D. Jumping Through Segments // Contest: Codeforces - Codeforces Round 913 (Div. 3) // URL: https://codeforces.com/contest/1907/problem/D // Memory Li…

car relative position

如何判断你驾驶的车在路上是否居中 车辆相对位置判断,参考 右侧和路边线交点 看右后视镜,看下大概和边线相差多少

SQL手工注入漏洞测试(Sql Server数据库)-墨者

———靶场专栏——— 声明:文章由作者weoptions学习或练习过程中的步骤及思路,非正式答案,仅供学习和参考。 靶场背景: 来源: 墨者学院 简介: 安全工程师"墨者"最近在练习SQL手工注入漏洞&#…

详解nginx优势以及应用场景,实操编译安装和nginx版本平滑升级

目录 一、nginx的特点 那么nginx有哪些特点? 先讲nginx的优点: 缺点: 二、nginx与Apache的区别 三、nginx的应用场景 四、nginx为什么能支持高并发 五、为什么nginx不使用多线程 六、nginx的两种进程分别有什么作用 七、编译安装ngi…

二叉搜索树——模拟

对于一个无穷的满二叉排序树(如图),节点的编号是1,2,3,…。对于一棵树根为X的子树,沿着左节点一直往下到最后一层,可以获得该子树编号最小的节点;沿着右节点一直往下到最后一层,可以…

【办公软件】Win10/Win11复制粘贴必须刷新才能显示

更换了新的一台电脑,但是发现新建文件夹或是复制粘贴文件时,不管是在桌面还是在其他磁盘中都需要右击刷新一下才显示。让人很郁闷,比如新建一个文件夹不显示以为没有新建成功,导致重复建了好几个。 如何解决? 使用Wi…

深拷贝和浅拷贝 深克隆和浅克隆

深拷贝和浅拷贝是用来描述对象或者对象数组这种引用数据类型的复制场景的。 浅拷贝,就是只复制某个对象的指针,而不复制对象本身。 这种复制方式意味着两个引用指针指向被复制对象的同一块内存地址。 深拷贝,会完全创建一个一模一样的新对象&…

一步解决 java.io.FileNotFoundException: 找不到文件异常

1.问题描述 java.io.FileNotFoundException: C:\Users\Administrator\AppData\Local\Temp\localhost\uploads\image\20231206\2843cb16-9654-4e52-a757-76e3ca1f80ff.png (系统找不到指定的路径。) 2.原因分析 文件路径中的文件目录不存在 3.解决方案 方案一:如果…