python面试_总结04_字符串练习题
完成下列列表相关的编程题,先运行下列的test函数,在完成每道题之后,都可以通过调用test函数检测所写函数对错
def test(got, expected):
if got == expected:
prefix = '正确!'
else:
prefix = '错误!'
print('%s 你的结果: %s 应该返回的结果: %s' % (prefix, repr(got), repr(expected)))
字符串练习题
习题1
输入一个字符串s,返回由字符串的最前面两个字母和最后两个字母组成的字符串。
例如: 'spring' 返回 'spng', 'is' 返回 'is'
当输入的字符串长度小于2时,返回空字符串
def both_ends(s):
# +++your code here+++
# 当输入的字符串长度小于2时,返回空字符串
if len(s) < 2:
print("字符串长度小于2")
return ""
# 字符串此时 >= 2
# 如果字符串长度等于2,返回自身
if len(s) == 2:
print("字符串长度等于2")
return s
# print("前两个字符:", s[:2])
# print("后两个字符:", s[-2:])
s = s[:2] + s[-2:]
return s
# 可运行代码自测
test(both_ends('spring'), 'spng')
test(both_ends('Hello'), 'Helo')
test(both_ends('a'), '')
test(both_ends('xyz'), 'xyyz')
test(both_ends('is'), 'is')
正确! 你的结果: 'spng' 应该返回的结果: 'spng'
正确! 你的结果: 'Helo' 应该返回的结果: 'Helo'
字符串长度小于2
正确! 你的结果: '' 应该返回的结果: ''
正确! 你的结果: 'xyyz' 应该返回的结果: 'xyyz'
字符串长度等于2
正确! 你的结果: 'is' 应该返回的结果: 'is'
习题2
输入一个字符串s, 返回满足以下条件的字符串
- 1.找出与字符串的第一个字母相同的字母,把它们替换成 '*',除了第一个字母本身以外
例如: 输入'babble', 返回 'ba**le'
提示:使用 s.replace(stra, strb) 函数,可以将字符串 s 中的所有 子字符串stra 替换为 子字符串strb
def fix_start(s):
# +++your code here+++
# 得到第一个字母
str_0 = s[0]
# 这样会全部替换掉
s = s.replace(str_0, "*")
# 这里利用字符串的拼接修复
s = str_0 + s[1:]
return s
# 可运行代码自测
test(fix_start('babble'), 'ba**le')
test(fix_start('aardvark'), 'a*rdv*rk')
test(fix_start('google'), 'goo*le')
test(fix_start('donut'), 'donut')
正确! 你的结果: 'ba**le' 应该返回的结果: 'ba**le'
正确! 你的结果: 'a*rdv*rk' 应该返回的结果: 'a*rdv*rk'
正确! 你的结果: 'goo*le' 应该返回的结果: 'goo*le'
正确! 你的结果: 'donut' 应该返回的结果: 'donut'
习题3
输入字符串 a 和 b, 返回添加以下条件的字符串
- 1.使用空格把两个字符串分隔后合并成一个字符串
- 2.交换两个字符串的最前面的 两个字母
- 3.字符串 a 和 b 的长度都大等于2
例如:
- 'mix', 'pod' -> 'pox mid'
- 'dog', 'dinner' -> 'dig donner'
def mix_up(a, b):
# +++your code here+++
assert len(a) >= 2 and len(b) >= 2, "长度需满足条件"
# 1、得到两个字符串的前两个字母
a_2 = a[:2]
b_2 = b[:2]
# 2、进行字符串拼接(字符串是不可变类型)
a = b_2 + a[2:]
b = a_2 + b[2:]
# 3、使用空格,将两个字符串合并成一个字符串
s = a + " " + b
return s
# 可运行代码自测
test(mix_up('mix', 'pod'), 'pox mid')
test(mix_up('dog', 'dinner'), 'dig donner')
test(mix_up('gnash', 'sport'), 'spash gnort')
test(mix_up('pezzy', 'firm'), 'fizzy perm')
正确! 你的结果: 'pox mid' 应该返回的结果: 'pox mid'
正确! 你的结果: 'dig donner' 应该返回的结果: 'dig donner'
正确! 你的结果: 'spash gnort' 应该返回的结果: 'spash gnort'
正确! 你的结果: 'fizzy perm' 应该返回的结果: 'fizzy perm'
2.1.2.4 习题4
输入一个字符串,返回满足以下条件的字符串
- 1.如果字符串长度大等于3,添加 'ing' 到字符串的末尾
- 2.如果字符串是以 'ing' 结尾的,就在末尾添加 'ly'
- 3.如果字符串长度小于3,返回原字符串
def verbing(s):
# +++your code here+++
# 字符串长度小于3,返回原字符串
if len(s) < 3:
return s
# 字符串长度>=3
# 字符串是以 'ing' 结尾的
if s.endswith("ing"):
# 在末尾添加 'ly'
return s + "ly"
# 字符串长度>=3(且自身不是以"ing"结尾的),添加 'ing' 到字符串的末尾
s = s + "ing"
return s
# 可运行代码自测
test(verbing('hail'), 'hailing')
test(verbing('swiming'), 'swimingly')
test(verbing('do'), 'do')
正确! 你的结果: 'hailing' 应该返回的结果: 'hailing'
正确! 你的结果: 'swimingly' 应该返回的结果: 'swimingly'
正确! 你的结果: 'do' 应该返回的结果: 'do'
习题5
考虑把一个字符串拆分成两个等分
- 1.如果字符串长度是偶数,前一半和后一半的长度是相同的
- 2.如果字符串长度是奇数,则多出的一个字符加到前一半,如:'abcde',前一半是'abc',后一半是'de'
- 3.输入两个字符串, a 和 b,按以下格式返回结果
- a-front + b-front + a-back + b-back
def front_back(a, b):
# +++your code here+++
# 得到a和b的长度
a_len = len(a)
b_len = len(b)
# 如果是偶数
if a_len % 2 == 0:
# 前一半的索引
# print(a_len / 2) 2.0
a_mid = int(a_len / 2) # 必须要类型转换,否则是浮点型
# 如果是奇数
else:
a_mid = int((a_len + 1) / 2)
# 如果是偶数
if b_len % 2 == 0:
# 前一半的索引
b_mid = int(b_len / 2)
# 如果是奇数
else:
b_mid = int((b_len + 1) / 2)
# 1、分别取出两个字符串的前半部分
front = a[:a_mid] + b[:b_mid]
# 2、后半部分
back = a[a_mid:] + b[b_mid:]
return front + back
# 可运行代码自测
test(front_back('abcd', 'xy'), 'abxcdy')
test(front_back('abcde', 'xyz'), 'abcxydez')
test(front_back('Kitten', 'Donut'), 'KitDontenut')
正确! 你的结果: 'abxcdy' 应该返回的结果: 'abxcdy'
正确! 你的结果: 'abcxydez' 应该返回的结果: 'abcxydez'
正确! 你的结果: 'KitDontenut' 应该返回的结果: 'KitDontenut'
python面试_总结04_字符串练习题的更多相关文章
- python面试_总结03_列表练习题
1.列表练习题 完成下列列表相关的编程题,先运行下列的test函数,在完成每道题之后,都可以通过调用test函数检测所写函数对错. def test(got, expected): if got == ...
- python面试_总结02_代码题
- 代码题 1.创建一个函数,接收一个字符串参数,判断其做为Python标识符是否合法. 具体要求: 如果合法则输出 True,否则输出 False. 如果该字符串与Python内置的关键字,或Bif ...
- python面试_总结01_概念和内置高阶函数
- 简答题 1.请谈谈Python中is 和 == 的区别(代码演示) is用于比较两个变量是否引用了同一个内存地址,is表示的是对象标识符(object identity),作用是用来检查对象的标识 ...
- HashTable集合和练习题_计算一个字符串中每一个字符出现的次数
HashTable集合 /** * java.util.Hashtable<K,V>集合 implement Map<K,V>接口 * Hashtable:底层也是一个哈希表, ...
- Python面试简介及并行并发
今天的分享内容大体如下: 一. 面试 1. 什么是面试 2. 优秀的面试 二. Python综述 1. Python设计哲学及版本变迁 2. Python发展现状及其他语言使用场景 3. GIL 4. ...
- python面试大全
问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Par ...
- Python递归_打印节点信息
Python递归_打印节点信息 递归特性:1.必须由一个明确的结束条件2.每次进入更深一层递归时,问题规模相比上一次递归都应该有所减少3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用时 ...
- Python replace() 和 re.sub() 字符串字符替换
Python replace() 和 re.sub() 字符串字符替换 replace() testStr = 'aa:bb[cc' testStr.replace(':','_') 每次只能替换一个 ...
- Python面试 【315+道题】
Python面试 [315+道题] 第一部分 Python基础篇(80题) 为什么学习Python? 因为看到python的发展趋势,觉得需要与时俱进,第一点,python开发速度极快,能快速完成一个 ...
随机推荐
- linux编译安装(全面教程解析)
目录 一:编译安装 1.编译安装特点 2.编译安装 简介 编译安装 1.使用源代码,编译打包软件 2,编译安装,只能按照源代码 一:编译安装 1.编译安装特点 1.可以自定制软件 2.按需求构建软件 ...
- CICD流程
1.开发者git提交代码至gitlab仓库 2.jenkins从gitlab拉取代码,触发镜像构建 3.镜像上传至harbor私有仓库 4.镜像下载至执行机器--k8s node kubelet 5. ...
- 分页方法需要参数(当前页数,总数据量,拿到query的值)
class Pagination: def __init__(self, page_num, all_count ,params=None,per_num=10,max_show=11): " ...
- linux 环境变量配置方式
linux 环境变量可以在多个文件中配置 说明: linux bash 运行模式分为两种: login shell 和non-login shell, 两种登录模式启动是加载的配置文件不一样. 1. ...
- R-B Tree
1.简介 R-B Tree,全称Red-Black Tree,又称为"红黑树",为一种自平衡二叉查找树(特殊的平衡二叉树,都是在插入和删除操作时通过特定操作保持二叉树的平衡,从而获 ...
- 「CTSC 2011」幸福路径
[「CTSC 2011」幸福路径 蚂蚁是可以无限走下去的,但是题目对于精度是有限定的,只要满足精度就行了. \({(1-1e-6)}^{2^{25}}=2.6e-15\) 考虑使用倍增的思想. 定义\ ...
- 2020-11-21 f
题意:给定一个长度为 \(n\) 的序列 \(A\),\(A_i \in [0, 2 ^ k)\).定义 \(f(x)\) 为 \(A_1\) ^ \(x\),\(A_2\) ^ \(x \cdots ...
- 对axios的理解
axios是基于promise的,可以使用promise api axios的请求方式 axios(config) axios.request(config) axios.get(url [,conf ...
- JAVA异常与异常处理详解【转】
感谢!!!原文地址:https://www.cnblogs.com/knightsu/p/7114914.html 一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在ja ...
- React凤凰项目规范
技术资源 基础语法 ES6 TS 框架 React Redux React-redux React-Router UmiJS Dva 组件库 AntDesign AntV 构建编译 Webpack b ...