2018年12月31日 星期一

python - 繼承


甚麼是繼承?


繼承是一種創建新類的方式,在python中,新建的類可以繼承一個或多個父類,父類又可稱為基類或超類,新建的類稱為派生類或子類

class ParentClass1 : #定義父類    pass
class ParentClass2 : #定義父類    pass
class SubClass1(ParentClass1): 
#單繼承,基類是ParentClass1,派生類是SubClass    pass
class SubClass2(ParentClass1,ParentClass2):  
#python 支持多繼承,用逗號分隔開來多個繼承的類    pass

查看繼承
subclass1.__bases__#__base__只查看從左到右繼承的第一個字類,# __bases__ 則是查看所有繼承的父類(<class'__main__.ParentClass1'>,)
subclass2. __bases__
(<class'__main__.ParentClass1'>,<class'__main__.ParentClass2'>)
.提示: 如果沒有指定基類,python的類會默認繼承object 類,object 是所有python類的基類,
他提供了一些常見方法(如 ( __str__  )的實現。
ParentClass1.__bases__
(<class 'object'>,)
ParentClass2.__bases__
(<class 'object'>,)


繼承與抽象(先抽象在繼承)

抽象即抽取類似或者比較像的部分。
抽象分為兩個層次:
1.邱吉爾跟川普 兩對象比較像部分抽取成類。
2.將 人、貓、狗 這三個類比較像的部分抽取成父類。
抽取最主要的作用是劃分類別 (可以隔離關注點、降低複雜度)



繼承 : 是基於抽象的結果,通過編程語言去實現它,肯定是先經歷抽象這個過程,才能通過繼承的方式去表達出抽象的結構。
抽象只是分析和設計的過程中,一個動作或者說一種技巧,通過抽象可以得到類



繼承例子與重用性

#實際運用

例如 :
    人會 吃、喝、看電視
猴子會 吃、喝、    爬樹

現在要為 人跟猴子 創建一個類,那麼就需要為  人 跟猴子  實現他們所有個功能,方式如下:

#人跟猴子 有像似的地方

class 人 :

    def  吃(self):
             # do something

    def  喝(self):
             # do something

    def  看電視(self):
             # do something

class 猴子 :

    def  吃(self):
             # do something

    def  喝(self):
             # do something

    def  爬樹(self):
             # do something

人 跟 猴子 都有相同的功能,可以使用 繼承 把相似的部分只要書寫一次就讓猴子跟人可以使用,更改後如下:

動物: 吃、喝

人 : 看電視(人繼承動物的功能)
猴子 : 爬樹(猴子繼承動物的功能)

轉化如下:

class 動物:
def 吃(self):
#do somthing

def 喝(self):
#do somthing


# 在類後面掛號中寫入另一個類名,表示當前類繼承另外一個類,如下:
class 人(動物):

     def  看電視(self):
                 print ( '看新聞' )

class 猴子(動物):

     def  爬樹(self):
                 print ( '摘香蕉' )

#繼承 的程序實現
class Animal:
    def eat(self):
        print("%s 吃"%self.name)
    def drink(self):
        print("%s 喝" % self.name)

class People(Animal):
    def __init__(self,name):
        self.name = name
        self.breed = '人'
    def skill(self):
        print('看電視')

class Monkey(Animal):
    def __init__(self,name):
        self.name = name
        self.breed = '猴子'
    def ability(self):
        print('爬樹')

#調用
p1 = People('愛看新聞的上班族')
p1.eat()


p2 = People('愛看體育的年輕人')
p2.drink()

m1 =  Monkey('愛吃香蕉的猴子')
m1.eat()
執行結果:
愛看新聞的上班族 吃
愛看體育的年輕人 喝
愛吃香蕉的猴子 吃



.在編成的過程中,如果我們定義了一個類A,然後又想建立另外一個類B,但是類B的大部分內容與類A的相同時,我們不可能從開始寫一個類B,這就用到了類的繼承概念!
通過繼承的方式新建類B,讓B繼承A,B會 "遺傳"  A的所有屬性(數據屬性 和 函數屬性)
 實現程序重用。

class Animal :
    # 人跟猴子都是動物,所以創建一個 Animal基類    
    def __init__(self,name,aggressivity, life_value):
        self.name = name # 人跟猴都有自己的暱稱        
        self.aggressivity  = aggressivity 
        #人跟猴都有自己的攻擊力        
        self.life_value = life_value #人和猴都有自己的生命值
    def eat(self):
        print('%s is eating'%self.name)

class monkey (Animal):
    pass
class people (Animal):
    pass
egg = people('egon',10,1000)
ha2 = monkey('阿猴子',50,1000)
egg.eat()
ha2.eat()
執行結果:
egon is eating
阿猴子 is eating

.提示: 用已經有的類建立一個新的類,這樣就重用了已經有的軟體中的一部分設置大部分,大幅提升了編程工作量, 這就是常說的軟體重用, 不僅可以重用自己的類,也可以繼承別人的,比如標準庫, 來制定新的數據類型,這樣就能大大縮短了軟體開發週期,對大型軟體開發來說,意義重大。


派生

子類可以添加自己的新屬性或者在自己這裡重新定義這些屬性(不會引響到父類),須注意的是,一旦重新定義了自己的屬性且與父類相同重名,那麼調用新增的屬性時,就以自己為準。
class Animal :
    # 人跟猴子都是動物,所以創建一個 Animal基類    def __init__(self,name,aggressivity, life_value):
        self.name = name # 人跟猴都有自己的暱稱        self.aggressivity  = aggressivity #人跟猴都有自己的攻擊力        self.life_value = life_value #人和猴都有自己的生命值
    def eat(self):
        print('%s is eating'%self.name)



class monkey (Animal): #猴類,繼承Animal類    def skill(self,people):
        # 派生:猴子會攻擊人        # param people        people.life_value -=  self.aggressivity


class people (Animal):
    # 人類,繼承Animal    def attack(self,monkey):
        # 派生: 人有攻擊的能力        # param monkey        monkey.life_value -= self.aggressivity

egg  =  people('egon',10,1000)
ha2  =  monkey('吃香蕉',50,1000)
print(ha2.life_value)
print(egg.attack(ha2))
print(ha2.life_value)
執行結果:
1000
None
990
.注意: 像 ha2.life_value 之類的的屬性引用,會先從實例中找life_value然後去類中找,然後再去父類找...直到最後找頂級的父類

在子類中,新建的重名的函數屬性,在編輯函數內功能的時候,有可能需要重用父類中重名的那個函數功能,應該適用調用普通函數的方式,即: 類名.func(),此時就與調用普通函樹無異了! 因此即便是 self 參數也須要傳值.

如子類要執行父類的方法也使用super方法: (適用於pytthon 3)
方法如下:
class A :
    def  opop(self):
        print('A')

class B(A):
    def opop(self):
        super().opop()
        #super(B.self).opop()        #A.opop(self)        print('B')

a = A()
b = B()
b.opop()
super(B,b).opop()
執行結果:
A
B
A

class Animal:
    # 人跟猴 都是動物 所以創造一個Animal 基類    def __init__(self,name,aggressivity,life_value):
        self.name = name # 人跟猴 都有自己的暱稱        self.aggressivity =aggressivity
        #人和猴都有自己的攻擊力        self.life_value   = life_value
        #人跟猴 都有自己的生命值
    def eat(self):
        print('%s is eating'%self.name)

class monkey(Animal):
    #猴類 繼承Animal類    def __init__(self,name,breed,aggressivity,life_value):
        super().__init__(name,aggressivity,life_value)
        #執行父類Animal        self.bread = breed
        #派生出了新的屬性
    def bite(self,pople):
        # 派生出新的技能: 猴子有咬人的技能        # param people        pople.life_value -= self.aggressivity

    def eat(self):
        Animal.eat(self)
        print('from monkey')

class  Person(Animal):
    # 人類 繼承Animal    def __init__(self,name,aggressivity, life_value,money):
        super().__init__(name,aggressivity,life_value)
        #執行父類        self.money = money #派生出了新的屬性
    def attack(self,monkey):
      #派生出新的技能  : 人有攻擊的技能      #param monkey        monkey.life_value -= self.aggressivity

    def eat(self):
        Animal.eat(self)
        print('from Person')


egg = Person('egon',10,10000,600)
ha2 = monkey('吃香蕉','哈士奇',10,1000)
print(egg.name)
print(ha2.name)
egg.eat()
執行結果:
egon
吃香蕉
egon is eating
from Person

.通過繼承建立了派生類與基類之間的關係, 他是一種"是" 的關係,比如說 黑猴是猴,人是動物。當類之間有很多相同的功能,提取這些共同的功能做成基類,用繼承比較好,比如老闆是上司
class Boss :
    def __init__(self,name,gender):
        self.name = name
        self.gender = gender
    def teach(self):
        print('teaching')

class jobs(Boss):
    pass
p1 = jobs('egon','male')
p1.teach()
執行結果:
teaching



下面就是一個簡單的繼承例子
class Parent:
    def hello(self):
        print("正在調用父類的方法.....")


class Child(Parent):
    pass
p = Parent()
p.hello()
c = Child()
c.hello()
執行結果:
正在調用父類的方法.....
正在調用父類的方法.....




.如果子類中定義與父類同名的方法或屬性,則會覆蓋父類對應的方法或屬性。
class Parent:
    def hello(self):
        print("正在調用父類的方法.....")


class Child(Parent):
    pass
class Child(Parent):
    def hello(self):
        print("正在調用子類的方法....")


c= Child()
c.hello()
p=Parent()
p.hello()
執行結果:
正在調用子類的方法....
正在調用父類的方法.....


.以下是一個繼承的例子
import random as r


class Fish:
    def __init__(self):
        self.x = r.randint(0,10)
        self.y = r.randint(0, 10)

    def move(self):
         self.x -= 1         print("我的位置是:",self.x,self.y)

class Goldfish(Fish):
    pass
class carp(Fish):
    pass
class Salmon(Fish):
    pass
class Shark(Fish):
    def __init__(self):
        self.hungry = True
    def eat(self):
        if self.hungry:
            print("吃貨的夢想就是天天有的吃....")
            self.hungry = False        else:
            print("太撐了,吃不下了!")

fish = Fish()
fish.move()
fish.move()
goldfish =Goldfish()
goldfish.move()
goldfish.move()
goldfish.move()
shark = Shark()
shark.eat()
shark.eat()
執行結果:
我的位置是: 5 0
我的位置是: 4 0
我的位置是: 2 10
我的位置是: 1 10
我的位置是: 0 10
吃貨的夢想就是天天有的吃....
太撐了,吃不下了!


.至時候如果再調用 shark.move()  就會抱錯
原因為:
#因父類被子類覆寫過所以報錯,解決方法有兩個#1.調用為幫定的父類方法#2.使用super函數(功能為:用于调用父类(超类)的一个方法)#super也可以用來解決多重繼承、重複調用等問題



import random as r


class Fish:
    def __init__(self):
        self.x = r.randint(0,10)
        self.y = r.randint(0, 10)

    def move(self):
         self.x -= 1         print("我的位置是:",self.x,self.y)

class Goldfish(Fish):
    pass
class carp(Fish):
    pass
class Salmon(Fish):
    pass
class Shark(Fish):
    def __init__(self):
        self.hungry = True
    def eat(self):
        if self.hungry:
            print("吃貨的夢想就是天天有的吃....")
            self.hungry = False        else:
            print("太撐了,吃不下了!")

fish = Fish()
fish.move()
fish.move()
goldfish =Goldfish()
goldfish.move()
goldfish.move()
goldfish.move()
shark = Shark()
shark.eat()
shark.eat()

shark.move() #在一次調用
執行結果:
Traceback (most recent call last):
我的位置是: 1 7
我的位置是: 0 7
我的位置是: 1 8
  File "D:/python  t11/fish.py", line 44, in <module>
我的位置是: 0 8
我的位置是: -1 8
吃貨的夢想就是天天有的吃....
太撐了,吃不下了!
    shark.move() #在一次調用
  File "D:/python  t11/fish.py", line 10, in move
    self.x -= 1
AttributeError: 'Shark' object has no attribute 'x'





.下面是修改的方法
1.重新調用父類方法
import random as r


class Fish:
    def __init__(self):
        self.x = r.randint(0,10)
        self.y = r.randint(0, 10)

    def move(self):
         self.x -= 1         print("我的位置是:",self.x,self.y)

class Goldfish(Fish):
    pass
class carp(Fish):
    pass
class Salmon(Fish):
    pass
class Shark(Fish):
    def __init__(self):
        Fish.__init__(self) #寫上父類的名子        self.hungry = True
    def eat(self):
        if self.hungry:
            print("吃貨的夢想就是天天有的吃....")
            self.hungry = False        else:
            print("太撐了,吃不下了!")

fish = Fish()
fish.move()
fish.move()
goldfish =Goldfish()
goldfish.move()
goldfish.move()
goldfish.move()
shark = Shark()
shark.eat()
shark.eat()

shark.move() #在一次調用shark = Shark() #修改後再次引用shark.move()
執行結果:
我的位置是: 4 3
我的位置是: 3 3
我的位置是: 5 1
我的位置是: 4 1
我的位置是: 3 1
吃貨的夢想就是天天有的吃....
太撐了,吃不下了!
我的位置是: 2 6
我的位置是: 5 3



2.使用 shark.move() 
import random as r


class Fish:
    def __init__(self):
        self.x = r.randint(0,10)
        self.y = r.randint(0, 10)

    def move(self):
         self.x -= 1         print("我的位置是:",self.x,self.y)

class Goldfish(Fish):
    pass
class carp(Fish):
    pass
class Salmon(Fish):
    pass
class Shark(Fish):
    def __init__(self):
        super().__init__() #使用 super函數        self.hungry = True
    def eat(self):
        if self.hungry:
            print("吃貨的夢想就是天天有的吃....")
            self.hungry = False        else:
            print("太撐了,吃不下了!")

fish = Fish()
fish.move()
fish.move()
goldfish =Goldfish()
goldfish.move()
goldfish.move()
goldfish.move()
shark = Shark()
shark.eat()
shark.eat()


shark = Shark()  #已用super函數 修改shark.move()
執行結果:
我的位置是: 6 4
我的位置是: 5 4
我的位置是: -1 4
我的位置是: -2 4
我的位置是: -3 4
吃貨的夢想就是天天有的吃....
太撐了,吃不下了!
我的位置是: 8 3



.python 也可以多重繼承 class  className(Base1,Base2,Base3): .....

class Base1:
    def f1(self):
        print("我是f1,我為Base1代言...")


class Base2:
    def f2(self):
        print("我是f2,我為Base2代言...")

class C(Base1,Base2):
    pass
c = C()
c.f1()
c.f2()
執行結果:
我是f1,我為Base1代言...
我是f2,我為Base2代言...























2018年12月24日 星期一

python - 數組練習 以及 List關鍵字應用

各個關鍵字用法


函數
說明
資料統計
max( )
最大值,可以獲取數列中的最大值
min( )
最小值,可以獲取數列中的最小值
sum( )
總和,獲取數列總和
len( )
查詢串列中有多少元素
del( )
可以刪除串列中的元素

函數
說明
字串方法
lower( )
將字串轉轉小寫
upper( )
將字串轉轉大寫
title( )
將字串第一個轉成大寫其他轉成小寫
rstrip( )
刪除字串尾端多餘的空白
lstrip( )
刪除字串前端多餘的空白
strip( )
刪除字串前、後端多餘的空白


函數
說明
增刪串列元素
append( )
在串列末端增加元素
insert( )
在串列任意位置增加元素
pop( )
可依照引所指任意刪除元素,刪除後會返回刪除的值,
如沒有指定就刪除最末端元素
remove( )
可刪除指定的元素


函數
說明
串列排序
reverse( )
可將串列內容顛倒排序
sort( )
可由小到大進行排序,
加上”reverse = True” 即可使用大到小的排序方式

 
函數
說明
進階操作
index( )
查詢特定元素內容第一次出現的索引值
count( )
可查詢元素出現在串列內的次數
list( )
將字串轉為串列
split( )
可根據符號或是空格,將字串拆開,變成一個串列
startswith( )
檢查字串的起始文字是不是特定字串
endswith( )
檢查字串的末端文字是不是特定字串
replace(1?,2?)
將1?的內容替代為2?
join
將兩個元素進行連結,成為一個字串
in
檢查元素是不是在串列內,如果在返回一個True
not in
檢查元素是不是在串列內,如果不在返回一個True


  • 列表中可以再放入列表
1.列出球員數據

d = [['ledron James','SF','12/30/84'],23,9,90,13,220]
#定義d字串g = len(d)
k = max(d[1:g])
i = d.index(k)
name = d[0][0]
position = d[0][1]
birthday = d[0][2]
print ("名子",name)
print ('球隊位置',position)
print ('球員生日',birthday)
print ("在第%d 得到最高分 %d"%(i,k))

執行結果:

名子 ledron James
球隊位置 SF
球員生日 12/30/84
在第5 得到最高分 220

  • 二維串列的運用


2.用二為串列的成績系統總分計算。

Classmate =[['王大明',90,39,34,23,11],            ['陳小寶',44,12,88,46,10]
            ]
print(Classmate[0][4])
print(Classmate[1][4])
Classmate[0][4] = sum(Classmate[0][1:4])
Classmate[1][4] = sum(Classmate[1][1:4])
print(Classmate[0])
print(Classmate[1])

執行結果:

23
46
['王大明', 90, 39, 34, 163, 11]
['陳小寶', 44, 12, 88, 144, 10]



  • 串列賦值

#可以使用賦值來修改字串
#將兩個盒子內的顯示更改為相同,將盒子二更改成盒子一
box_one = ["cake",'water']        #第一個盒子內有蛋糕跟水box_two = ["chocolate",'juice']   #第二個盒子內有巧克力跟果汁print(box_one)       #檢查盒子內容print(box_two)       #檢查盒子內容replace = box_one
print("盒子1的內容物: ",box_one)
print("盒子2的內容物: ",replace)

執行結果:

['cake', 'water']
['chocolate', 'juice']
盒子1的內容物:  ['cake', 'water']
盒子2的內容物:  ['cake', 'water']


  • 字串切片  可定義切片位置,可用來讀取或是修改
string =  'Happy every day'print("列印string 第1 - 3元素 = ",string[0:3])
print("列印string 第2 - 4元素 = ",string[1:4])
print("列印string 第2,4,6元素 = ",string[1:6:2])  #1到六的範圍,每兩個打印一次,6是空白print("列印string 第1到最後元素 = ",string[0:])
print("列印string 最後3個元素 = ",string[-3:])
print("列印string 從後往前元素 = ",string[:-1])
執行結果:
列印string 第1 - 3元素 =  Hap
列印string 第2 - 4元素 =  app
列印string 第2,4,6元素 =  ap 
列印string 第1到最後元素 =  Happy every day
列印string 最後3個元素 =  day
列印string 最後3個元素 =  Happy every da
  • 函數或是方法 
 
函數
說明
len( )
計算字串長度
max( )
最大值
min( )
最小值



string =  'Happy every day'
length = len(string)
print('字串長度',length)

big_numeral = max(string)
print('最大的unicode碼值和字元',ord(big_numeral),"哪個字:",big_numeral)

small_numeral = min(string)
print('最小的unicode碼值和字元',ord(small_numeral),"哪個字:",small_numeral) #32 代表空白
# ord 方法可以轉譯成 Unicode 數值
執行結果:
字串長度 15
最大的unicode碼值和字元 121 哪個字: y
最小的unicode碼值和字元 32 哪個字:  

  • list 可以將字串轉成串列
change = list("Happy every day")
print(change)
執行結果:
['H', 'a', 'p', 'p', 'y', ' ', 'e', 'v', 'e', 'r', 'y', ' ', 'd', 'a', 'y']


  • split( )處理字串  可以將指定的符號拆開變成一個字串
str1 = "Happy every day"str2 = "Work***hard***to***learn***to***grow"
result_1 = str1.split()   #字串轉成串列result_2 = str2.split('***')

print(str1,'串列的內容是',result_1)
print(str1,'串列的字數是',len(result_1))

print(str2,'串列的內容是',result_2)
print(str2,'串列的字數是',len(result_2))
執行結果:
Happy every day 串列的內容是 ['Happy', 'every', 'day']
Happy every day 串列的字數是 3
Work***hard***to***learn***to***grow 串列的內容是 ['Work', 'hard', 'to', 'learn', 'to', 'grow']
Work***hard***to***learn***to***grow 串列的字數是 6



  •  startswith(  ),endswith(  ),replace(  ),join(  )

函數
說明
startswith( )
列出字串起始文字是否是特定子字串
endswith( )
列出字串末端文字是否是特定子字串
replace( 1? , 2?)
將1?字串由2?取代
count( )
查詢出現的次數
join( )
將字串內的元素以特定字元連接,成為一個字串

content = "Practice makes perfect"print("檢查開頭是不是Practice返回對錯:",content.startswith('Practice'))
print("檢查末端是不是Practice返回對錯:",content.endswith('Practice'))
print("makes 出現的次數:",content.count("makes"))
replace = content.replace('Practice','P********')
print('把開頭的Practice換成P********:    ',replace)
print('把開頭的Practice換成P********:    ',content.replace("Practice",'P********'))

str1 = "**"str2 = "123"print("str1加上str2的結果:",str1.join(str2))
執行結果:
檢查開頭是不是Practice返回對錯: True
檢查末端是不是Practice返回對錯: False
makes 出現的次數: 1
把開頭的Practice換成P********:     P******** makes perfect
把開頭的Practice換成P********:     P******** makes perfect
str1加上str2的結果: 1**2**3


練習:  將文件列表中.py  文件記錄下來
file = ['ok1','ok2.py','ok3.py','ok4']

py = []
for os in file :
    if os.endswith('.py'):
        py.append(os)
print(py)

執行結果:
['ok2.py', 'ok3.py']

  • in 以及 not in 運算式  可以檢查元素是否在內
#密碼驗證
password  = 'victory'pa = input('請輸入密碼')
print('in運算式')
if pa in password :
    print('在密碼中:回傳 True')
else:
    print('不再密碼中:回傳 False')

print('not in 運算式')
if pa not in password :
    print('不在密碼中:回傳 True')
else:
    print('再密碼中:回傳 False')
輸入: victory
執行結果:
in運算式
在密碼中:回傳 True
not in 運算式
再密碼中:回傳 False



總練習:
練習一
#需求:輸入一個字串判定是否是不是正確網址,並把它開啟(需要為http://及https://)
import os
while True:

    str1 = input("輸入一個網址要符合格式 :")

    if str1.startswith('http://') :

        print('正確,正在開啟')
        os.system('"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" str1')
        break
    elif str1.startswith('https://') :
        print('正確,正在開啟')
        os.system('"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" str1')
        break
    else:
        print('不正確從再次輸入')
執行結果:
輸入一個網址要符合格式 :http://ffff
正確,正在開啟

練習二:
需求:  獲取資料夾位置,然後把副檔名 zip 跟 msi  打印出來

from os import listdir
mypath = "D:\dow"files = listdir(mypath)
collect = []
filexe = []
for execution in files:
    if execution.endswith('.zip'):
        collect.append(execution)
    elif execution.endswith('.msi'):
        filexe.append(execution)
print('這是zip的檔案:  ',collect)
print('這是exe的檔案:  ',filexe)
執行結果:
這是zip的檔案:   ['2016 First Updates.zip', 'scrapy-master.zip', 'wordpress-https.3.4.0.zip']
這是exe的檔案:   ['python-2.7.9.msi', 'python-2.7.msi']

練習三:
需求: 算出歌詞 字數,然後打印內容以及輸入某個詞句查詢出現次數
lyrics = '''You broke my heart 'cause I couldn't dance,You didn't even want me aroundAnd now I'm back to let you know I can really shake 'em downDo you love me? (I can really move)Do you love me? (I'm in the groove)Now do you love me?(Do you love me now that I can dance?)Watch me, now(Work, work) ah, work it out baby(Work, work) well, I'm gonna drive you crazy(Work, work) ah, just a little bit of soul, now?(Work)Now I can mash potatoes (I can mash potatoes)I can do the twist (I can do the twist)Tell me, baby, do you like it like this?Tell me (tell me) tell meDo you love me?Do you love me, baby?Now do you love me?(Do you love me now that I can dance?)Watch me, now(Work, work) ah, work it out baby(Work, work) well, I'm gonna drive you crazy(Work, work)…'''
adaptation =  list(lyrics)
count = len(adaptation)
print('Do You Love Me這首歌共有%d 個字'%(count))
print('本首歌的歌詞為:',  lyrics.split(" "))
Inquire = input('輸入歌詞詞句可以查詢在歌曲中出現幾次')
print('%s共出現過%d次' % (Inquire, lyrics.count(Inquire)))
執行結果:
Do You Love Me這首歌共有773 個字
本首歌的歌詞為: ['You', 'broke', 'my', 'heart', "'cause", 'I', "couldn't", 'dance,\nYou', "didn't", 'even', 'want', 'me', 'around\nAnd', 'now', "I'm", 'back', 'to', 'let', 'you', 'know', 'I', 'can', 'really', 'shake', "'em", 'down\nDo', 'you', 'love', 'me?', '(I', 'can', 'really', 'move)\nDo', 'you', 'love', 'me?', "(I'm", 'in', 'the', 'groove)\nNow', 'do', 'you', 'love', 'me?\n(Do', 'you', 'love', 'me', 'now', 'that', 'I', 'can', 'dance?)\nWatch', 'me,', 'now\n(Work,', 'work)', 'ah,', 'work', 'it', 'out', 'baby\n(Work,', 'work)', 'well,', "I'm", 'gonna', 'drive', 'you', 'crazy\n(Work,', 'work)', 'ah,', 'just', 'a', 'little', 'bit', 'of', 'soul,', 'now?\n(Work)\nNow', 'I', 'can', 'mash', 'potatoes', '(I', 'can', 'mash', 'potatoes)\nI', 'can', 'do', 'the', 'twist', '(I', 'can', 'do', 'the', 'twist)\nTell', 'me,', 'baby,', 'do', 'you', 'like', 'it', 'like', 'this?\nTell', 'me', '(tell', 'me)', 'tell', 'me\nDo', 'you', 'love', 'me?\nDo', 'you', 'love', 'me,', 'baby?\nNow', 'do', 'you', 'love', 'me?\n(Do', 'you', 'love', 'me', 'now', 'that', 'I', 'can', 'dance?)\nWatch', 'me,', 'now\n(Work,', 'work)', 'ah,', 'work', 'it', 'out', 'baby\n(Work,', 'work)', 'well,', "I'm", 'gonna', 'drive', 'you', 'crazy\n(Work,', 'work)…\n']
輸入歌詞詞句可以查詢在歌曲中出現幾次You
You共出現過2次