ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## **第1章 字符串练习题** ### 1.1交换 已知 a的值为"hello",b的值为"world",如何交换a和b的值? 得到a的值为"world",b的值为"hello" ### 1.2回文 回文的定义:"回文" 就是正读倒读都一样的。 如奇数个:"98789",这个数字正读是"98789" 倒读也是"98789"。 偶数个数字"3223"也是回文数。 字母 "abcba" 也是回文。 判断一个字符串是否是回文字符串,是打印True, 不是打印False ### 1.3字符串切割 已知一个字符串为 "hello\_world\_yoyo", 如何得到一个队列 \["hello","world","yoyo"\] ### 1.4拼接字符串 有个列表 \["hello", "world", "yoyo"\]如何把把列表里面的字符串联起来, 得到字符串 "hello\_world\_yoyo" ### 1.5替换字符 把字符串 s 中的每个空格替换成"%20" 输入:s = "We are happy." 输出:"We%20are%20happy." ### 1.6九九乘法表 打印99乘法表 ### 1.7字符下标 找出单词 "welcome" 在 字符串"Hello, welcome to my world." 中出现的位置,找不到返回-1 从下标0开始索引 ### 1.8 统计字符出现的次数 统计字符串“Hello, welcome to my world.” 中字母w出现的次数 统计单词 my 出现的次数 ### 1.9 统计每个字符出现的次数 题目:输入一个字符串str, 输出第m个只出现过n次的字符,如在字符串 gbgkkdehh 中, 找出第2个只出现1 次的字符,输出结果:d ### 1.10 判断字符a含b 判断字符串a="welcome to my world" 是否包含单词b="world" 包含返回True,不包含返回 False ### 1.11 查找字符首次出现位置 输出指定字符串A在字符串B中第一次出现的位置,如果B中不包含A,则输出-1 从 0 开始计数 A = "hello" B = "hi how are you hello world, hello yoyo !" ### 1.12 查找字符串最后一次出现位置 输出指定字符串A在字符串B中最后出现的位置,如果B中不包含A,则输出-1 从 0 开始计数 A = "hello" B = "hi how are you hello world, hello yoyo !" ### 1.13判断奇数偶数 给定一个数a,判断一个数字是否为奇数或偶数 a1 = 13 a2 = 10 ### 1.14判断一个姓名是否姓王 输入一个姓名,判断是否姓王 a = "王五" b = "老王" ### 1.15判断是不是数字 如何判断一个字符串是不是纯数字组成 a = "123456" b = "yoyo123" ### 1.16字符串大小写转换 将字符串 a = "This is string example....wow!" 全部转成大写 字符串 b = "Welcome To My World" 全部转成小写 ### 1.17字符串去掉首尾空格 将字符串 a = " welcome to my world "首尾空格去掉 ### 1.18字符串去掉左边指定空格或字符 将字符串a = " welcome to my world !"左边的空格去掉 ### 1.19字符串去掉右边指定空格或字符 将字符串a = " welcome to my world ! "右边的空格去掉 ### 1.20 去除字符串里面所有的空格 将字符串a = " welcome to my world ! "里面的所有空格都去掉 ### 1.21字符串去重后排序 s = "ajldjlajfdljfddd",去重并从小到大排序输出"adfjl" ### 1.22字符串去重保留顺序 s = "ajldjlajfdljfddd",去重保留原来的顺序,输出"adfjl" ### 1.23画菱形 题目 打印出如下图案(菱形): ![](https://img2020.cnblogs.com/blog/1070438/202103/1070438-20210330232542307-1908074064.png) ### 1.24 输入一个正整数,判断是几位数 题目 给一个不多于5位的正整数,要求: 一、求它是几位数, 二、逆序打印出各位数字。 a = 12345 <br /> ## **第2章 小学数学题** ### 2.1.水仙花数 如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。 例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数 那么问题来了,求1000以内的水仙花数(3位数) ### 2.2完全数 如果一个正整数等于除它本身之外其他所有除数之和,就称之为完全数。 例如:6是完全数,因为6 = 1+2+3; 下一个完全数是28 = 14+7+4+2+1。 求1000以下的完全数 ### 2.3 数字1-100求和 求1+2+3…+100和 ### 2.4计算求1-2+3-4+5-…-100的值 计算求1-2+3-4+5-…-100的值 ### 2.5计算求1+2-3+4-5... ...100 的值 计算求1+2-3+4-5... ...100 的值 ### 2.6计算 1-n 之间的所有 5 的倍数之和 定义一个函数:计算 1-n 之间的所有 5 的倍数之和,默认计算 1-100 ( n 是 一个整数) ### 2.7 n个自然数的立方和 计算公式 13 + 23 + 33 + 43 + …….+ n3 实现要求: 输入 : n = 5 输出 : 225 对应的公式 : 13 + 23 + 33 + 43 + 53 = 225 ### 2.8 阶乘10! 阶乘的意思: 10!=10x9x8x7x6x5x4x3x2x1 求10! ### 2.9求1+2!+3!+...+10!的和 求1+2!+3!+...+10!的和 ### 2.10求s=a+aa+aaa+aaaa+aa...a的值 求s=a+aa+aaa+aaaa+aa...a的值 ~~~ 如:n = 5 a = 3 33333 = 3x10**4+ 3x10**3+ 3x10**2 + 3x10**1 +3x10**0 ~~~ ### 2.11 斐波那契数列1、1、2、3、5、8、13 ..... 已知一个数列:1、1、2、3、5、8、13 ..... 的规律为从 3 开始的每一项都等于其前两项的和,这是斐波那契数列。 求满足规律的 100 以内的所有数据 <br /> ## **第3章 列表练习题** ### **3.1 反转(判断对称)** 如何判断一个数组是对称数组: 要求:判断数组元素是否对称。例如\[1,2,0,2,1\],\[1,2,3,3,2,1\]这样的都是对称数组 用Python代码判断,是对称数组打印True,不是打印False,如: x = \[1, "a", 0, "2", 0, "a", 1\] ### **3.2列表切片** 如果有一个列表a=\[1,3,5,7,11\] 问题: 1如何让它反转成\[11,7,5,3,1] 2.取到奇数位值的数字,如\[1,5,11] ### **3.3列表大小排序** 问题:对列表a 中的数字从小到大排序 a = \[1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8\] ### **3.4 取出最大值最小值** L1 = \[1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88\] 找出列表中最大值和最小值 ### **3.5 找出列表中单词最长的一个** a = ["hello", "world", "yoyo", "congratulations"] 找出列表中单词最长的一个 ### **3.6 切片取出列表中最大的三个数** 取出列表中最大的三个值 L1 = \[1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88\] ### **3.7列表按绝对值排序** a = \[1, -6, 2, -5, 9, 4, 20, -3\] 按列表中的数字绝对值从小到大排序 ### **3.8按字符串长度排序** b = \["hello", "helloworld", "he", "hao", "good"\] 按list里面单词长度倒叙 ### **3.9去重与排序** L1 = \[1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88\] 如何用一行代码得出\[1, 2, 3, 5, 11, 33, 88\] L2 = \[1, 2, 3, 4, 5\] ,L\[10:\]结果是多少(报错?还是None,还是\[\]) ### **3.10 去重保留顺序** 将列表中的重复值取出(仅保留第一个),要求保留原始列表顺序 如a=\[3, 2, 1, 4, 2, 6, 1\] 输出\[3, 2, 1, 4, 6\] ### **3.11 列表合并** a = \[1, 3, 5, 7\] b = \['a', 'b', 'c', 'd'\] 如何得到\[1, 3, 5, 7, 'a', 'b', 'c', 'd'\] ### **3.12 生成列表(列表推导式)** 用一行代码生成一个包含 1-10 之间所有偶数的列表 ### 3.13 列表成员的平方 列表a = \[1,2,3,4,5\], 计算列表成员的平方数,得到\[1,4,9,16,25\] ### 3.14 找出列表大于0的数 使用列表推导式,将列表中a = \[1, 3, -3, 4, -2, 8, -7, 6\] 找出大于0的数,重新生成一个新的列表 ### 3.15统计列表有多少大于0 统计在一个队列中的数字,有多少个正数,多少个负数,如\[1, 3, 5, 7, 0, -1, -9, -4, -5, 8\] ### 3.16列表排除筛选 a = \["张三","张四","张五","王二"\] 如何删除姓张的 ### 3.17列表过滤(filter) 题1:有个列表a = \[1, 3, 5, 7, 0, -1, -9, -4, -5, 8\] 使用filter 函数过滤出大于0的数 题2:列表b = \["张三", "张四", "张五", "王二"\] 过滤掉姓张的姓名 ### 3.18过滤列表中不及格学生(filter) 过滤掉列表中不及格的学生 a = \[ {"name": "张三", "score": 66}, {"name": "李四", "score": 88}, {"name": "王五", "score": 90}, {"name": "陈六", "score": 56}, \] ### 3.19找出列表中最大数出现的位置 有个列表 a = \[1, 2, 3, 11, 2, 5, 88, 3, 2, 5, 33\] 找出列表中最大的数,出现的位置,下标从0开始 ### 3.20找出列表中出现次数最多的元素 a = \[ 'my', 'skills', 'are', 'poor', 'I', 'am', 'poor', 'I', 'need', 'skills', 'more', 'my', 'ability', 'are', 'so', 'poor' \] 找出列表中出现次数最多的元素 ### 3.21分别统计列表中每个成员出现的次数 a = [ 'my', 'skills', 'are', 'poor', 'I', 'am', 'poor', 'I', 'need', 'skills', 'more', 'my', 'ability', 'are', 'so', 'poor' ] ### **3.22 列表查找元素位置** 给定一个整数数组A及它的大小n,同时给定要查找的元素val, 请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。 若该元素出现多次请返回第一个找到的位置 如 A1=[1, "aa", 2, "bb", "val", 33] 或 A2 = [1, "aa", 2, "bb"] ### **3.23列表查找两数之和** 给定一个整数数组nums 和一个目标值target ,请你在该数组中找出和为目标值的那两个整数,并返回他 们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定nums=[2,7,11,15],target=9 因为nums[0\] + nums[1] =2+7 = 9 所以返回[0, 1] ### **3.24二维数组取值(矩阵)** 有 a = \[\["A", 1\], \["B", 2\]\] ,如何取出 2 ### **3.25 二维数组拼接** a = \[\[1,2\],\[3,4\],\[5,6\]\] 如何一句代码得到 \[1, 2, 3, 4, 5, 6\] ### 3.26 列表转字符串 L = \[1, 2, 3, 5, 6\],如何得出 '12356'? ### 3.27 两个列表如何得到字典 a = \["a", "b", "c"\] b = \[1, 2, 3\] 如何得到 {'a': 1, 'b': 2, 'c': 3} ### 3.28列表按age从小到大排序 如下列表 people = \[ {"name":"yoyo", "age": 20}, {"name":"admin", "age": 28}, {"name":"zhangsan", "age": 25}, \] 按年龄age从小到大排序 ### 3.29列表插入元素 现有 nums=\[2, 5, 7\] ,如何在该数据最后插入一个数字 9 ,如何在2后面插入数字0 ### 3.30打乱列表顺序随机输出 有个列表a = \[1, 2, 3, 4, 5, 6, 7, 8, 9\] 如何打乱列表a的顺序,每次得到一个无序列表 <br /> ## **第4 章 元祖字典集合** ### 4.1 输出1-100除3余1 的数,结果为tuple 输出1-100除3余1 的数,结果为tuple ### 4.2 把2个元祖转字典 将('a', 'b', 'c', 'd', 'e') 和 (1,2, 3, 4, 5)两个tuple转成 (1, 2, 3, 4, 5)为key, ('a', 'b', 'c', 'd', 'e') 为value的字典 ### 4.3 把字典的value值转成str 将字典里的值是数值型的转换为字符串,如a = {'aa': 11, 'bb': 222} 得到{'aa': '11', 'bb': '222'} ### 4.4 (1)和(1,)区别,\[1\]和\[1,\] a = \[1,2,3\] 和 b = \[(1),(2),(3) \] 以及 c = \[(1,),(2,),(3,) \] 的区别? ### 4.5 map函数将\[1,2,3,4\]处理成\[1,0,1,0\] map函数,有个列表a = \[1, 2, 3, 4\] 计算列表中每个数除以2 取出余数 得到 \[1,0,1,0\] ### 4.6 map函数将列表\[1,2,3,4,5\]转变成\[1,4,9,16,25\] map函数将列表 \[1,2,3,4,5\] 使用python方法转变成 \[1,4,9,16,25\] ### 4.7 map函数a=\[1,3,5\],b=\[2,4,6\]相乘得到\[2,12,30\] map函数对列表a=\[1,3,5\],b=\[2,4,6\]相乘得到\[2,12,30\] ### 4.8 reduce函数计算1-100的和 reduce函数计算1-100的和 ### 4.9 reduce函数计算10! reduce函数计算1!+2!+3!+。。。+10! ### 4.10 两个字典合并a={"A":1,"B":2},b={"C":3,"D":4} 两个字典合并a={"A":1,"B":2},b={"C":3,"D":4} ### 4.11 {'a':1,'b':2,'c':1} 得到 {1:\['a','c'\],2:\['b'\]} m1={'a':1,'b':2,'c':1} # 将同样的value的key集合在list里,输出{1:\['a','c'\],2:\['b'\]} ### 4.12 字典按key排序d={"name":"zs","age":18,"} d={"name":"zs","age":18,"city":"深圳","tel":"1362626627"} 字典根据键从小到大排序 ### 4.13 集合(交集、差集、并集) a = \[2, 3, 8, 4, 9, 5, 6\] b = \[2, 5, 6, 10, 17, 11\] 1.找出a和b中都包含了的元素 2.a或b中包含的所有元素 3.a中包含而集合b中不包含的元素 <br /> ## **第5章 综合练习题(上机考试)** ### 5.1 有1、2、3、4组成无重复数的三位数(排列组合) 有1、2、3、4数字能组成多少互不相同无重复数的三位数? 分别打印这些三位数的组合 ### 5.2 冒泡排序 a = [11, 2, 33, 1, 5, 88, 3\] 冒泡排序: 依次比较两个相邻的元素,如果顺序(如从小到大、首字母从A到Z) 错误就把他们交换过来 ### 5.3文本中每行中长度超过3的单词 在以下文本中找出 每行中长度超过3的单词: Call me Ishmael. Some years ago - never mind how long precisely - having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world. It is a way I have of driving off the spleen, and regulating the circulation. - Moby Dick python的预期结果(尽量不超过3行搞定): \[\['Call', 'Ishmael.', 'Some', 'years', 'never', 'mind', 'long', 'precisely', 'having'\], \['little', 'money', 'purse,', 'nothing', 'particular', 'interest'\], \['shore,', 'thought', 'would', 'sail', 'about', 'little', 'watery', 'part'\], \['world.', 'have', 'driving', 'spleen,', 'regulating'\], \['circulation.', 'Moby', 'Dick'\]\]\] ### 5.4 列表数据写入txt(open读写) 有一个数据list of dict如下 a = \[ {"yoyo1": "123456"}, {"yoyo2": "123456"}, {"yoyo3": "123456"}, \] 写入到本地一个txt文件,内容格式如下: yoyo1,123456 yoyo2,123456 yoyo3,123456 ### 5.5 判断邮箱程序(正则) 写一个小程序:控制台输入邮箱地址(格式为 username@companyname.com), 程序识别用户名和公司名后,将用户名和公司名输出到控制台。 要求: 1. 校验输入内容是否符合规范(xx@yy.com), 如是进入下一步,如否则抛出提 示"incorrect email format"。注意必须以.com 结尾 2. 可以循环“输入--输出判断结果”这整个过程 3. 按字母 Q(不区分大小写)退出循环,结束程序 ### 5.6判断一个字符串的括号自否闭合(栈) 判断一个字符串的括号自否闭合(包括大小中括号) 左括号和右括号必须是一一对应 ~~~ 比如:{[{()}]()} 就是一个闭合的字符串 {[{()}]([)]} 这个里面 ([)] 这种就是不闭合 ~~~ ### 5.7 计算纯数字子串组成的单一数字(子串) 有一个纯数字组成的字符串, 返回连续单一数字子串的个数 输入字符串: “22252” 只含单一数字的子串是 1个字符:2出现4次,5出现1次 2个字符 22 出现2 次 3个字符 222 出现1 次 4个子串 0次 5个字符 0次 总共 4+1+2+1 =8 输出结果:8 示例: 输入:22252 输出: 8 ### 5.8 移除字符串里面的'ab' 有一个字符串列表\['aababbc', 'badabcab'\] 将字符串中的'ab' 移除 比如'aababbc' 移除里面的ab后得到abc 需继续移除ab,得到c,直到字符串中不会出现连续的ab ### 5.9看代码得结果(join用法) x="abc",y="def",z=\["d","e","f"\], 分别求出x.join(y) 和x.join(z)返回的结果 ### 5.10 看代码得结果(类和继承) 阅读以下代码,打印结果是什么? ~~~ class A(object): def __init__(self): self.__Gender() self.Name() def __Gender(self): print("A.__Gender()") def Name(self): print("A.Name()") class B(A): def __Gender(self): print("B.__Gender()") def Name(self): print("B.Name()") b = B() ~~~ ### 5.11 看代码得结果(闭包) 阅读以下代码,得到的结果是什么 ~~~ def fun(): temp = [lambda x: i*x for i in range(4)] return temp for everyLambda in fun(): print(everyLambda(2)) ~~~ ### 5.12看代码得结果(列表推导式) ~~~ A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5))) A1 = range(10) A2 = [i for i in A1 if i in A0] A3 = [A0[s] for s in A0] A4 = [i for i in A1 if i in A3] A5 = {i:i*i for i in A1} A6 = [[i,i*i] for i in A1] ~~~ ### 5.13 看代码得结果(函数) 阅读以下代码,得到什么结果 ~~~ def f(x,l=[]): for i in range(x): l.append(i*i) print l f(2) f(3,[3,2,1]) f(3) ~~~ ### 5.14 看代码得结果(深拷贝和浅拷贝) 写出以下程序的输出结果 ~~~ from copy import deepcopy, copy li = [1, 2, [3, 4]] li_sliced = li[:] li_copied = copy(li) li_deep_copied = deepcopy(li) li[0] = 888 li[2][0] = 666 print(li_sliced, li_copied, li_deep_copied) ~~~ ### 5.15 map reduce filter的使用 分别使用map reduce filter 函数完成下面的任务 1.计算 1- 100 的和 2.1-10,对每个数字的平方 3\. \["a", "ab", "abc", "bc", "cd"\] 输出含有c字符的元素,返回值是list ### 5.16 通过切片操作完成以下任务(切片) 有个字符串为"abcdefg.exe" 通过切片完成下面的任务 1.输出前3个字符 2.输出后2个字符 3.倒叙输出 4.间隔1个字符串输出 ### 5.17 根据列表数字出现次数排序去重(排序) a=\[1,2,1,2,2,2,3,4,5,6,56,7,1,3,4\] 按列表中数字出现的次数,从高到低排序,并去除重复的 比如2出现了4次,排第一个位置。1出现了3次,于是可以得到:\[2, 1, 3, 4, 5, 6, 7, 56\] ### 5.18 补缺失的代码-给个路径查找文件(递归) def print\_directory\_contents(sPath): """ 这个函数接受文件夹的名称作为输入参数, 返回该文件夹中文件的路径, 以及其包含文件夹中文件的路径。 """ ### 5.19 如何判断一个字符串有没有重复字符 判断一个字符串是否包含重复字符。例如:“hello”就包含重复字符‘l’,而“world”就不包含重复字符, 有重复打印True, 没重复打印False ### 5.20 找出一个字符串中子串不含有重复字符的最长子串(子串) 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例1: 输入:" abcabcbb" 输出: 3 解释:因为无重复字符的最长子串是"abc", 所以其长度为3。 示例2: 输入: "bbbbb"" 输出: 1 解释:因为无重复字符的最长子串是"b", 所以其长度为1。 示例3: 输入: " pwwkew" 输出: 3 解释:因为无重复字符的最长子串是"wke"', 所以其长度为3。 请注意,你的答案必须是子串的长度,"pwke"是一个子序列,不是子串。 ### 5.21 一个字符串中所有子串是回文的次数(子串) 回文是指正序(从左向右)和倒序(从右向左)读都是一样的。 例如:121 ,abcdedcba,123321等都是回文 这种的字符串“ABCABADCSABBAUYIIYU”找出回文出现的次数 子串回文是:'BB', 'II','ABA','ABBA', 'YIIY','UYIIYU' 总共有6个 ### 5.22 找出列表中连续的数字,只取首尾(栈) 找出列表中连续的数字,然后只取首尾 有一个列表[1,2,3,4,8,6,7,11,15] 输出[(1,4),(6,8)]