【筆記】《python語言程序設(shè)計》—函數(shù)和代碼復(fù)用

一浓冒、前言

學(xué)習(xí)就是一個不斷的自下而上栽渴,自上而下的過程。

前段時間稳懒,學(xué)著用python實現(xiàn)網(wǎng)站的數(shù)據(jù)爬取闲擦,隱約get到python的一些語法和用法,感覺就是語法不難场梆,關(guān)鍵在于解決問題的思維墅冷。

這是需求驅(qū)動后的學(xué)習(xí)。接下來或油,就需要對python進(jìn)行系統(tǒng)地了解寞忿。

很早之前搜知乎的時候,就搜到MOOC上的一門《python語言程序設(shè)計》課程顶岸,講得很好腔彰,而且,我還下載了課件蜕琴,溜了一遍萍桌,感覺就挺有趣的。

趁著有了實戰(zhàn)經(jīng)驗凌简,就把這門入門課刷了一遍上炎。果然是門好課!很適合小白入門雏搂,并系統(tǒng)學(xué)習(xí)藕施,整個教學(xué)過程循序漸進(jìn),深入淺出凸郑,提綱挈領(lǐng)裳食,很有意思!

課程是北京理工大學(xué)嵩天老師的《python語言程序設(shè)計》課程芙沥,現(xiàn)在已經(jīng)開了11次課了诲祸。課程每個小視頻短則幾分鐘浊吏,最長也不超過20分鐘,不容易勸退救氯。每章講解有復(fù)習(xí)回顧及小結(jié)找田,在平臺python123上有每章的練習(xí)和測試,直接反饋結(jié)果着憨,激發(fā)繼續(xù)學(xué)下去的興趣墩衙。

個人感覺,老師說話速度慢了些甲抖,調(diào)成了2倍速播放漆改,然后,花了大約3天的時間准谚,把所有的視頻挫剑,課件,練習(xí)和測試都刷了一遍氛魁,感覺對python的了解更系統(tǒng)了暮顺!

趁熱打鐵,把每章的知識點和練習(xí)秀存、測試再進(jìn)行整理回顧一下。

以下內(nèi)容均來自課程:《python語言程序設(shè)計》平臺python123羽氮,感興趣的看課程視頻或链,親自練習(xí),效果更好~

二档押、知識點

1.函數(shù)的定義與使用

  1. 函數(shù)的理解與定義

    ①一段具有特定功能的澳盐,可重用的語句組

    ②一種功能的抽象,一般函數(shù)表達(dá)特定功能

    ③兩個作用:降低編程難度和代碼復(fù)用

    def <函數(shù)名>(<參數(shù)(0個或多個>):
        <函數(shù)體>
        return <返回值>
    

    ④函數(shù)定義時令宿,所指定的參數(shù)是一種占位符叼耙;如果不經(jīng)過調(diào)用,不會被執(zhí)行粒没;參數(shù)是輸入筛婉,函數(shù)體是處理,結(jié)果是輸出(IPO)

  2. 函數(shù)的使用及調(diào)用過程

    ①調(diào)用是運行函數(shù)代碼的方式

    ②調(diào)用時要給出實際參數(shù)癞松;實際參數(shù)替換定義中的參數(shù)爽撒;函數(shù)調(diào)用后得到返回值;

函數(shù)調(diào)用過程.png
  1. 函數(shù)的參數(shù)傳遞

    ①函數(shù)可以有參數(shù)响蓉,也可以沒有硕勿,但必須保留括號;

    ②函數(shù)定義時可以為某些參數(shù)指定默認(rèn)值枫甲,構(gòu)成可選參數(shù)源武;

    ③函數(shù)定義時可以設(shè)計可變數(shù)量參數(shù)扼褪,即不確定參數(shù)總數(shù)量

    def <函數(shù)名>(<參數(shù)>,*b):
        <函數(shù)體>
        return <返回值>
    
可變參數(shù)傳遞.png

④函數(shù)調(diào)用時,參數(shù)可以按照位置或名稱方式傳遞粱栖;

#默認(rèn)參數(shù)m為1
def fact(n,m=1):
    s=1
    for i in range(1,n+1):
        s*=i
    return s//m
#位置傳遞
fact(10,5)
#名稱傳遞
fact(m=5,n=10)
  1. 函數(shù)的返回值

    ①函數(shù)可以返回0個或多個結(jié)果

    ②可以有return话浇,也可以沒有

    ③多個返回結(jié)果以元組類型呈現(xiàn)

多個返回值.png
  1. 局部變量和全局變量

    ①局部變量和全局變量是不同變量:局部變量是函數(shù)內(nèi)部的占位符,與全局變量可能重名但不同查排;函數(shù)運算結(jié)束后凳枝,局部變量被釋放;可以使用global保留字在函數(shù)內(nèi)部使用全局變量跋核;

規(guī)則1.png

②局部變量為組合數(shù)據(jù)類型且未創(chuàng)建岖瑰,等同于全局變量

規(guī)則2.png
  1. lambda函數(shù)

    ①lambda函數(shù)返回函數(shù)名作為結(jié)果

    ②lambda函數(shù)是一種匿名函數(shù),即沒有名字的函數(shù)

    ③使用lambda保留字定義砂代,函數(shù)名是返回結(jié)果

    ④lambda函數(shù)用于定義簡單的蹋订、能夠在一行內(nèi)表示的函數(shù)

    ⑤謹(jǐn)慎使用lambda函數(shù):該函數(shù)主要用作一些特定函數(shù)或方法的參數(shù);該函數(shù)有一些固定使用方式刻伊,建議逐步掌握露戒;一般情況,建議使用def定義的普通函數(shù)

    <函數(shù)名>=lambda<參數(shù)>:<表達(dá)式>
    

2.實例7:七段數(shù)碼管繪制

繪制效果:

time_paint.gif
import turtle,time
# 繪制數(shù)碼管間隔
def drawGap():
    turtle.penup()
    turtle.fd(5)
# 繪制單段數(shù)碼管
def drawLine(draw):
    drawGap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawGap()
    turtle.right(90)
# 根據(jù)數(shù)字繪制七段數(shù)碼管
def drawDigit(digit):
    drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180)
    turtle.penup()
    turtle.fd(20)
# 繪制時間
def drawDate(date):
    turtle.pencolor('red')
    for i in date:
        if i=='-':
            turtle.write('年',font=('Arial',18,'Normal'))
            turtle.pencolor('green')
            turtle.fd(40)
        elif i=='=':
            turtle.write('月',font=('Arial',18,'Normal'))
            turtle.pencolor('blue')
            turtle.fd(40) 
        elif i=='+':
            turtle.write('日',font=('Arial',18,'Normal')) 
        else:
            drawDigit(eval(i))
def main():
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
    turtle.hideturtle()
    turtle.done()
main()

3.代碼復(fù)用與函數(shù)遞歸

  1. 代碼復(fù)用與模塊化設(shè)計

    ①代碼復(fù)用:把代碼當(dāng)成資源進(jìn)行抽象:代碼資源化(程序代碼是一種用來表達(dá)計算的“資源”)捶箱;代碼抽象化(使用函數(shù)等方法對代碼賦予更高級別的定義)智什;代碼復(fù)用(同一份代碼在需要時可以被重復(fù)使用)

    ②函數(shù)和對象(屬性和方法)是代碼復(fù)用的兩種主要形式;

    ③模塊化設(shè)計:通過函數(shù)或?qū)ο蠓庋b將程序劃分為模塊及模塊間的表達(dá)丁屎;分而治之荠锭;

    ④緊耦合和松耦合:前者表示兩個部分之間交流很多,無法獨立存在晨川;后者表示兩個部分之間交流較少证九,可以獨立存在;模塊內(nèi)部緊耦合共虑,模塊之間松耦合愧怜;

  2. 函數(shù)遞歸的理解

    ①遞歸:函數(shù)定義中調(diào)用函數(shù)自身的方式;

    ②兩個關(guān)鍵特征:(1)鏈條:計算過程存在遞歸鏈條妈拌;(2)基例:存在一個或多個不需要再次遞歸的基例拥坛;

  3. 函數(shù)遞歸的調(diào)用過程

    ①遞歸本身是一個函數(shù),需要函數(shù)定義方式描述供炎;

    ②函數(shù)內(nèi)部渴逻,采用分支語句對輸入?yún)?shù)進(jìn)行判斷;

    ③基例和鏈條音诫,分別編寫對應(yīng)代碼惨奕;

  4. 函數(shù)遞歸實例解析

    ①字符串反轉(zhuǎn)

    #將字符串s反轉(zhuǎn)后輸出
    #第一種
    s[::-1]
    #第二種
    def rvs(s):
        if s=='':
            return s
        else:
            return rvs(s[1:])+s[0]
    

    ②斐波那契數(shù)列

    def f(n):
        if n==1 or n==2:
            return 1
        else:
            return f(n-1)+f(n-2)
    

4.模塊4:Pyinstaller庫的使用

  1. Pyinstaller庫基本介紹

    ①將.py源代碼轉(zhuǎn)換成無需源代碼的可執(zhí)行文件;

    ②第三方庫竭钝,使用pip install pyinstaller安裝梨撞;

  2. Pyinstaller庫使用說明

    ①簡單使用:(cmd命令行)pyinstaller -F <文件名.py>

    ②常用參數(shù):

    參數(shù) 描述
    -h 查看幫助
    --clean 清理打包過程中的臨時文件
    -D,--onedir 默認(rèn)值雹洗,生成dist文件夾
    -F,--onefile 在dist文件夾中只生成獨立的打包文件
    -i <圖標(biāo)文件名.ico> 指定打包程序使用的圖標(biāo)(icon)文件

    舉例:

    pyinstaller -i curve.ico -F SevenDigitsDrawV2.py

5.實例8:科赫雪花小包裹

描述:科赫曲線,也叫雪花曲線卧波。繪制科赫曲線时肿。獲得用戶輸入的整數(shù)N,作為階港粱,繪制N階科赫曲線螃成。

下圖為3階科赫曲線。

科赫雪花小包裹.png
import turtle
def koch(size, n):
    if n==0:
        turtle.fd(size)
    else:
        for angel in [0,60,-120,60]:
            turtle.left(angel)
            koch(size/3,n-1)
def main(level):
    turtle.setup(800,800)
    turtle.penup()
    turtle.goto(-200, 100)
    turtle.pendown()
    turtle.pensize(2)
    turtle.hideturtle()
    koch(300,level)
    turtle.right(120)
    koch(300,level)
    turtle.right(120)
    koch(300,level)
    turtle.done() 
try:
    level = eval(input("請輸入科赫曲線的階: "))
    main(level)
except:
    print("輸入錯誤")

三查坪、練習(xí)

1. 實例7:七段數(shù)碼管繪制

同上

2. 實例8:科赫雪花小包裹

同上

3. 任意累積

描述:請根據(jù)編程模板補充代碼寸宏,計算任意個輸入數(shù)字的乘積。

注意偿曙,僅需要在標(biāo)注...的地方補充一行或多行代碼氮凝。

def cmul(*b):
    m=1
    for i in b:
        m*=i
    return m
print(eval("cmul({})".format(input())))

4. 斐波那契數(shù)列計算

描述:根據(jù)編程模板補充代碼,計算斐波那契數(shù)列的值望忆,具體功能如下:

  1. 獲取用戶輸入整數(shù)N罩阵,其中,N為正整數(shù)

  2. 計算斐波那契數(shù)列的值

如果將斐波那契數(shù)列表示為fbi(N)启摄,對于整數(shù)N稿壁,值如下:

fbi(1)和fbi(2)的值是1,當(dāng)N>2時歉备,fbi(N) = fbi(N-1) + fbi(N-2)
請采用遞歸方式編寫常摧。

def fbi(n):
    if (n==1) or (n==2):
        f=1
    else:
        f=fbi(n-1)+fbi(n-2)
    return f
n = eval(input())
print(fbi(n))

5.漢諾塔實踐

描述:漢諾塔問題大家都清楚,這里不再贅述威创。

請補充編程模板中代碼,完成如下功能:

有三個圓柱A谎懦、B肚豺、C,初始時A上有N個圓盤界拦,N由用戶輸入給出吸申,最終移動到圓柱C上。

每次移動步驟的表達(dá)方式示例如下:[STEP 10] A->C享甸。其中截碴,STEP是步驟序號,寬度為4個字符蛉威,右對齊日丹。

請編寫代碼,獲得輸入N后蚯嫌,輸出漢諾塔移動的步驟哲虾。

輸入格式

一個整數(shù)

輸出格式

每個步驟一行丙躏,每行參考格式如下:[STEP 10] A->C

steps = 0
def hanoi(src, des, mid, n):
    global steps
    if n == 1:
        steps+=1
        print("[STEP{:>4}] {}->{}".format(steps, src, des))
    else:
        hanoi(src,mid,des,n-1)
        steps+=1
        print("[STEP{:>4}] {}->{}".format(steps, src, des))
        hanoi(mid,des,src,n-1)
N = eval(input())
hanoi("A", "C", "B", N)

四、測試

1.選擇題

  1. 以下選項不是函數(shù)作用的是:

    A 復(fù)用代碼

    B 提高代碼執(zhí)行速度

    C 降低編程復(fù)雜度
    D 增強代碼可讀性

函數(shù)不能直接提高代碼執(zhí)行速度束凑。

  1. 下列程序的輸出結(jié)果為:
def f(a,b):
  a=4
  return  a+b
def main():
  a=5
  b=6
  print(f(a,b),a+b)
main()

A 10 11

B 11 10

C 11 11

D 10 10

這里沒有全局變量晒旅,都是函數(shù)局部變量的運算。

  1. 以下關(guān)于Python函數(shù)說法錯誤的是:
def func(a,b):
  c=a**2+b
  b=a
  return c
a=10
b=100
c=func(a,b)+a

A 該函數(shù)名稱為func

B 執(zhí)行該函數(shù)后汪诉,變量a的值為10

C 執(zhí)行該函數(shù)后废恋,變量c的值為200

D 執(zhí)行該函數(shù)后,變量b的值為100

這里沒有全局變量扒寄,請在IDLE中執(zhí)行代碼觀察結(jié)果鱼鼓。

  1. 以下關(guān)于函數(shù)調(diào)用描述正確的是:

    A 函數(shù)和調(diào)用只能發(fā)生在同一個文件中

    B 自定義函數(shù)調(diào)用前必須定義

    C Python內(nèi)置函數(shù)調(diào)用前需要引用相應(yīng)的庫

    D 函數(shù)在調(diào)用前不需要定義,拿來即用就好

函數(shù)調(diào)用前必須已經(jīng)存在函數(shù)定義旗们,否則無法執(zhí)行蚓哩。

Python內(nèi)置函數(shù)直接使用,不需要引用任何模塊上渴。

  1. 以下關(guān)于模塊化設(shè)計描述錯誤的是:

    A 應(yīng)盡可能合理劃分功能塊岸梨,功能塊內(nèi)部耦合度低

    B 應(yīng)盡可能合理劃分功能塊,功能塊內(nèi)部耦合度高

    C 高耦合度的特點是復(fù)用較為困難

    D 模塊間關(guān)系盡可能簡單稠氮,模塊之間耦合度低

模塊內(nèi)高耦合曹阔、模塊間低耦合。

  1. 以下對遞歸描述錯誤的是:

    A 遞歸程序都可以有非遞歸編寫方法

    B 書寫簡單

    C 一定要有基例

    D 執(zhí)行效率高

遞歸不提高程序執(zhí)行效率隔披。

任何遞歸程序都可以通過堆椩叻荩或隊列變成非遞歸程序(這是程序的高級應(yīng)用)。

  1. 以下關(guān)于函數(shù)說法錯誤的是:

    A 函數(shù)可以看做是一段具有名字的子程序

    B 對函數(shù)的使用必須了解其內(nèi)部實現(xiàn)原理

    C 函數(shù)通過函數(shù)名來調(diào)用

    D 函數(shù)是一段具有特定功能的奢米、可重用的語句組

調(diào)用函數(shù)不需要知道函數(shù)內(nèi)部實現(xiàn)原理抓韩,只需要知道調(diào)用方法(即接口)即可。

  1. 哪個選項對于函數(shù)的定義是錯誤的鬓长?

    A def vfunc(*a,b):

    B def vfunc(a,b):

    C def vfunc(a,*b):

    D def vfunc(a,b=2):

def vfunc(a, b) 是錯誤的定義:a表示可變參數(shù)谒拴,可變參數(shù)只能放在函數(shù)參數(shù)的最后。

  1. 關(guān)于return語句涉波,以下選項描述正確的是:

    A 函數(shù)中最多只有一個return語句

    B return只能返回一個值

    C 函數(shù)可以沒有return語句

    D 函數(shù)必須有一個return語句

函數(shù)可以包含0個或多個return語句

  1. 以下關(guān)于遞歸函數(shù)基例的說法錯誤的是:

    A 遞歸函數(shù)必須有基例

    B 遞歸函數(shù)的基例決定遞歸的深度

    C 遞歸函數(shù)的基例不再進(jìn)行遞歸

    D 每個遞歸函數(shù)都只能有一個基例

每個遞歸函數(shù)至少存在一個基例英上,但可能存在多個基例。

2.程序設(shè)計題

  1. 隨機(jī)密碼生成

描述:補充編程模板中代碼啤覆,完成如下功能:

以整數(shù)17為隨機(jī)數(shù)種子苍日,獲取用戶輸入整數(shù)N為長度,產(chǎn)生3個長度為N位的密碼窗声,密碼的每位是一個數(shù)字相恃。每個密碼單獨一行輸出。

產(chǎn)生密碼采用random.randint()函數(shù)

import random
def genpwd(length):
    a=10**(length-1)
    b=10**length-1
    return '{}'.format(random.randint(a,b))
length = eval(input())
random.seed(17)
for i in range(3):
    print(genpwd(length))
  1. 連續(xù)質(zhì)數(shù)計算

描述:補充編程模板中代碼嫌佑,完成如下功能:

獲得用戶輸入數(shù)字N豆茫,計算并輸出從N開始的5個質(zhì)數(shù)侨歉,單行輸出,質(zhì)數(shù)間用逗號,分割揩魂。

注意:需要考慮用戶輸入的數(shù)字N可能是浮點數(shù)幽邓,應(yīng)對輸入取整數(shù);最后一個輸出后不用逗號火脉。

def prime(m):
    for i in range(2,m):
        if m % i == 0:
            return False
    return True

n = eval(input())
n_ = int(n)
n_ = n_+1 if n_ < n else n_
count = 5

while count > 0:
    if prime(n_):
        if count > 1:
            print(n_, end=",")
        else:
            print(n_, end="")
        count -= 1 
    n_ += 1

這個代碼注意:
(1) 需要對輸入小數(shù)情況進(jìn)行判斷牵舵,獲取超過該輸入的最小整數(shù)(這里沒用floor()函數(shù));
(2) 對輸出格式進(jìn)行判斷倦挂,最后一個輸出后不增加逗號(這里沒用.join()方法)畸颅。

【筆記】《python語言程序設(shè)計》—Python基本語法元素

【筆記】《python語言程序設(shè)計》—Python基本圖形繪制

【筆記】《python語言程序設(shè)計》——基本數(shù)據(jù)類型

【筆記】《python語言程序設(shè)計》——程序的控制結(jié)構(gòu)

【筆記】《python語言程序設(shè)計》——函數(shù)和代碼復(fù)用

【筆記】《python語言程序設(shè)計》——組合數(shù)據(jù)類型

【筆記】《python語言程序設(shè)計》——文件和數(shù)據(jù)格式化

【筆記】《python語言程序設(shè)計》——程序設(shè)計方法學(xué)

【筆記】《python語言程序設(shè)計》——python計算生態(tài)概覽

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市方援,隨后出現(xiàn)的幾起案子没炒,更是在濱河造成了極大的恐慌,老刑警劉巖犯戏,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件送火,死亡現(xiàn)場離奇詭異,居然都是意外死亡先匪,警方通過查閱死者的電腦和手機(jī)种吸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呀非,“玉大人坚俗,你說我怎么就攤上這事“度梗” “怎么了猖败?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長降允。 經(jīng)常有香客問我辙浑,道長,這世上最難降的妖魔是什么拟糕? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮倦踢,結(jié)果婚禮上送滞,老公的妹妹穿的比我還像新娘。我一直安慰自己辱挥,他們只是感情好犁嗅,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晤碘,像睡著了一般褂微。 火紅的嫁衣襯著肌膚如雪功蜓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天宠蚂,我揣著相機(jī)與錄音式撼,去河邊找鬼。 笑死求厕,一個胖子當(dāng)著我的面吹牛著隆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播呀癣,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼美浦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了项栏?” 一聲冷哼從身側(cè)響起浦辨,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沼沈,沒想到半個月后流酬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡庆冕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年康吵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片访递。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡晦嵌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拷姿,到底是詐尸還是另有隱情惭载,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布响巢,位于F島的核電站描滔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏踪古。R本人自食惡果不足惜含长,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伏穆。 院中可真熱鬧拘泞,春花似錦、人聲如沸枕扫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至诗鸭,卻和暖如春染簇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背强岸。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工锻弓, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人请唱。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓弥咪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親十绑。 傳聞我的和親對象是個殘疾皇子聚至,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360