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'
  • 相关阅读:
    「CF1380G」 Circular Dungeon
    「CF1208G」 Polygons
    P4827「国家集训队」 Crash 的文明世界
    「CF85E」 Guard Towers
    「BZOJ 2956」模积和
    「HEOI2016/TJOI2016」排序
    CF277E Binary Tree on Plane
    「SDOI2016」数字配对
    HNOI2020「Elegy」
    CSP-S2019「Symphony」
  • 原文地址:https://www.cnblogs.com/kongweisi/p/12097470.html
Copyright © 2011-2022 走看看