1. 程式人生 > >python第七週學習內容及測驗作業

python第七週學習內容及測驗作業

字典和集合

1.字典(鍵值對)

鍵必須是不可變的且不重複,值可以是任意型別
for key  in my_dict : 
列舉字典中的鍵,注:鍵是無序的 

my_dict.items()  –  全部的鍵-值對
my_dict.keys()  –  全部的鍵 
my_dict.values()  –  全部的值 
my_dict.clear()  –  清空字典 

字典的簡單應用:

讀取一個字串,計算每個字母出現的個數
①
s=raw_input()
count=[0]*26

for i in s :
  if i.isalpha():#考慮到空格存在需要判斷一下
count[ord(i)-97]+=1 else: continue print count 應將字母轉換成小寫字母。 >>> single is simple,double is trouble [0, 2, 0, 1, 4, 0, 1, 0, 4, 0, 0, 4, 1, 1, 2, 1, 0, 1, 4, 1, 2, 0, 0, 0, 0, 0] ②字典 s=raw_input() s=s.lower() dic={} for i in s: if i.isalpha(): if i in dic : dic[i]+=1 else
: dic[i]=1 print dic >>> AabBCCefdg {'a': 2, 'c': 2, 'b': 2, 'e': 1, 'd': 1, 'g': 1, 'f': 1} 單詞計數 f=open('emma.txt') word_freq={} for line in f: words=line.strip().split() for word in words: if word in word_freq: word_freq[word]+=1 else: word_freq[word]
=1 freq_word=[] for word ,freq in word_freq.items(): freq_word.append((freq,word)) freq_word.sort(reverse=True) for freq,word in freq_word[:10]: print word f.close() >>> to the and of a I was in not her 

Python split()
通過指定分隔符對字串進行切片,如果引數num 有指定值,則僅分隔 num 個子字串
split()方法語法:
str.split(str=”“, num=string.count(str)).
引數
str – 分隔符,預設為所有的空字元,包括空格、換行(\n)、製表符(\t)等。
num – 分割次數
返回分割後的字串列表。

Python strip()
用於移除字串頭尾指定的字元(預設為空格)。
strip()方法語法:str.strip([chars]);
引數
chars – 移除字串頭尾指定的字元。
返回移除字串頭尾指定的字元生成的新字串。

2.集合(無序不重複(鍵)集)

題目內容:

實現逆向最大匹配分詞演算法,即從右向左掃描,找到最長的詞並切分。如句子“研究生命的起源”,逆向最大匹配分詞演算法的輸出結果為“研究 生命 的 起源”。

輸入格式:

第一行是以utf-8格式輸入的詞表,每個詞之間以空格分隔。

接下來是若干行以utf-8格式輸入的中文句子。

輸出格式:

以utf-8格式輸出的逆向最大匹配的分詞結果,每個詞之間使用空格分隔。每個輸入對應一行輸出。

輸入樣例:

你 我 他 愛 北京 天安門 研究 研究生 命 生命 的 起源

研究生命的起源

我愛北京天安門

輸出樣例:

研究 生命 的 起源

我 愛 北京 天安門

def load_dict():

    line = unicode(raw_input(), 'utf-8')



    word_dict = set()

    max_length = 1



    words = line.split()

    for word in words:

        if len(word) > max_length:

            max_length = len(word)

        word_dict.add(word)



    return max_length, word_dict



def bmm_word_seg(sentence, word_dict, max_length):

    words = []

    sentence = unicode(sentence, 'utf-8')

    right = len(sentence)



    while right > 0:

        for left in range(max(right - max_length, 0), right,1):

            word = sentence[left:right]

            if word in word_dict or right == left + 1:

                words.append(word)

                break

        right = left



    return words

max_length, word_dict = load_dict()

list=[]

while 1:

   seginput=raw_input()

   if seginput=='':

      break

   words = bmm_word_seg(seginput, word_dict, max_length)

   words.reverse()

   list.append(words)

for words in list:

     for word in words:

            print word.encode('utf-8'),

     print

相關推薦

python學習內容測驗作業

字典和集合 1.字典(鍵值對) 鍵必須是不可變的且不重複,值可以是任意型別 for key  in my_dict :  列舉字典中的鍵,注:鍵是無序的  my_dict.items()  –  全部的鍵-值對 my_dict.key

python學習內容

語句 func 返回 連接 tro ror ssa strong 反饋 1.反射: 1.1定義:通過字符串映射或修改程序運行時的狀態、屬性、方法 1.2有以下四個方法: (1)hasattr(object,str) 判斷object對象中是否有對應的方法或屬性,返回值:Tr

python學習內容

1.socket網路程式設計 1.1概念: 網路套接字是跨計算機網路的連線的端點。今天,計算機之間的大多數通訊都基於網際網路協議;因此大多數網路套接字都是Internet套接字。更準確地說,套接字是一個控制代碼(抽象引用),本地程式可以將其傳遞給網路應用程式程式設計介面(API)以使用該連線,例如“在此套

學習內容

實現一下測試程式碼功能 //測試程式碼1:二維座標點類 Point pPoint = new Point(45, 56); Console.WriteLine(pPoint.X);// 應該輸出45 Console.WriteL

Python學習筆記(2)

學習筆記面向對象 類 class 抽象概念 是屬性與方法的集合 對象/實例 instance/object 類的具體實現/實例化 屬性 對象狀態的抽象,用數據結構描述 操作/方法 對象行為的抽象,用操作名和實現該操作的方法來描述 一切皆對象 對象是數據和操作的封裝 對象是獨

Python學習筆記(1)

學習筆記日誌分析 業務中會生成大量的系統日誌、應用程序日誌、安全日誌等,通過對日誌的分析可以了解服務器的負載、健康狀況,可以分析客戶的分布情況、客戶的行為,甚至基於這些分析可以做出預測 一般采集流程 日誌產出 -> 采集(Logstash、Flume、Scribe)-> 存儲 -&g

python三周學習內容

poj 刪除 目的 就會 obj 處理 函數的參數 分配內存 特點 1.集合: 集合的創建: list_1 = set([1,2,3,4,5]) list_2 = set([2,3,44,7,8]) 集合的特性:集合是無序的,集合可以去掉重復的元素 集合的操作:求交集:

20172302 《Java軟體結構與資料結構》學習總結

2018年學習總結部落格總目錄:第一週 第二週 第三週 第四周 第五週 第六週 第七週 教材學習內容總結 第11章 二叉查詢樹 1.二叉查詢樹是一種含有附加屬性的二叉樹,該屬性即其左孩子小於父節點,而父節點又小於等於其右孩子。二叉查詢樹的一個示意圖: 在二叉查詢樹中:   &nbs

20172323 2018-2019-1 《程式設計與資料結構》學習總結

20172323 2018-2019-1 《程式設計與資料結構》第七週學習總結 教材學習內容總結 本週學習了第11章二叉查詢樹 11.1概述 二叉查詢樹的左孩子小於父結點,而父結點又小於或等於其右孩子 二叉查詢樹的定義是二叉樹定義的擴充套件

20172324 2018-2019-1 《程式設計與資料結構》學習總結

20172324 2018-2019-1 《程式設計與資料結構》第七週學習總結 教材學習內容總結 概述 二叉查詢樹是一種含有附加屬性的二叉樹,即其左孩子小於父節點,而父節點又小於等於其右孩子。 它是特殊的二叉樹:對於二叉樹,假設x為二叉樹中的任意一個結點,x節點包含關鍵字key,節點x的key值記

20172308 《程式設計與資料結構》學習總結

教材學習內容總結 第 十一 章 二叉查詢樹 一、概述 二叉查詢樹是一種含有附加屬性的二叉樹,即其左孩子小於父結點,父結點小於或等於右孩子 (二叉查詢樹的定義是二叉樹定義的擴充套件) 二、 用連結串列實現二叉查詢樹 addElement操作: addElement方法根據給定元素的值,在樹中的恰當位

20172314 2018-2019-1《程式設計與資料結構》學習總結

教材學習內容總結 概述 二叉查詢樹:是含附加屬性的二叉樹,即其左孩子小於父節點,而父節點又小於或等於右孩子。 二叉查詢樹的定義是二叉樹定義的擴充套件。 二叉查詢樹的各種操作 用連結串列實現二叉查詢樹 每個BinaryTreeNode物件要維護一個指向結點所儲存元素的引用,另外

20172315 2018-2019-2 《程式設計與資料結構》學習總結

20172315 2018-2019-2 《程式設計與資料結構》第七週學習總結 教材學習內容總結 二又查詢樹是一種含有附加屬性的二又樹,即其左孩子小於父結點,而父結點又小於或等於右孩子。 每個BinaryTreeNode物件要維護一個指向結點所儲存元素的引用,另外還要維護指向結點的每個孩子

20172319 《程式設計與資料結構》 學習總結

20172319 2018.10.27-11.02 《程式設計與資料結構》第7周學習總結 目錄 教材學習內容總結 教材學習中的問題和解決過程 程式碼除錯中的問題和解決過程 程式碼託管 上週考試錯題總結 結對及互評 學習進度條

2018-2019-20172329 《Java軟體結構與資料結構》學習總結

2018-2019-20172329 《Java軟體結構與資料結構》第七週學習總結 教材學習內容總結 《Java軟體結構與資料結構》第十一章-二叉查詢樹 一、概述 1、什麼是二叉查詢樹:二叉查詢樹是一種帶有附加屬性的二叉樹,即對樹中的每個結點,其左孩子都要小於其父結點,而父結點又小於或等於其右孩

20172311《程式設計與資料結構》學習總結

20172311《程式設計與資料結構》第七週學習總結 教材學習內容總結 第十一章 二叉查詢樹 樹是一種非線性結構,其中的元素被組織成一個層次結構 含有m個元素的平衡n元樹具有的高度為lognm 樹的陣列實現之計算策略: 如果我們儲存的樹不是完全的或者只是相對完全的,則該陣列

20172322 《程式設計與資料結構》學習總結

20172322 《程式設計與資料結構》第七週學習總結 教材學習內容總結 本章的內容主要講二叉查詢樹,二叉查詢樹是對於二叉樹的一種拓展,這意味著上一章中對於二叉樹的操作對於二叉查詢樹同樣適用,同時它也是一種帶有附加屬性的二叉樹。這種附加屬性即:對樹中的每個結點,它的左孩子都要小於其父結點,而父結點又小於或

20172320 2018-2019-1 《Java程式設計》學習總結

20172320 2018-2019-1 《Java程式設計》第七週學習總結 教材學習內容總結 二叉查詢樹是一種帶有附加屬性的二叉樹,即對樹中的每個結點,其左孩子都要小於其父節點,而父節點又要小於等於右孩子 二叉查詢樹的定義是二叉樹的擴充套件,因此操作是二叉樹中已定義的哪些操作的補充

20172306 2018-2019-2 《Java程式設計與資料結構》學習總結

20172306 2018-2019-2 《Java程式設計與資料結構》第七週學習總結 教材學習內容總結 概述 二叉查詢樹是一種含有附加屬性的二叉樹,即其左孩子小於父結點,而父結點又小於或等於右孩子。 二叉查詢樹的定義是二叉樹定義的擴充套件。 二叉查詢樹的各種操作:a

20172301 《程式設計與資料結構》學習總結

20172301 《程式設計與資料結構》第七週學習總結 教材學習內容總結 二叉查詢樹是一種含有附加屬性的二叉樹,其左孩子小於父結點,父結點小於或者等於右孩子。 用連結串列實現二叉查詢樹 addElement操作:根據給定元素的值,在樹中的恰當位置新增該元素。 判斷元素是