Python基础day03 作业解析【5道 字符串题、3道 列表题、2道 元组题】

  • 视频、源码、课件、软件、笔记:超全面Python基础入门教程【十天课程】博客笔记汇总表【黑马程序员】
  • Python基础day03【字符串(定义、输入输出、常用方法)、列表(定义、基本使用、增删改查、嵌套)、元组】

目录

1、字符串

题目1 [加强训练]

题干

训练目标

训练提示

参考方案

操作步骤

参考答案

题目2 [加强训练]

题干

训练目标

训练提示

参考方案

操作步骤

参考答案

题目3 [加强训练]

题干

训练目标

训练提示

参考方案

操作步骤

参考答案

题目4 [加强训练]

题干

训练目标

训练提示

参考方案

操作步骤

参考答案

题目5 [加强训练]

题干

训练目标

训练提示

参考方案

操作步骤

参考答案

2、列表

题目1 [加强训练]

题干

训练目标

训练提示

参考方案

操作步骤

参考答案

题目2 [加强训练]

题干

训练目标

训练提示

参考方案

操作步骤

参考答案

题目3 [加强训练]

题干

训练目标

训练提示

参考方案

操作步骤

参考答案

3、元组 tuple

题目1 [加强训练]

题干

训练目标

训练提示

参考方案

操作步骤

参考答案

题目2 [加强训练]

题干

训练目标

训练提示

参考方案

操作步骤

参考答案


1、字符串

题目1 [加强训练]

题干

如果需要使用变量保存以下字符串,我们该如何书写代码

鲁迅说:"我没有说过这句话"

训练目标

让学员知道含有字符串嵌套的方式

训练提示

在python中,有两种表现形式都可以定义为字符串类型,是哪两种方式,是否可以混合使用呢

参考方案

使用 " " 和 ' ' 都可以对字符串进行定义

操作步骤

  1. 想要在在一个字符串中包含双引号"", 字符串可以使用单引号定义

  2. 想要在在一个字符串中包含单引号'', 字符串可以使用双引号定义

参考答案

 # 在python中,''可以嵌套在""中,用以表示字符串中的字符串
 words = "鲁迅说:'我没有说过这句话'"
 print(words)
 ​
 # 还可以使用三引号
 words = """鲁迅说:'我没有说过这句话'"""
 print(words)

 

题目2 [加强训练]

题干

做一个简单的用户信息管理系统: 提示用户依次输入姓名,年龄和爱好 并且在输入完成之后,一次性将用户输入的数据展示出来

训练目标

字符串的声明 字符串的输入 字符串的输出

训练提示

  1. 在python中,通过 "" 或者 '' 声明一个字符串类型的变量

  2. 使用input()函数从键盘获取数据

  3. 通过%s 的格式化操作符来输出字符串类型

参考方案

  1. 通过input函数进行字符串数据的录入

  2. 使用 string 类型保存录入的数据

  3. 使用 %s 格式化输出保存的数据

操作步骤

  1. 通过input函数进行字符串数据的录入

  2. 使用 string 类型保存录入的数据

  3. 使用 %s 格式化输出保存的数据

参考答案

 # 录入数据,并保存在变量中
 name = input("请输入姓名:")
 age = input("请输入年龄:")
 hobby = input("请输入您的爱好:")
 ​
 # 格式化输出数据
 print("您的姓名是%s, 您的年龄是%s, 您的爱好是%s" % (name, age, hobby))
 # 使用 f-string
 print(f"您的姓名是{name}, 您的年龄是{age}, 您的爱好是{hobby}")
 ​

 

题目3 [加强训练]

题干

现有字符串如下,请使用切片提取出ceg words = "abcdefghi"

训练目标

字符串的切片使用

训练提示

1, 切片的语法:[起始:结束:步长] 2, 选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身), 3, 步长表示选取间隔,默认步长是正值,即从左到右选取,如果步长为负值,则从右向左选取

参考方案

1,使用切片进行截取,起始位置是-7,结束位置是-1 2,反向选取,步长为2

操作步骤

  1. 起始位置为-7,结束位置是-1,步长为2

参考答案

 a = "abcdefghi"
 ​
 b = a[-7:-1:2]
 print(b)

 

题目4 [加强训练]

题干

james有一个关于爬虫的项目,他需要在一个字符串中查找python这个关键字, 当前他通过index()函数进行查找,虽然可以实现查找的需求,但是总会在 没有查找到关键字的时候报错,为什么会报错,如何优化?

训练目标

  1. 理解find函数和index函数的区别

训练提示

  1. find函数如果查找到则返回索引值,如果查不到,则返回-1

  2. index函数如果查找到则返回索引值,如果查不到,则报错

参考方案

  1. 通过使用find函数的方式替换掉index

操作步骤

  1. 通过使用find函数的方式替换掉index

参考答案

 只需要使用find函数替换掉index函数即可,在功能上, find函数index函数完全一致,不同的是index函数在没有查找到关键字的情况下会报ValueError的异常,因此在一般开发环境下通常都会使用find函数

 

题目5 [加强训练]

题干

1,判断单词great是否在字符串words中,如果在,则将每一个great后面加一个s, 如果不在则输出 great不在该字符串中 2,将整个字符串的每一个单词都变成小写,并使每一个单词的首字母变成大写 3,去除首尾的空白,并输出处理过后的字符串

 words = " great craTes Create great craters, But great craters Create great craters "

 

训练目标

  1. 字符串的相关操作

训练提示

  1. 字符串的相关操作来解决上述问题

  2. 使用判断语句来判断语句成立的条件

参考方案

  1. 使用in判断某一个子字符串是否在母字符串中

  2. 使用replace函数替换子字符串

  3. 使用lower函数将字符串变为小写

  4. 使用title函数将单词的首字母大写

  5. 使用strip函数去除字符串首尾的空白

操作步骤

  1. 使用in判断某一个子字符串是否在母字符串中

  2. 使用replace函数替换子字符串

  3. 使用lower函数将字符串变为小写

  4. 使用title函数将单词的首字母大写

  5. 使用strip函数去除字符串首尾的空白

参考答案

words = " great craTes Create great craters, But great craters Create great craters "

# 判断单词great是否在这个字符串中
if 'great' in words:
	# 将每一个great替换成greats
    words = words.replace("great", "greats")

    # 将单词变成小写
    words = words.lower()

    # 将每一个单词的首字母都大写
    words = words.title()

    # 去除首尾的空白
    words = words.strip()

    # 最后进行输出
    print(words)

else:
    print("great不在该字符串中")

2、列表

题目1 [加强训练]

题干

有一个列表,判断列表中的每一个元素是否以s或e结尾,如果是,则将其放入一个新的列表中,最后输出这个新的列表

 list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]

训练目标

让学员知道列表的循环和值的获取,以及列表的操作方法

训练提示

  1. 如何找到列表中的每一个元素?

  2. 如何判断列表中的元素以什么字符结尾?

参考方案

  1. 使用循环遍历的方式获取列表中的每一个元素?

  2. 列表中的元素为字符串,所以可以使用下标[-1] 来获取最后一个字符的值,然后判断.

 

操作步骤

  1. 遍历列表中的每一个元素

  2. if 判断 最后一个字符是否是s或者e

  3. 如果是,使用 append() 方法,将数据追加到新的列表中.

 

参考答案

 my_list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]
 ​
 # 用来存放以e或者s结尾的字符串
 new_list = []
 ​
 for i in my_list:
     # 判断列表中每一个元素是否以s或e结尾
     if i[-1] == 's' or i[-1] == 'e':
         new_list.append(i)
 ​
 # 打印出这个新的列表
 print(new_list)

方法二:

使用字符串中的方法来判断.

 my_list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]
 ​
 # 用来存放以e或者s结尾的字符串
 new_list = []
 ​
 for i in my_list:
     # 判断列表中每一个元素是否以s或e结尾
     if i.endswith('s') or i.endswith('e'):
         new_list.append(i)
 ​
 # 打印出这个新的列表
 print(new_list)
 ​

 

 

题目2 [加强训练]

题干

给定一个列表,首先删除以s开头的元素,删除后,修改第一个元素为"joke",并且把最后一个元素复制一份,放在joke的后边

 my_list = ["spring", "look", "strange", "curious", "black", "hope"]

训练目标

列表的相关操作

训练提示

  1. 通过for循环遍历列表,获取到每一个元素

  2. 通过列表的操作方法对列表进行修改

参考方案

  1. 通过for循环获取每一个元素

  2. 通过remove删除列表中的元素

  3. 通过insert函数在指定位置插入元素

操作步骤

  1. 通过for循环获取每一个元素,判断是否以s开头

  2. 如果条件成立,则通过remove删除选中的元素

  3. 获取到最后一个元素,通过replace将元素放在指定的位置上

参考答案

 my_list = ["spring", "look", "strange" "curious", "black", "hope"]
 ​
 for i in my_list[:]:
     # 删除以s开头的元素,
     if i[0] == 's':
         my_list.remove(i)
 ​
 # 修改第一个元素为"joke"
 my_list[0] = "joker"
 ​
 # 获取最后一个元素
 last_one = my_list[-1]
 ​
 # 将最后一个元素放在joke的后面
 my_list.insert(1, last_one)
 ​
 print(my_list)

 

题目3 [加强训练]

题干

将下列两个列表合并,将合并后的列表去重,之后降序并输出

 list1 = [11,  4, 45, 34, 51, 90]
 list2 = [4, 16, 23, 51, 0]

 

训练目标

列表操作方法的使用

训练提示

  1. 如何合并两个列表?

  2. 如何进行列表去重?

  3. 如何排序并降序输出?

 

参考方案

  1. 合并列表可以使用 extend()方法或者两个列表相加。

  2. 列表去重有两种方案

  3. 自己实现方法实现,借助一个新的列表,循环遍历原列表,判断元素是否在新的列表中,如果在,遍历下一个元素,如果不在,添加到新的列表中。

  4. 使用 set() 集合去重

  5. sort 函数可以实现排序,参数reverse=True对列表进行倒序排序

操作步骤

1,使用 + 对列表进行拼接(或者使用 extend) 2,列表去重 3,使用sort函数,参数reverse=True对列表进行倒序排序

参考答案

方案 1

 list1 = [11, 4, 45, 34, 51, 90]
 list2 = [4, 16, 23, 51, 0]
 ​
 # 1. 使用 + 合并两个列表
 my_list = list1 + list2
 ​
 # 2. 列表去重
 # 2.1 定义新的空列表保存去重后的数据
 my_list1 = []
 # 2.2 遍历合并后的列表
 for i in my_list:
     # 2.3 判断i 是否在my_list1 中
     if i in my_list1:
         # 2.3.1 如果存在,直接下一次循环
         continue
     else:
         # 2.3.2 将i添加到my_list1 中.
         my_list1.append(i)
 ​
 # 3. 循环结束,得到去重后的列表 my_list1,进行排序
 my_list1.sort(reverse=True)
 ​
 # 4. 输出最后的结果
 print(my_list1)
 ​

 

方案 2 暂时不用管后边会学习

使用集合(set), 去重,

set 也是一个容器,具有自动去重的功能(后续会学习)

目前只需要了解即可.

 list1 = [11, 4, 45, 34, 51, 90]
 list2 = [4, 16, 23, 51, 0]
 ​
 # 列表拼接
 list3 = list1 + list2
 ​
 # 列表去重
 list4 = set(list3)
 list5 = list(list4)
 ​
 # 列表降序输出
 list5.sort(reverse=True)
 ​
 print(list5)

3、元组 tuple

题目1 [加强训练]

题干

有如下两行代码: tuple1 = (2) tuple2 = (2,) 请问tuple1与tuple2有什么不同

训练目标

定义一个元素的元组

训练提示

通过肉眼能看到的只是一个逗号的区别,那么在python里面他是怎么理解的呢?

参考方案

用type()方法来分别对这两个变量进行区别

操作步骤

用type(tuple1),与type(tuple12)的结果进行比较

参考答案

 tuple1 = (2)
 tuple2 = (2,)
 print(type(tuple1))
 print(type(tuple2))
 # 对于tuple1 = (2),python解释器会将小括号理解成一个运算符号,那么这时候 返回的值是一个int类型
 # 所以对于只有一个元素的元组来说,要创建一个元组,那么就必须要加逗号

 

题目2 [加强训练]

题干

有如下代码,请回答问题?

 my_tuple = ("itcast", "python", "CPP", 18, 3.14, True)
  1. 使用下标的方法,输出元组中的元素 "CPP"

  2. 使用 for 循环遍历元组

  3. 使用 while 循环遍历元组

训练目标

  1. 元组的下标操作

  2. 元组的 for 循环遍历

  3. 元组的 while 循环遍历

训练提示

  1. python 中的下标是从 0 开始,还是从 1 开始?

  2. 如何进行 for 遍历?

  3. 如何进行 while 遍历?while 的条件怎么写?

参考方案

  1. 下标从 0 开始,故 CPP 的下标是 2

  2. 使用 for ... in ... 遍历

  3. while 循环,需要使用下标,判断条件可以借助 len()实现

操作步骤

  1. 使用下标的方法,取 CPP 的值

  2. for 循环遍历

  3. while 循环遍历

参考答案

 my_tuple = ("itcast", "python", "CPP", 18, 3.14, True)
 ​
 # 1. 使用下标的方法,输出元组中的元素 `"CPP"`使用下标的方法,
 result = my_tuple[2]
 print(result)
 ​
 # 2. 使用 for 循环遍历元组
 for i in my_tuple:
     print(i)
 ​
 print("-" * 20)
 ​
 # 3. 使用 while 循环遍历元组
 i = 0
 while i < len(my_tuple):
     print(my_tuple[i])
     i += 1
 ​

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Python基础,python,字符串,列表,元组,tuple)