Python学习习题笔记---基础篇

基本数据类型:

1: info = 'abc'

    info[2] = 'd'

    结果是什么,为什么会报错呢?

答: TypeError: 'str' object does not support item assignment

      字符串是不可变数据类型

2: 如果要把上面的字符串info里面的c替换成d,要怎么操作呢?

答: (1). 转换为 list

            info = 'abc'

            a = list(info)

            a[2] = 'd'

            info = ' '.join(a)

      (2). 使用字符串的 replace 函数

            info = 'abc'

            new_info = info.replace('c', 'd')

            print(new_info)

      (3). 使用序列切片方式

            info = 'abcef'

            new_info = info[:2] + 'd' + info[3:]

            print(new_info)

3: 下面2个变量

     a = '1'

     b = 2

     print a + b 的结果是什么,为什么会出现这个结果,如果希望结果是3,要怎么操作?

答: TypeError: must be str, not int     不同类型不能相加

      print(int(a) + b)

4: 字符串: a = 'abcd', 用2个方法取出字母d

答: (1). a[3]

      (2). a[-1]

      (3). b = list(a)

            b.pop()

5: a = 'jay', b = 'python'

    用字符串拼接的方法输出:my name is jay,i love python.

答: (1). a = 'jay'

            b = 'python'

            s = 'my name is %s, i love %s' % (a, b)

            print(s)

      (2). a = 'jay'

            b = 'python'

            s = 'my name is {}, i love {}'.format(a, b)

            print(s)

6: a = 'pyer'    b = 'apple'

    用字典和format方法实现:

    my name is pyer, i love apple.

答: (1). 字典方法:

            a = 'pyer'   

            b = 'apple'

            s = 'my name is {name}, i love {fruit}'.format(name='pyer', fruit='apple')

            print(s)

      (2). format 方法:

            a = 'pyer'

            b = 'apple'

            s = 'my name is {0}, i love {1}'.format(a, b)

            print(s)

7: 打开文件info.txt,并且写入500这个数字。

答: a = open('info.txt', 'w')

      a.write('500')

      a.close()

8: 已经字符串 s = "i,am,lilei",请用两种办法取出之间的“am”字符。

答: (1). s[2:4]

      (2). a = s.split(',')[1]

             print(a)

9: 在python中,如何修改字符串?

答:  (1). 使用字符串的replace函数

       (2). 将字符串转换成列表后修改值,然后用join组成新字符串

       (3). 使用序列切片方式

       使用实例见上第二题

10: bool("2012" == 2012) 的结果是什么。

答: False   

      判断对象的数据类型,尽管看起来数值是一样的,但是他们的类型不同,

      一个是字符串,一个是 数字

11: 已知一个文件 test.txt,内容如下:

      ____________

      2012来了。

      2012不是世界末日。

      2012欢乐多。

      _____________

      1.请输出其内容。

      2.请计算该文本的原始长度。

      3.请去除该文本的换行。

      4.请替换其中的字符"2012"为"2013"。

      5.请取出最中间的长度为5的子串。

      6.请取出最后2个字符。

      7.请从字符串的最初开始,截断该字符串,使其长度为11.

      8.请将{4}中的字符串保存为test1.py文本.

答: f = open('test.txt', 'rb')

      content = f.read().decode('utf-8')    # 将 bytes 转换为 str

      (1).  print(content)

      (2). print(len(content))

      (3). print(content.replace('\n', ''))

      (4). print(content.replace('2012', '2013'))

      (5). a = int(len(content)/2)

            s = content[a : a+5]

            print(s)

      (6). print(content[-2:])

      (7). print(content[:11])

      (8). rinfo = content.replace('2012', '2013')

            f = open('test2.py', 'w')

            f.write(rinfo)

            f.close()

12: 请用代码的形式描述python的引用机制。

答: import sys

     >>> cinfo = '1234'

     >>> print(id(cinfo))

     6909920

     >>> print(sys.getrefcount('1234'))

     3

     >>> binfo = '1234'

     >>> print(id(binfo))

     6909920

     >>> print(sys.getrefcount('1234'))

     4

     >>> dinfo = '1234'

     >>> print(id(dinfo))

     6909920

     >>> print(sys.getrefcount('1234'))

     5

13: 已知如下代码

      ________

      a = "中文编程"

      b = a

      c = a

      a = "python编程"

      b = u'%s' %a

      d = "中文编程"

      e = a

      c = b

      b2 = a.replace("中","中")

      ________

      1.请给出str对象"中文编程"的引用计数

      2.请给出str对象"python编程"的引用计数

答: import sys

      a = "中文编程"            ## 引用计数开始是2,然后a变量引用了字符串("中文编程")对象 2+1=3

      print ("a:%s" % id(a))  ## a:24940176

      b = a                           ## 引用字符串("中文编程")3+1=4

      print ("b:%s" % id(b))  ##  b:24940176

      c = a                           ## 引用字符串("中文编程")4+1=5

      print ("c:%s" % id(c))  ## c:24940176

      print (sys.getrefcount('中文编程'))    ## 输出结果是5

      a = "python编程"        ## 引用字符串("中文编程")5-1=4

      print ("a:%s" % id(a))      ### a:36114784 a引用另外一个字符串("python编程")对象 2+1=3

      b = '%s' % a               ## 引用字符串("中文编程")4-1=3  ### b引用("python编程") 3+1=4

      print ("b:%s" % id(b))      ### c:36114784

      print (sys.getrefcount('中文编程'))      ##输出结果是3

      print (sys.getrefcount('python编程'))        ###输出结果是4

      d = "中文编程"            ## 新建一个变量,引用字符串("中文编程") 3+1=4

      print ("d:%s" % id(d))                          ## d:24940176

      e = a                               ### 引用字符串("python编程")4+1=5

      print ("e:%s" % id(e))      ### e:36114784

      c = b                           ## c引用另外一个字符串("python编程")对象,4-1=3  5+1=6

      print ("c:%s" % id(c))                           ## c:36114784

      print (sys.getrefcount('中文编程'))       ## 输出结果是3

      print(a)                            ### 输出结果是: python编程

      b2 = a.replace("中","中") ### 引用字符串("python编程")6+1=7

      print(b2)                          ### 输出结果是: python编程

      print ("b2:%s" % id(b2))  ### b2:36114784

      print (sys.getrefcount('中文编程'))       ##输出结果是3

      print (sys.getrefcount('python编程'))   ##输出结果是7

14: 七.已知如下变量

      ________

      a = "字符串拼接1"

      b = "字符串拼接2"

      ________

      1.请用四种以上的方式将a与b拼接成字符串c。并指出每一种方法的优劣。

      2.请将a与b拼接成字符串c,并用逗号分隔。

      3.请计算出新拼接出来的字符串长度,并取出其中的第七个字符。

答: (1). c=a + b        # 不适合大量字符串拼接

            c = "%s%s" % (a, b)        # 受顺序限制

            c = "{a}{b}".format(a=a, b=b)        # 未受顺序限制

            c = "".join([a, b])        # 只要申请一次内存

      (2). c=a + ',' + b       

            c = "%s,%s" % (a, b)      

            c = "{a},{b}".format(a=a, b=b)       

            c = ",".join([a, b]) 

      (3). print(len(c))

            print(c[6])

15: 请阅读string模块,并且,根据string模块的内置方法输出如下几题的答案。

      1.包含0-9的数字。

      2.所有小写字母。

      3.所有标点符号。

      4.所有大写字母和小写字母。

      5.请使用你认为最好的办法将{1}-{4}点中的字符串拼接成一个字符串。

答: import string

      (1). a = string.digits

      (2). b = string.ascii_lowercase

      (3). c = string.punctuation

      (4). d = string.ascii_letters

      (5). s1 = ''.join([a, b, c, d])

            s2 = '%s%s%s%s' % (a, b, c, d)

            s3 = a + b + c + d

            s4 = '{}{}{}{}'.format(a, b, c, d)

16: 已知字符串    a = "i,am,a,boy,in,china"

       1.假设boy和china是随时可能变换的,例boy可能改成girl或者gay,而china可能会改成别的国

          家,你会如何将上面的字符串,变为可配置的。

       2.请使用2种办法取出其间的字符"boy"和"china"。

       3.请找出第一个"i"出现的位置。

       4.请找出"china"中的"i"字符在字符串a中的位置。

       5.请计算该字符串一共有几个逗号。

答: a = "i,am,a,boy,in,china"

      (1). ac = "i,am,a,%(sex)s,in,%(country)s" % {'sex': 'girl', 'country': 'china'}

            bc = "i,am,a,{sex},in,{country}".format(sex='girl', country='china')

      (2). 方法一:

            print(a[7:10])

            print(a[-5:])

            方法二:

            cinfo = a.split(',')

            print(cinfo[3])

            print(cinfo[-1])

      (3). print(a.find('i'))

            print(a.index('i'))

      (4). print(a.find('i', a.find('china')))

            print(a.rfind('i'))

      (5). print(a.count(','))

17: 请将模块string的帮助文档保存为一个文件。

答: import sys

      import string

      f = open('string_help.log', 'w')

      sys.stdout = f

      help(string)

      f.close()

基本数据结构---列表 元组 集合 字典

1: 下面列表:

     a = [1,2,3,4,5,333,11,44]

     输出下面的结果:

     [4,5,333]

答: print(a[3:6])

2: 有下面2个列表

    a = [1,2,3]

    b = [4,5,6]

    用2个方法输出下面结果:

    [1,2,3,4,5,6]

答: (1). for i in b:

                a.append(i)

            print(a)

      (2). a.extend(b)

      (3). a + b

3: 有下面2个列表:

    a = [1,99,33,44,55,22]

    输出结果:

    1:[1,2,99,33,44,55,22,(11,33,54)]

    2: [1,2,99,33,101,44,55,22]

答: (1). a = [1,99,33,44,55,22]

            b = (11, 33, 54)

            a.insert(1, 2)

            a.append(b)

      (2). a = [1,99,33,44,55,22]

            a.insert(1, 2)

            a.insert(4, 101)

            print(a)

4: 用列表推导式生成100内的大于20的偶数

答: [x for x in range(21, 101) if x%2==0]

5: 已知:元组 a = (1,2,3) 利用list方法,输出下面的结果:(1,2,4)

答: a = (1, 2, 3)

      b = list(a)

      b[-1] = 4

      a = tuple(b)

6: 利用列表推导完成下面习题:

    1 输出结果:[1 love python,2 love python,3 love python,.... 10 love python]

    2 输出结果:[(0,0),(0,2),(2,0),(2,2)]

答: (1). ['%s love python' % s for s in range(1, 11)] 

            ['{} love python'.format(i) for i in range(1, 11)]

      (2). [(x, y) for x in range(3) for y in range(3) if x%2==0 and y%2==0]

7: 元组;a = (1,2,3)

    有2种方法输出实现下面的结果:(5,2,3), 判断2是否在元组里

答: a = (1, 2, 3)

      b = list(a)

      b[0] = 5

      a = tuple(b)

      print(a)

      print(2 in a)

8: 集合a = set(['a','b','c'])做下面的操作:

    1 添加字符串'jay'到集合a里。

    2 集合b = set(['b','e','f','g']) 用2种方法求集合a 和集合b的并集。

答: (1). a.add('jay')

      (2). a | b

            for i in b:

                a.add(i)

            print(a)

9: 已知字典:ainfo = {'ab':'liming','ac':20}, 完成下面的操作

    1 使用2个方法,输出的结果:

    ainfo = {'ab':'liming','ac':20,'sex':'man','age':20}

    2 输出结果:['ab','ac']

    3 输出结果:['liming',20]

    4 通过2个方法返回键名ab对应的值。

    5 通过2个方法删除键名ac对应的值。

答: (1). 方法一: ainfo['sex'] = 'man'

            方法二: ainfo.update({'sex':'man'})

      (2). ainfo.keys()

      (3). ainfo.values()

      (4). 方法一: ainfo.get('ab')

            方法二:  list(ainfo.values())[0]

      (5). 方法一: del ainfo['ac']

            方法二: ainfo.pop('ac')

10: 列表a = [11,22,24,29,30,32]

      1 把28插入到列表的末端

      2 在元素29后面插入元素57

      3 把元素11修改成6

      4 删除元素32

      5 对列表从小到大排序

答: (1). a.append(28)

      (2). a.insert(4, 57)

      (3). a[0] = 6

      (4). a.pop()

            del a[-1]

      (5). a.sort()

11: 列表b = [1,2,3,4,5]

      1 用2种方法输出下面的结果:[1,2,3,4,5,6,7,8]

      2 用列表的2种方法返回结果:[5,4]

      3 判断2是否在列表里

答: (1). 方法一: b.extend([6, 7, 8])

            方法二: c = b + [6, 7, 8]

      (2). 方法一:

            b = [1,2,3,4,5]

            print(b[-1:-3:-1])

            方法二:

            c = []

            c.append(b.pop())

            c.append(b.pop())

            print(c)

      (3). if 2 in b:

                print('2 in b')

12: b = [23,45,22,44,25,66,78]

      用列表解析完成下面习题:

      1 生成所有奇数组成的列表

      2 输出结果: ['the content 23','the content 45']

      3 输出结果: [25, 47, 24, 46, 27, 68, 80]

答: (1). [i for i in b if i%2==1]

      (2). ['the content %s' % s for s in b[:2]]

      (3). [i+2 for i in b]

13: 用range方法和列表推导的方法生成列表:[11,22,33]

答: range 方法:

      print(range(11, 34, 11))

      列表推导方法:

      [m*11 for m in range(1, 4)]

14: 已知元组:a = (1,4,5,6,7)

      1 判断元素4是否在元组里

      2 把元素5修改成8

答: (1). if 4 in a:

                print('4 in a')

      (2). b = list(a)

            b[2] = 8

            a = tuple(b)

            print(a)

15: 已知集合:setinfo = set('acbdfem')和集合finfo = set('sabcdef')完成下面操作:

      1 添加字符串对象'abc'到集合setinfo

      2 删除集合setinfo里面的成员m

      3 求2个集合的交集和并集

答: (1). setinfo.add('abc')

      (2). setinfo.remove('m')

      (3). setinfo | finfo     # 并集

            setinfo & finfo    # 交集

16: 用字典的方式完成下面一个小型的学生管理系统。

      1 学生有下面几个属性:姓名,年龄,考试分数包括:语文,数学,英语得分。

      比如定义2个同学:

      姓名:李明,年龄25,考试分数:语文80,数学75,英语85

      姓名:张强,年龄23,考试分数:语文75,数学82,英语78

      2 给学生添加一门python课程成绩,李明60分,张强:80分

      3 把张强的数学成绩由82分改成89分

      4 删除李明的年龄数据

      5 对张强同学的课程分数按照从低到高排序输出。

      6 外部删除学生所在的城市属性,不存在返回字符串 beijing

答: (1). student = {'liming':{'name':'李明', 'age':25, 'score':{'chinese':80, 'math':75, 'english':85}}}

            student['zhangqiang'] = {'name':'张强', 'age':23, 'score':{'chinese':75, 'math':82, 'english':78}}

      (2). student['liming']['score']['python'] = 60

            student['zhangqiang']['score']['python'] = 80

      (3). student['zhangqiang']['score']['math'] = 89

      (4). student['liming'].pop('age')

            del student['zhangqiang']['age']

      (5). binfo = list(student['zhangqiang']['score'].values())

            binfo.sort()

            print(binfo)

      (6). student.pop('city', 'beijing')

基本语句与函数

1: 用while语句的方法输出数字:1到10

答: i = 1

      while i<=10:

          print(i)

          i += 1

2: 用for语句和continue 输出结果:1 3 5 7 9

答: for i in range(10):

          if i%2 == 1:

              print(i)

          else:

              continue

3: 假设有列表    a = [1,2,3,4,5,6]

    1 用for if else 的方法查找数字8是否在列表a里,如果在的话,输出字符串'find',如果不存在的话,输出字符串'not find'

     2 用while语句操作上面的列表a,输出下面结果:[2,3,4,5,6,7]

答: (1). a = [1, 2, 3, 4, 5, 6]

            for i in a:

                if i == 8:

                    print('find')

                else:

                     print('not find')

      (2). a = [1, 2, 3, 4, 5, 6]

            i = 0

            while i < len(a):

                a[i] = a[i] + 1

                i += 1

            print(a)

4: 写一个函数代码,返回这3个数字中最大的一个。

    a = 123

    b = 345

    c = 444

答: (1). def max_num1(*args):

                return max(args)

            print(max_num1(123, 345, 444))

      (2). def max_num2(a, b, c):

                 if a < b:

                     if c < b:

                         return b

                     else:

                         return c

                 else:

                     if a < c:

                         return c

                     else:

                         return a

            print(max_num2(123, 345, 444))

      (3). def max_num3(*args):

                l = []

                for i in args:

                    l.append(i)

                l.sort()

                return l[-1]

            print(max_num3(123, 345, 444))

5: 分别写2个函数,完成下面的功能:

    提示一下用到函数的:**和*,猩猩是字典,星是元组

    1 调用函数:ainfo(x=88,y=22,z=44) 你定义ainfo函数体里面的内容并且返回结果:[22, 44, 88]

    2 调用函数:cinfo(x=88,y=22,z=44) 你定义cinfo函数体里面的内容

       并且返回结果:('xaay','yaay','zaay')

答: (1). def ainfo(**kwargs):

                l = []

                for v in kwargs.values():

                    l.append(v)

                l.sort()

                return l

            print(ainfo(x=88, y=22, z=44))

      (2). def cinfo(**kwargs):

                l = []

                for k in kwargs.keys():

                    l.append ('%saay' % k)

                return tuple(l)

            print(cinfo(x=88, y=22, z=44))

基础篇综合

1: 已知字符串 a = "aAsmr3idd4bgs7Dlsf9eAF",要求如下

    1.1 请将a字符串的大写改为小写,小写改为大写。

          print(a.swapcase())

    1.2 请将a字符串的数字取出,并输出成一个新的字符串。

          "".join([i for i in a if i.isdigit()])

    1.3 请统计a字符串出现的每个字母的出现次数(忽略大小写,a与A是同一个字母),并输出成一

          个字典。 例 {'a':4,'b':2}

          {x:a.count(x) for x in set(a.lower())}

    1.4 请去除a字符串多次出现的字母,仅留最先出现的一个。例 'abcabb',经过去除后,输出 'abc'

          l = [i for i in set(a)]

          l.sort(key=list(a).index)

          ''.join(l)

    1.5 请将a字符串反转并输出。例:'abc'的反转是'cba'

          print(a[::-1])

    1.6 去除a字符串内的数字后,请将该字符串里的单词重新排序(a-z),并且重新输出一个排序后

          的字符串。(保留大小写,a与A的顺序关系为:A在a前面。例:AaBb)

          a = "aAsmr3idd4bgs7Dlsf9eAF"

          l = sorted(a)

          upper_list = []

          lower_list = []

          for x in l:

              if x.isupper():

                  upper_list.append(x)

              elif x.islower():

                  lower_list.append(x)

              else:

                  pass

          for y in upper_list:

              y_lower = y.lower()

              if y_lower in lower_list:

                  lower_list.insert(lower_list.index(y_lower), y)

          print(''.join(lower_list))

    1.7 请判断 'boy'里出现的每一个字母,是否都出现在a字符串里。如果出现,则输出True,否则,

          则输出False.

          方法一: a = "aAsmr3idd4bgs7Dlsf9eAF"

          s = 'boy'

          u = set(a)

          u.update(list(s))

          print(len(set(a))==len(u))

          方法二: print(set('boy').issubset(set(a)))

    1.8 要求如1.7,此时的单词判断,由'boy'改为四个,分别是 'boy','girl','bird','dirty',请判断如上这

          4个字符串里的每个字母,是否都出现在a字符串里。

          方法一:

          a = "aAsmr3idd4bgs7Dlsf9eAF"

          s = ['boy','girl','bird','dirty']

          u = set(a)

          for i in s:

              u.update(i)

          print(len(set(a))==len(u))

          方法二:

          a = "aAsmr3idd4bgs7Dlsf9eAF"

          s = ['boy','girl','bird','dirty']

          u = ''.join(s)

          print(set(u).issubset(set(a)))

    1.9 输出a字符串出现频率最高的字母

          l = [(x, a.count(x)) for x in set(a)]

          l.sort(key=lambda k:k[1], reverse=True)

          print(l[0][0])

2: 在python命令行里,输入import this 后出现的文档,统计该文档中,"be" "is" "than" 出现次数。

答: import os

      m = os.popen('python -m this').read()

      m = m.replace('\n', ' ')

      l = m.split(' ')

      c = [(x, l.count(x)) for x in ['be', 'is', 'than']]

      print(c)

3: 一文件的字节数为 102324123499123,请计算该文件按照kb与mb计算得到的大小。

答: size = 102324123499123

      print('%s kb' % (size >> 10))

      print('%s mb' % (size >> 20))

4: 已知 a = [1,2,3,6,8,9,10,14,17],请将该list转换为字符串,例如 '123689101417'.

答: a =  [1,2,3,6,8,9,10,14,17]

      b = [str(i) for i in a]

      print(''.join(b))

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容