zoukankan      html  css  js  c++  java
  • 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'
  • 相关阅读:
    泛微云桥e-Bridge 目录遍历,任意文件读取
    (CVE-2020-8209)XenMobile-控制台存在任意文件读取漏洞
    selenium 使用初
    将HTML文件转换为MD文件
    Python对word文档进行操作
    使用java安装jar包出错,提示不是有效的JDK java主目录
    Windows server 2012安装VM tools异常解决办法
    ifconfig 命令,改变主机名,改DNS hosts、关闭selinux firewalld netfilter 、防火墙iptables规则
    iostat iotop 查看硬盘的读写、 free 查看内存的命令 、netstat 命令查看网络、tcpdump 命令
    使用w uptime vmstat top sar nload 等命令查看系统负载
  • 原文地址:https://www.cnblogs.com/kongweisi/p/12097470.html
Copyright © 2011-2022 走看看