導航:首頁 > 編程語言 > 大學計算機python課程實驗報告

大學計算機python課程實驗報告

發布時間:2023-03-28 07:36:35

『壹』 計算機實驗報告 要有心得體會的

一、標題。關於XX實驗的心得體會

二、 正文。

  1. 實驗目的

  2. 實驗環境

  3. 實驗內容

  4. 實驗步驟

  5. 實驗結果
  6. 實驗體會

『貳』 python課程內容都有哪些呢

賀聖軍Python輕松入門到項目實戰(經典完整版)(超清視頻)網路網盤

鏈接: https://pan..com/s/1C9k1o65FuQKNe68L3xEx3w

提取碼: ja8v 復制這段內容後打開網路網盤手機App,操作更方便哦

若資源有問題歡迎追問~

『叄』 有大佬可以提供一下web前端21周實習手冊的範文嗎

下面是Python開發實習報告的範文,你可以參考一下:

為期兩周的實習已經結束了,這是我們升入大學以來的第一次外出實習,因此可以說我們每個人都很認真的參加了這一次實習活動。

實習過程雖然繁瑣,但同學們都表現得很積極,不怕課程難,相互幫助一起分析。這對於我們來說是一種難得地歷練,我們此次針對的是python開發的課程實習,很多同學甚至吃了飯就一頭扎在實習中。實習的指導老師也非常認真負責,耐心講解,細心指導,一點一點解答同學們的疑惑,直到同學們理解了為止。在實習中,分析,討論,演算,教室里里充滿了濃濃的學習氣氛。

人們常說:"立足本行如下棋,輸贏系於每個棋子"。大學,大代表廣博,學代表學識。大學出去的人一定要有廣博的學識飢局才能算得上是真正的大學畢業生。從大學的第一天開始,我們就必須從被動轉向主動,成為自己未來的主人,積極地管理自己的學業和將來的事業,做好人生和職業生涯規野咐劃。作為大學生,最重要的還是學習,學生第一要事是學習,學習好了才能做其他的事情。畢竟現在是知識,信息第一的時代,有了知識你才能改變,得到自己想要的,實現自己的夢想。

總結一下在此次實習過程中的收獲主要有三個方面:一是提高了實際動手操作的能力,為就業和將來的工作取得了一些寶貴的實踐經驗。二是在實習過程中成立一個小團隊,彼此之間互相溝通,互相幫助,為了我們的目標而努力,讓我看到了大家對於學習的熱情,還有每個人的學習能力。三是為畢業論文積累了素材和資料。

我們之所以能有這次充實難忘的實習機會,是因為有了學校以及學院的大力支持,實習帶隊老師的全心指導和無私的關懷;若沒有學校以及學院各位領導以及相關部門的大力支持,我們是絕對不會能有這次密切結合所學專業,密切接近實際工作環境的實習機會;若沒有各位實習老師和藹可親的指導,全頌肢純心全意的無私關懷,我們絕不可能順利完成實習任務,也絕不可能滿載而歸。在這里,向為了我們能真正學到知識而不辭辛苦做了大量工作,而且每天都會激勵我們的實習帶隊老師致以最衷心的感謝!

"路漫漫其修遠兮,吾將上下而求索"我相信自己在以後的學習中會不斷的完善,提升Python專業能力,不求最好只求更好,我相信這次實訓對我之後的學習和工作有很大的幫助!

『肆』 100分求一份資料庫原理課程設計的實驗報告

(圖放不上去呀 我自己做的E-R圖)

計算機科學與信息學院

課程設計報告

課程名稱: 資料庫概論課程設計
專 業: 網路方向
班 級: ====
學 號: ===
姓 名: 閆娟
題 目: 網上購書系統
指導教師: 肖淑芬

2011年6月

目錄
一、課程設計的背景來源 3
二、網上購書系統調查及前景 4
三、網上購書設計思想 4
1、前台系統工作流程 5
2、後台系統工作流程 6
四、網上書店工作過程的內容 6
五、資料庫設計 7
1、數據項 7
2、 數據結構 8
3、關系模式的設計 8
4、視圖的設計 9
六、網上購書E-R圖 10
六、系統的源程序 15
七、系統評價及心得體會 20

一、課程設計的背景來源
1,其實寫這個課程設計寫得比較匆忙,馬上其他可就要考試了,本想找個男的題目來挑戰下自己,後來還是因為時間需要,所以選了個相對來說我們生活比較容易接近的
2,隨著現在社會的發展,網路已經成為一個市場很大的交易平台,很多人由於時間需要或者各方面原因都把網上購物作為一種消費方式,有時我們在書店要花很長時間去找一本書,有時還找不到,記得有次在孝感學院圖書館找一本概率論輔導書,花了很長很長時間呀,所以我深有體會,還是感覺在網上購書比較簡單,方便。
3,班上有很多同學都從事網上購物,我剛好想利用自己的專業知識來學習下這方面的知識,自己查查資料,把這個課程設計做好。

二、網上購書系統調查及前景

人們喜歡通過閱覽書籍拓展自己的知識視野,可在實際生活的購書過程中人們卻遇到了不少麻煩,比如購書人多,挑書難,搬書重等,因此既方便又快捷的網路購書便成為了一種很有潛力的購書消費方式。信息時代,電子商務已經成為我們現實生活中不可缺少的一個重要組成部分,同時它以一種特殊的方式改變著我們的生活。根據調查結果顯示,網民上網以獲取信息為主要目的佔5 3.1%。目前我國上網購物的群體中,絕大多數是年輕人, 他們大多數是收入穩定、文化水平較高的中青年,網上消費已經日益成為他們生活中的一種重要的消費方式,他們成為了最有潛力的未來網上消費者。
三、網上購書設計思想
首先網上購書系統聽起來是個很雜的程序,因為有很多很多書,也有很多很多人來買,但是其實我們簡單的可以把它分為兩個模塊,這樣我們就能很好的理解了,網上書店主要由前台會員管理模塊和後台管理員模塊兩部分組成。
前台功能模塊主要用於實現會員注冊,登錄,修改個人信息,分類查看書目信息、購書、管理購物車、結帳、查看各種服務條款等功能。
後台管理模塊主要用於實現後台管理人員對會員,商品,物流,訂單和系統的管理等功能。
1、前台系統工作流程
首先當我們用戶登陸這個網站時,一開始就會出現讓你登陸,如果是你會員,你可以直接登錄,如果你不是會員,你要注冊個賬號。
1、 當你是會員時,你可以查看你的各項團橘服務,比如說上次你收藏了什麼書籍,以及你喜歡的書的種類,在可以看下前幾次你購買書的情況,在可以修改個人信息,修改密碼等,你也可以查看自己網上交易情況,看下自塌姿團己買的書的情況,以及看上什麼書了,可以把它放回購物車,方便自己購買。
2、 當你是非會員時,你要先進行注冊,填寫自己的基本信息,當你填好後,你也是其中一員了,你也同樣可以向會員那樣找自己的書了,相對來說比較方便。
3、 還有人不注冊,只是進來逛下網站,看看自己是否有必要買一些書。
2、後台系統工作流程
後台系統工作流程主要用於實現後台管理人員對會員,商品,物流,訂單和系統的管理等功能,他要對會員的登記進行統計,以及購物等方面的內容管理

四、網上書店工作過程的內容

1、管理員信息,包括數據項有:管理員編號、管理員賬號、管理員密碼。
2、會員信息,包括數據項有:會員賬號、會員密碼、會員昵稱、會員E-mail、會員級別(管理員設定)。
3、圖書信息,包括數據項有:圖書編號、圖書名稱、作者、出版社編號、出版日期、圖書類別編號、圖書簡介。
(⑴出版社信息,包括數據冊慧項有:出版社編號、出版社名稱。
⑵圖書類別信息,包括數據項有:圖書類別編號、圖書類別名稱。)
4、圖書訂單,包括數據項有:會員賬號、下定單日期、收貨地址、收貨地址郵編、收貨人姓名、收貨人聯系方式、送貨方式編號、總費用、圖書名稱、現已售出量情況。
5、購物車,包括數據項有:會員賬號、每種圖書名稱、每種圖書市場價格、每種圖書網站價格、每種圖書數量、每種圖書的價格、圖書總價。

五、資料庫設計
1、數據項
數據項
數據項名 數據類型 長度 別名 取值范圍
會員編號 字元型 15 會員的編號
姓名 文本型 20 會員的姓名
密碼 文本型 20 會員的密碼
電話 字元型 12 會員的電話
地址 文本型 50 會員的地址
商品編號 字元型 15 商品的編號
類型 文本型 10 商品的類型
名稱 文本型 20 商品的名稱
價格 整型 6 商品的價格
簡介 文本型 500 商品的簡介
圖片 圖片型 商品的圖片
購物車編號 字元型 10 購物車的編號
商品數量 整型 10 購買商品的數量
訂單編號 字元型 15 購物時生成的訂單
訂單日期 時間型 10 購買商品的時間
2、 數據結構
系統需求數據結構
數據結構名 含義說明 組成
會員 記錄會員的基本信息 會員編號、姓名、密碼、電話、地址
商品 記錄銷售商提供的商品信息 商品編號、類型、名稱、價格、簡介、圖片
訂購 記錄會員的購物信息 會員編號、商品編號、訂單編號、訂單日期
購物車 存儲會員需要購買的商品 會員編號、商品編號、購物車編號、商品數量

3、關系模式的設計
會員
數據項名 數據類型 長度 別名 是否為空 主外鍵
會員編號 字元型 15 會員編號 否 主鍵
姓名 文本型 20 姓名 否
密碼 文本型 20 密碼 否
電話 字元型 12 電話 否
地址 文本型 50 地址 否

商品
數據項名 數據類型 長度 別名 是否為空 主外鍵
商品編號 字元型 15 商品編號 否 主鍵
類型 字元型 15 類型 否
名稱 字元型 20 名稱 否
價格 整型 10 價格 否
簡介 文本型 500 簡介
圖片 image型 100 圖片

訂購
數據項名 數據類型 長度 別名 是否為空 主外鍵
會員編號 字元型 15 會員編號 否 外鍵 主鍵
商品編號 字元型 10 商品編號 否 外鍵
訂單編號 字元型 10 訂單編號 否
訂單日期 日期型 10 訂單日期 否

購物車
數據項名 數據類型 長度 別名 是否為空 主外鍵
會員編號 字元型 15 會員編號 否 主鍵
商品編號 字元型 15 商品編號 否
購物車編號 字元型 15 購物車編號 否
商品數量 整型 6 商品數量 否

4、視圖的設計
搜索商品視圖
數據項名 數據類型 長度 別名 是否為空
名稱 字元型 10 名稱 否
類型 字元型 10 類型 否
價格 整型 10 價格 否
簡介 文本型 4 簡介 否

六、網上購書E-R圖

否 是

網上書店系統業務流程:

網上書店前台管理功能結構圖:

六、系統的源程序
ackage cart;
import java.util.Vector;
public class Cart {
Vector v = new Vector();
String act = null;
String item = null;
private void addItem(String id) {
v.addElement(id);
}
private void removeItem(String id) {
v.removeElement(id);
}
public void setItem(String id) {
item = id;
}
public void setAct(String s) {
act = s;
}
public String[] getItems() {
String[] s = new String[v.size()];
v.Into(s);
return s;
}
public void processRequest() {
if (act.equals("add"))
addItem(item);
else if (act.equals("remove"))
removeItem(item);
// reset at the end of the request
reset();
}
// reset
private void reset() {
act = null;
item = null;
}
public void clearAll(){
v.removeAllElements();
}
}

現實頁面信息,提示等操作的設計:
package spage;
import java.sql.*;
public class ShowPage
{
private String str = "";

//顯示頁號為p的一頁(user)
public String printPage(ResultSet rs, int p, int size)
{
str = "";
//將訪問游標定位到頁號為p的頁要顯示的第一條記錄的位置
try {
for(int k=0;k<(p-1)*size;k++)
rs.next();
}
catch(SQLException e) { }
for(int iPage=1; iPage<=size; iPage++) {
str += printRow(rs,iPage,p);
try {
if(!rs.next()) break;
}
catch(Exception e) { }
}
return str;
}
//顯示單行記錄(user)
public String printRow( ResultSet rs ,int i,int p)
{
String temp = "";
try {
int id=rs.getInt("userid");
temp+="<tr align='center' bgcolor='#FFFAF7'>";
temp+="<td><a href='javaScript:seeUser("+id+")'>"+rs.getString("name")+"</a></td>";
temp+="<td>"+rs.getString("sex")+"</td>";
temp+="<td>"+rs.getString("phone")+"</td>";
temp+="<td>"+rs.getString("address")+"</td>";
temp += "<td><a href='updateuser.jsp?updateid="+id+"'>修改</a></td>";
temp += "<td><a href='dealdeleteuser.jsp?delid="+id+"'>刪除</a></td>";
temp += "</tr>";
}
catch(SQLException e) { }
return temp;
}
//顯示頁號為p的一頁(book)
public String bookPage(ResultSet rs, int p, int size,boolean f)
{
str = "";
//將訪問游標定位到頁號為p的頁要顯示的第一條記錄的位置
try {
for(int k=0;k<(p-1)*size;k++)
rs.next();
}
catch(SQLException e) { }
for(int iPage=1; iPage<=size; iPage++) {
str += bookRow(rs,iPage,p,f);
try {
if(!rs.next()) break;
}
catch(Exception e) { }
}
return str;
}
//顯示單行記錄(book)
public String bookRow( ResultSet rs ,int i,int p,boolean f)
{
String temp = "";
try {
int id=rs.getInt("bookid");
temp+="<tr align='center'>";
temp+="<td><a href='detail.jsp?detailid="+id+"'>"+rs.getString("bookname")+"</a></td>";
temp+="<td>"+rs.getString("author")+"</td>";
temp+="<td>"+rs.getString("pubhouse")+"</td>";
temp+="<td>"+rs.getString("price")+"</td>";
if(f)
{
temp+="<td>"+rs.getString("salenum")+"</td>";
temp+="<td><a href='updatebook.jsp?updateid="+id+"'>修改</a></td>";
temp+="<td><a href='dealdeletebook.jsp?delid="+id+"'>刪除</a></td>";
}
else
temp+="<td><a href='dealcart.jsp?dealid="+id+"&act=add'>加入購物車</a></td>";
temp += "</tr>";
}
catch(SQLException e) { }
return temp;
}
//顯示頁號為p的一頁(order)
public String orderPage(ResultSet rs, int p, int size,boolean f)
{
str = "";
//將訪問游標定位到頁號為p的頁要顯示的第一條記錄的位置
try {
for(int k=0;k<(p-1)*size;k++)
rs.next();
}
catch(SQLException e) { }
for(int iPage=1; iPage<=size; iPage++) {
str += orderRow(rs,iPage,p,f);
try {
if(!rs.next()) break;
}
catch(Exception e) { }
}
return str;
}
//顯示單行記錄(order)
public String orderRow( ResultSet rs ,int i,int p,boolean f)
{
String temp = "";
try {
String orderid=rs.getString("orderid");
temp+="<tr align='center'>";
temp+="<td><a href='detailorder.jsp?detailid="+orderid+"'>"+orderid+"</a></td>";
temp+="<td>"+(rs.getString("orderdate")).substring(0,10)+"</td>";
temp+="<td>"+rs.getString("orderstate")+"</td>";
if(f)
{
temp += "<td><a href='javaScript:seeUser("+rs.getString("userid")+")'>"+rs.getString("username")+"</a></td>";
temp += "<td><a href='dealdeleteorder.jsp?delid="+orderid+"'>刪除</a></td>";
}
temp+="</tr>";
}
catch(SQLException e) { }
return temp;
}
}

七、系統評價及心得體會
1、了解很多關於網上購書程序上的知識,要寫這個課程設計,我把有關網上購書的概論也看了下,發現不知道是這個設計太簡單還是怎麼回事,網上出現很多此樣的版本,很有有更新,可能我們對資料庫設計的程序還不是很了解吧。
2,要寫資料庫E-R圖,發現很難畫啊,還要把線段連來連去,覺得在畫圖上面花了很多時間
3,一定要先了解數據情況,要先熟悉了網上購書的基本操作,在開始研究,最好自己去試一下網上購書,我就自己親自去點擊了下網上購書網,然後才下手寫的課程設計。

『伍』 後端編程Python3-調試、測試和性能剖析(下)

單元測試(Unit Testing)

為程序編寫測試——如果做的到位——有助於減少bug的出現,並可以提高我們對程序按預期目標運行的信心。通常,測試並不能保證正確性,因為對大多數程序而言, 可能的輸入范圍以及可能的計算范圍是如此之大,只有其中最小的一部分能被實際地進 行測試。盡管如此,通過仔細地選擇測試的方法和目標,可以提高代碼的質量。

大量不同類型的測試都可以進行,比如可用性測試、功能測試以及整合測試等。這里, 我們只講單元測試一對單獨的函數、類與方法進行測試,確保其符合預期的行為。

TDD的一個關鍵點是,當我們想添加一個功能時——比如為類添加一個方法—— 我們首次為其編寫一個測試用例。當然,測試將失敗,因為我們還沒有實際編寫該方法。現在,我們編寫該方法,一旦方法通過了測試,就可以返回所有測試,確保我們新添加的代碼沒有任何預期外的副作用。一旦所有測試運行完畢(包括我們為新功能編寫的測試),就可以對我們的代碼進行檢查,並有理有據地相信程序行為符合我們的期望——當然,前提是我們的測試是適當的。

比如,我們編寫了一個函數,該函數在特定的索引位置插入一個字元串,可以像下面這樣開始我們的TDD:

def insert_at(string, position, insert):

"""Returns a of string with insert inserted at the position

>>> string = "ABCDE"

>>> result =[]

>>> for i in range(-2, len(string) + 2):

... result.append(insert_at(string, i,「-」))

>>> result[:5]

['ABC-DE', 'ABCD-E', '-ABCDE','A-BCDE', 'AB-CDE']

>>> result[5:]

['ABC-DE', 'ABCD-E', 'ABCDE-', 'ABCDE-']

"""

return string

對不返回任何參數的函數或方法(通常返回None),我們通常賦予其由pass構成的一個suite,對那些返回值被試用的,我們或者返回一個常數(比如0),或者某個不變的參數——這也是我們這里所做的。(在更復雜的情況下,返回fake對象可能更有用一一對這樣的類,提供mock對象的第三方模塊是可用的。)

運行doctest時會失敗,並列出每個預期內的字元串('ABCD-EF'、'ABCDE-F' 等),及其實際獲取的字元串(所有的都是'ABCD-EF')。一旦確定doctest是充分的和正確的,就可以編寫該函數的主體部分,在本例中只是簡單的return string[:position] + insert+string[position:]。(如果我們編寫的是 return string[:position] + insert,之後復制 string [:position]並將其粘貼在末尾以便減少一些輸入操作,那麼doctest會立即提示錯誤。)

Python的標准庫提供了兩個單元測試模塊,一個是doctest,這里和前面都簡單地提到過,另一個是unittest。此外,還有一些可用於Python的第三方測試工具。其中最著名的兩個是nose (code.google.com/p/python-nose)與py.test (codespeak.net/py/dist/test/test.html), nose 致力於提供比標準的unittest 模塊更廣泛的功能,同時保持與該模塊的兼容性,py.test則採用了與unittest有些不同的方法,試圖盡可能消除樣板測試代碼。這兩個第三方模塊都支持測試發現,因此沒必要寫一個總體的測試程序——因為模塊將自己搜索測試程序。這使得測試整個代碼樹或某一部分 (比如那些已經起作用的模塊)變得很容易。那些對測試嚴重關切的人,在決定使用哪個測試工具之前,對這兩個(以及任何其他有吸引力的)第三方模塊進行研究都是值 得的。

創建doctest是直截了當的:我們在模塊中編寫測試、函數、類與方法的docstrings。 對於模塊,我們簡單地在末尾添加了 3行:

if __name__ =="__main__":

import doctest

doctest.testmod()

在程序內部使用doctest也是可能的。比如,blocks.py程序(其模塊在後面)有自己函數的doctest,但以如下代碼結尾:

if __name__== "__main__":

main()

這里簡單地調用了程序的main()函數,並且沒有執行程序的doctest。要實驗程序的 doctest,有兩種方法。一種是導入doctest模塊,之後運行程序---比如,在控制台中輸 入 python3 -m doctest blocks.py (在 Wndows 平台上,使用類似於 C:Python3 lpython.exe 這樣的形式替代python3)。如果所有測試運行良好,就沒有輸出,因此,我們可能寧願執行python3-m doctest blocks.py-v,因為這會列出每個執行的doctest,並在最後給出結果摘要。

另一種執行doctest的方法是使用unittest模塊創建單獨的測試程序。在概念上, unittest模塊是根據Java的JUnit單元測試庫進行建模的,並用於創建包含測試用例的測試套件。unittest模塊可以基於doctests創建測試用例,而不需要知道程序或模塊包含的任何事物——只要知道其包含doctest即可。因此,為給blocks.py程序製作一個測試套件,我們可以創建如下的簡單程序(將其稱為test_blocks.py):

import doctest

import unittest

import blocks

suite = unittest.TestSuite()

suite.addTest(doctest.DocTestSuite(blocks))

runner = unittest.TextTestRunner()

print(runner.run(suite))

注意,如果釆用這種方法,程序的名稱上會有一個隱含的約束:程序名必須是有效的模塊名。因此,名為convert-incidents.py的程序的測試不能寫成這樣。因為import convert-incidents不是有效的,在Python標識符中,連接符是無效的(避開這一約束是可能的,但最簡單的解決方案是使用總是有效模塊名的程序文件名,比如,使用下劃線替換連接符)。這里展示的結構(創建一個測試套件,添加一個或多個測試用例或測試套件,運行總體的測試套件,輸出結果)是典型的機遇unittest的測試。運行時,這一特定實例產生如下結果:

...

.............................................................................................................

Ran 3 tests in 0.244s

OK

每次執行一個測試用例時,都會輸出一個句點(因此上面的輸出最前面有3個句點),之後是一行連接符,再之後是測試摘要(如果有任何一個測試失敗,就會有更多的輸出信息)。

如果我們嘗試將測試分離開(典型情況下是要測試的每個程序和模塊都有一個測試用例),就不要再使用doctests,而是直接使用unittest模塊的功能——尤其是我們習慣於使用JUnit方法進行測試時ounittest模塊會將測試分離於代碼——對大型項目(測試編寫人員與開發人員可能不一致)而言,這種方法特別有用。此外,unittest單元測試編寫為獨立的Python模塊,因此,不會像在docstring內部編寫測試用例時受到兼容性和明智性的限制。

unittest模塊定義了 4個關鍵概念。測試夾具是一個用於描述創建測試(以及用完之後將其清理)所必需的代碼的術語,典型實例是創建測試所用的一個輸入文件,最後刪除輸入文件與結果輸出文件。測試套件是一組測試用例的組合。測試用例是測試的基本單元—我們很快就會看到實例。測試運行者是執行一個或多個測試套件的對象。

典型情況下,測試套件是通過創建unittest.TestCase的子類實現的,其中每個名稱 以「test」開頭的方法都是一個測試用例。如果我們需要完成任何創建操作,就可以在一個名為setUp()的方法中實現;類似地,對任何清理操作,也可以實現一個名為 tearDown()的方法。在測試內部,有大量可供我們使用的unittest.TestCase方法,包括 assertTrue()、assertEqual()、assertAlmostEqual()(對於測試浮點數很有用)、assertRaises() 以及更多,還包括很多對應的逆方法,比如assertFalse()、assertNotEqual()、failIfEqual()、 failUnlessEqual ()等。

unittest模塊進行了很好的歸檔,並且提供了大量功能,但在這里我們只是通過一 個非常簡單的測試套件來感受一下該模塊的使用。這里將要使用的實例,該練習要求創建一個Atomic模塊,該模塊可以用作一 個上下文管理器,以確保或者所有改變都應用於某個列表、集合或字典,或者所有改變都不應用。作為解決方案提供的Atomic.py模塊使用30行代碼來實現Atomic類, 並提供了 100行左右的模塊doctest。這里,我們將創建test_Atomic.py模塊,並使用 unittest測試替換doctest,以便可以刪除doctest。

在編寫測試模塊之前,我們需要思考都需要哪些測試。我們需要測試3種不同的數據類型:列表、集合與字典。對於列表,需要測試的是插入項、刪除項或修改項的值。對於集合,我們必須測試向其中添加或刪除一個項。對於字典,我們必須測試的是插入一個項、修改一個項的值、刪除一個項。此外,還必須要測試的是在失敗的情況下,不會有任何改變實際生效。

結構上看,測試不同數據類型實質上是一樣的,因此,我們將只為測試列表編寫測試用例,而將其他的留作練習。test_Atomic.py模塊必須導入unittest模塊與要進行測試的Atomic模塊。

創建unittest文件時,我們通常創建的是模塊而非程序。在每個模塊內部,我們定義一個或多個unittest.TestCase子類。比如,test_Atomic.py模塊中僅一個單獨的 unittest-TestCase子類,也就是TestAtomic (稍後將對其進行講解),並以如下兩行結束:

if name == "__main__":

unittest.main()

這兩行使得該模塊可以單獨運行。當然,該模塊也可以被導入並從其他測試程序中運行——如果這只是多個測試套件中的一個,這一點是有意義的。

如果想要從其他測試程序中運行test_Atomic.py模塊,那麼可以編寫一個與此類似的程序。我們習慣於使用unittest模塊執行doctests,比如:

import unittest

import test_Atomic

suite = unittest.TestLoader().loadTestsFromTestCase(test_Atomic.TestAtomic)

runner = unittest.TextTestRunner()

pnnt(runner.run(suite))

這里,我們已經創建了一個單獨的套件,這是通過讓unittest模塊讀取test_Atomic 模塊實現的,並且使用其每一個test*()方法(本實例中是test_list_success()、test_list_fail(),稍後很快就會看到)作為測試用例。

我們現在將查看TestAtomic類的實現。對通常的子類(不包括unittest.TestCase 子類),不怎麼常見的是,沒有必要實現初始化程序。在這一案例中,我們將需要建立 一個方法,但不需要清理方法,並且我們將實現兩個測試用例。

def setUp(self):

self.original_list = list(range(10))

我們已經使用了 unittest.TestCase.setUp()方法來創建單獨的測試數據片段。

def test_list_succeed(self):

items = self.original_list[:]

with Atomic.Atomic(items) as atomic:

atomic.append(1999)

atomic.insert(2, -915)

del atomic[5]

atomic[4]= -782

atomic.insert(0, -9)

self.assertEqual(items,

[-9, 0, 1, -915, 2, -782, 5, 6, 7, 8, 9, 1999])

def test_list_fail(self):

items = self.original_list[:]

with self.assertRaises(AttributeError):

with Atomic.Atomic(items) as atomic:

atomic.append(1999)

atomic.insert(2, -915)

del atomic[5]

atomic[4] = -782

atomic.poop() # Typo

self.assertListEqual(items, self.original_list)

這里,我們直接在測試方法中編寫了測試代碼,而不需要一個內部函數,也不再使用unittest.TestCase.assertRaised()作為上下文管理器(期望代碼產生AttributeError)。 最後我們也使用了 Python 3.1 的 unittest.TestCase.assertListEqual()方法。

正如我們已經看到的,Python的測試模塊易於使用,並且極為有用,在我們使用 TDD的情況下更是如此。它們還有比這里展示的要多得多的大量功能與特徵——比如,跳過測試的能力,這有助於理解平台差別——並且這些都有很好的文檔支持。缺失的一個功能——但nose與py.test提供了——是測試發現,盡管這一特徵被期望在後續的Python版本(或許與Python 3.2—起)中出現。

性能剖析(Profiling)

如果程序運行很慢,或者消耗了比預期內要多得多的內存,那麼問題通常是選擇的演算法或數據結構不合適,或者是以低效的方式進行實現。不管問題的原因是什麼, 最好的方法都是准確地找到問題發生的地方,而不只是檢査代碼並試圖對其進行優化。 隨機優化會導致引入bug,或者對程序中本來對程序整體性能並沒有實際影響的部分進行提速,而這並非解釋器耗費大部分時間的地方。

在深入討論profiling之前,注意一些易於學習和使用的Python程序設計習慣是有意義的,並且對提高程序性能不無裨益。這些技術都不是特定於某個Python版本的, 而是合理的Python程序設計風格。第一,在需要只讀序列時,最好使用元組而非列表; 第二,使用生成器,而不是創建大的元組和列表並在其上進行迭代處理;第三,盡量使用Python內置的數據結構 dicts、lists、tuples 而不實現自己的自定義結構,因為內置的數據結構都是經過了高度優化的;第四,從小字元串中產生大字元串時, 不要對小字元串進行連接,而是在列表中累積,最後將字元串列表結合成為一個單獨的字元串;第五,也是最後一點,如果某個對象(包括函數或方法)需要多次使用屬性進行訪問(比如訪問模塊中的某個函數),或從某個數據結構中進行訪問,那麼較好的做法是創建並使用一個局部變數來訪問該對象,以便提供更快的訪問速度。

Python標准庫提供了兩個特別有用的模塊,可以輔助調査代碼的性能問題。一個是timeit模塊——該模塊可用於對一小段Python代碼進行計時,並可用於諸如對兩個或多個特定函數或方法的性能進行比較等場合。另一個是cProfile模塊,可用於profile 程序的性能——該模塊對調用計數與次數進行了詳細分解,以便發現性能瓶頸所在。

為了解timeit模塊,我們將查看一些小實例。假定有3個函數function_a()、 function_b()、function_c(), 3個函數執行同樣的計算,但分別使用不同的演算法。如果將這些函數放於同一個模塊中(或分別導入),就可以使用timeit模塊對其進行運行和比較。下面給出的是模塊最後使用的代碼:

if __name__ == "__main__":

repeats = 1000

for function in ("function_a", "function_b", "function_c"):

t = timeit.Timer("{0}(X, Y)".format(function),"from __main__ import {0}, X, Y".format(function))

sec = t.timeit(repeats) / repeats

print("{function}() {sec:.6f} sec".format(**locals()))

賦予timeit.Timer()構造子的第一個參數是我們想要執行並計時的代碼,其形式是字元串。這里,該字元串是「function_a(X,Y)」;第二個參數是可選的,還是一個待執行的字元串,這一次是在待計時的代碼之前,以便提供一些建立工作。這里,我們從 __main__ (即this)模塊導入了待測試的函數,還有兩個作為輸入數據傳入的變數(X 與Y),這兩個變數在該模塊中是作為全局變數提供的。我們也可以很輕易地像從其他模塊中導入數據一樣來進行導入操作。

調用timeit.Timer對象的timeit()方法時,首先將執行構造子的第二個參數(如果有), 之後執行構造子的第一個參數並對其執行時間進行計時。timeit.Timer.timeit()方法的返回值是以秒計數的時間,類型是float。默認情況下,timeit()方法重復100萬次,並返回所 有這些執行的總秒數,但在這一特定案例中,只需要1000次反復就可以給出有用的結果, 因此對重復計數次數進行了顯式指定。在對每個函數進行計時後,使用重復次數對總數進行除法操作,就得到了平均執行時間,並在控制台中列印出函數名與執行時間。

function_a() 0.001618 sec

function_b() 0.012786 sec

function_c() 0.003248 sec

在這一實例中,function_a()顯然是最快的——至少對於這里使用的輸入數據而言。 在有些情況下一一比如輸入數據不同會對性能產生巨大影響——可能需要使用多組輸入數據對每個函數進行測試,以便覆蓋有代表性的測試用例,並對總執行時間或平均執行時間進行比較。

有時監控自己的代碼進行計時並不是很方便,因此timeit模塊提供了一種在命令行中對代碼執行時間進行計時的途徑。比如,要對MyMole.py模塊中的函數function_a()進行計時,可以在控制台中輸入如下命令:python3 -m timeit -n 1000 -s "from MyMole import function_a, X, Y" "function_a(X, Y)"(與通常所做的一樣,對 Windows 環境,我們必須使用類似於C:Python3lpython.exe這樣的內容來替換python3)。-m選項用於Python 解釋器,使其可以載入指定的模塊(這里是timeit),其他選項則由timeit模塊進行處理。 -n選項指定了循環計數次數,-s選項指定了要建立,最後一個參數是要執行和計時的代碼。命令完成後,會向控制台中列印運行結果,比如:

1000 loops, best of 3: 1.41 msec per loop

之後我們可以輕易地對其他兩個函數進行計時,以便對其進行整體的比較。

cProfile模塊(或者profile模塊,這里統稱為cProfile模塊)也可以用於比較函數 與方法的性能。與只是提供原始計時的timeit模塊不同的是,cProfile模塊精確地展示 了有什麼被調用以及每個調用耗費了多少時間。下面是用於比較與前面一樣的3個函數的代碼:

if __name__ == "__main__":

for function in ("function_a", "function_b", "function_c"):

cProfile.run("for i in ranged 1000): {0}(X, Y)".format(function))

我們必須將重復的次數放置在要傳遞給cProfile.run()函數的代碼內部,但不需要做任何創建,因為模塊函數會使用內省來尋找需要使用的函數與變數。這里沒有使用顯式的print()語句,因為默認情況下,cProfile.run()函數會在控制台中列印其輸出。下面給出的是所有函數的相關結果(有些無關行被省略,格式也進行了稍許調整,以便與頁面適應):

1003 function calls in 1.661 CPU seconds

ncalls tottime percall cumtime percall filename:lineno(function)

1 0.003 0.003 1.661 1.661 :1 ( )

1000 1.658 0.002 1.658 0.002 MyMole.py:21 (function_a)

1 0.000 0.000 1.661 1.661 {built-in method exec}

5132003 function calls in 22.700 CPU seconds

ncalls tottime percall cumtime percall filename:lineno(function)

1 0.487 0.487 22.700 22.700 : 1 ( )

1000 0.011 0.000 22.213 0.022 MyMole.py:28(function_b)

5128000 7.048 0.000 7.048 0.000 MyMole.py:29( )

1000 0.00 50.000 0.005 0.000 {built-in method bisectjeft}

1 0.000 0.000 22.700 22.700 {built-in method exec}

1000 0.001 0.000 0.001 0.000 {built-in method len}

1000 15.149 0.015 22.196 0.022 {built-in method sorted}

5129003 function calls in 12.987 CPU seconds

ncalls tottime percall cumtime percall filename:lineno(function)

1 0.205 0.205 12.987 12.987 :l ( )

1000 6.472 0.006 12.782 0.013 MyMole.py:36(function_c)

5128000 6.311 0.000 6.311 0.000 MyMole.py:37( )

1 0.000 0.000 12.987 12.987 {built-in method exec}

ncalls ("調用的次數")列列出了對指定函數(在filename:lineno(function)中列出) 的調用次數。回想一下我們重復了 1000次調用,因此必須將這個次數記住。tottime (「總的時間」)列列出了某個函數中耗費的總時間,但是排除了函數調用的其他函數內部花費的時間。第一個percall列列出了對函數的每次調用的平均時間(tottime // ncalls)。 cumtime ("累積時間")列出了在函數中耗費的時間,並且包含了函數調用的其他函數內部花費的時間。第二個percall列列出了對函數的每次調用的平均時間,包括其調用的函數耗費的時間。

這種輸出信息要比timeit模塊的原始計時信息富有啟發意義的多。我們立即可以發現,function_b()與function_c()使用了被調用5000次以上的生成器,使得它們的速度至少要比function_a()慢10倍以上。並且,function_b()調用了更多通常意義上的函數,包括調用內置的sorted()函數,這使得其幾乎比function_c()還要慢兩倍。當然,timeit() 模塊提供了足夠的信息來查看計時上存在的這些差別,但cProfile模塊允許我們了解為什麼會存在這些差別。正如timeit模塊允許對代碼進行計時而又不需要對其監控一樣,cProfile模塊也可以做到這一點。然而,從命令行使用cProfile模塊時,我們不能精確地指定要執行的 是什麼——而只是執行給定的程序或模塊,並報告所有這些的計時結果。需要使用的 命令行是python3 -m cProfile programOrMole.py,產生的輸出信息與前面看到的一 樣,下面給出的是輸出信息樣例,格式上進行了一些調整,並忽略了大多數行:

10272458 function calls (10272457 primitive calls) in 37.718 CPU secs

ncalls tottime percall cumtime percall filename:lineno(function)

10.000 0.000 37.718 37.718 :1 ( )

10.719 0.719 37.717 37.717 :12( )

1000 1.569 0.002 1.569 0.002 :20(function_a)

1000 0.011 0.000 22.560 0.023 :27(function_b)

5128000 7.078 0.000 7.078 0.000 :28( )

1000 6.510 0.007 12.825 0.013 :35(function_c)

5128000 6.316 0.000 6.316 0.000 :36( )

在cProfile術語學中,原始調用指的就是非遞歸的函數調用。

以這種方式使用cProfile模塊對於識別值得進一步研究的區域是有用的。比如,這里 我們可以清晰地看到function_b()需要耗費更長的時間,但是我們怎樣獲取進一步的詳細資料?我們可以使用cProfile.run("function_b()")來替換對function_b()的調用。或者可以保存完全的profile數據並使用pstats模塊對其進行分析。要保存profile,就必須對命令行進行稍許修改:python3 -m cProfile -o profileDataFile programOrMole.py。 之後可以對 profile 數據進行分析,比如啟動IDLE,導入pstats模塊,賦予其已保存的profileDataFile,或者也可以在控制台中互動式地使用pstats。

下面給出的是一個非常短的控制台會話實例,為使其適合頁面展示,進行了適當調整,我們自己的輸入則以粗體展示:

$ python3 -m cProfile -o profile.dat MyMole.py

$ python3 -m pstats

Welcome to the profile statistics browser.

% read profile.dat

profile.dat% callers function_b

Random listing order was used

List reced from 44 to 1 e to restriction

Function was called by...

ncalls tottime cumtime

:27(function_b) <- 1000 0.011 22.251 :12( )

profile.dat% callees function_b

Random listing order was used

List reced from 44 to 1 e to restriction

Function called...

ncalls tottime cumtime

:27(function_b)->

1000 0.005 0.005 built-in method bisectJeft

1000 0.001 0.001 built-in method len

1000 1 5.297 22.234 built-in method sorted

profile.dat% quit

輸入help可以獲取命令列表,help後面跟隨命令名可以獲取該命令的更多信息。比如, help stats將列出可以賦予stats命令的參數。還有其他一些可用的工具,可以提供profile數據的圖形化展示形式,比如 RunSnakeRun (www.vrplumber.com/prograinming/runsnakerun), 該工具需要依賴於wxPython GUI庫。

使用timeit與cProfile模塊,我們可以識別出我們自己代碼中哪些區域會耗費超過預期的時間;使用cProfile模塊,還可以准確算岀時間消耗在哪裡。

以上內容部分摘自視頻課程 05後端編程Python-19調試、測試和性能調優(下) ,更多實操示例請參照視頻講解。跟著張員外講編程,學習更輕松,不花錢還能學習真本領。

『陸』 Python的應用前景。

目前python被用的還是蠻多的,一些大公司如Google(實現web爬蟲和搜索引擎中的很多組件),Yahoo(管理討論組),NASA,YouTube(視頻分享服務大部分由Python編寫)等等對Python都很青睞。而國內的豆瓣可以說是給Python予千萬寵愛了,它的前台後台清一色的都是Python的身影。另外,我們計算機視覺這塊用的很頻繁的OpenCV也提供了Python的介面,網上還提供了不少Python的機器學習的庫(例如milk,scikit-learn,Pylearn2等),Deep learning的一個知名的Python的庫theano,自然語言處理的庫NLTK。此外,Python為數學、科學、工程和繪圖等提供了有趣的標准庫(例如,NumPy ,SciPy和matplotlib等),Python佔有的用戶群越來越廣。
通過網路大概了解了下python的應用領域,如:系統運維、科學計算、人工智慧、網路編程(如搜索引擎、爬蟲、伺服器編程)、web開發、雲計算系統、圖形化、教育等等等…………好吧,一堆看不懂的,只注意到了「爬蟲」、「科學計算」和「圖形化」三個關鍵詞,簡單理解就是爬數據、分析挖掘和圖形展示。
Python的應用
在數據爬蟲方面,利用rullib、requests、BeautifulSoup、re、Scrapy等模塊進行爬取想要的網站資料,如搜房、淘寶、京東、微信、今日頭條、中國知網、新浪、貼吧、金融界、電影論壇等等,真正的實現所見即所得。
在數據處理方面,利用Pandas、Numpy、Scipy、PyMVPA等模塊可以幫助你在計算巨型數組、矢量分析、神經網路等方面高效率完成工作。尤其是在教育科研方面,可以發揮出獨特的優勢。
在數據展示方面,利用ReportLab 、matplotlib、basemap 等模塊可以生成相應的統計圖表或地圖等。另外,利用PyOpenGl模塊,可以非常迅速的編寫出三維場景。
總之是集數據採集、分析、挖掘及展示等功能於一體,典型的萬金油。另外,如果是專業學習python,真是工資高得讓人羨慕,具體多少就不說了,感興趣的可以去查查。

『柒』 求一份計算機本科的畢業設計,題目只要計算機類的就可以

計算機畢業設計
基於Python的SIFT和KCF的運動目標匹配與跟蹤 畢業論文+項目源碼
基於Python決策樹演算法的學生學習行為數據分析 設計報告+代碼及數據
基於Sring+bootstrap+MySQL的住房公積金管理系統 課程報告+項目源碼及資料庫文件
基於C++的即時通信軟體設計 畢業論文+項目源碼
基於JavaWeb+MySQL的圖書管理系統 課程報告+項目源碼及資料庫文件
基於android Studio+Android SDK的手機通訊錄管理軟體設計 課程報告+項目源碼
基於JSP+MySQL的校園網上訂餐系統 畢業論文+項目源碼及資料庫文件
基於AndroidStudio的花藝分享平台APP設計 報告+源碼及APK文件
基於Python的酒店評論情感分析 課程報告+答辯PPT+項目源碼
基於QT的教務選課管理系統設計與實現 畢業論文+項目源碼
基於Android+Springboot+Mybatis+Mysql的個人生活APP設計 說明書+項目源碼
基於Vue.js+Go的Web3D宇宙空間數據可視化系統 設計報告+前後端源碼及數據
基於java+android+SQLite的保健型果飲在線銷售APP設計 畢業論文+源碼資料庫及APK文件
基於Vue.js+SpringBoot+MyBatis+MySQL的高校綜合資源發布分享社交二手平台 畢業論文+項目源碼及資料庫文件+演示視頻
基於Delphi+MySQL的大學生競賽發布及組隊系統 設計報告+源碼資料庫及可執行文件+使用說明書
基於Android的名片信息管理系統設計與實現 畢業論文+任務書+外文翻譯及原文+演示視頻+項目源碼
基於Python的電影數據可視化分析系統 設計報告+答辯PPT+項目源碼
基於JavaWeb的企業公司管理系統設計與實現 畢業論文+答辯PPT+演示視頻+項目源碼
高校成績管理資料庫系統的設計與實現 畢業論文+項目源碼
基於JavaWeb的家庭食譜管理系統設計與實現 畢業論文+項目源碼及資料庫文件
基於Python+SQLSERVER的快遞業務管理系統的設計與實現 畢業論文+項目源碼及資料庫文件
基於Python的語音詞頻提取雲平台 設計報告+設計源碼
在推薦系統中引入 Serendipity 的演算法研究 畢業論文+參考文獻+項目源碼
基於Html+Python+Django+Sqlite的機票預訂系統 畢業論文+項目源碼及資料庫文件
基於Python的卷積神經網路的貓狗圖像識別系統 課程報告+項目源碼
基於C++的雲安全主動防禦系統客戶端服務端設計 畢業論文+項目源碼
基於JavaSSM的學生成績管理APP系統設計與實現 畢業論文+答辯PPT+前後台源碼及APK文件
基於JavaSwing+MySQL的清朝古代名人數據管理系統設計 畢業論文+任務書+項目源碼及資料庫文件
基於Python_Django的社會實踐活動管理系統設計與實現 畢業論文
基於Servlet WebSocket MySQL實現的網路在線考試系統 畢業論文+項目源碼
基於JavaWEB+MySQL的學生成績綜合管理系統 畢業論文+項目源碼及資料庫文件
基於SpringBoot+Vue和MySQL+Redis的網路課程平台設計與實現 畢業論文+任務書+開題報告+中期報告+初稿+前後台項目源碼
基於Java的畢業設計題目收集系統 課程報告+項目源碼
基於Java+Python+html的生產者與消費者演算法模擬 畢業論文+任務書+項目源碼
基於JavaWeb+MySQL的學院黨費繳費系統 畢業論文+項目源碼及資料庫文件
基於Java+MySQL的學生成績管理系統 畢業論文+任務書+答辯PPT+項目源碼及資料庫文件
基於Java+MySQL的學生和客戶信息管理系統 課程報告+項目源碼及資料庫文件
基於Java的長整數加減法演算法設計 畢業論文+項目源碼
基於vue+MySQL的畢業設計網上選題系統 畢業論文+項目源碼
基於背景建模和FasterR-CNN的視頻前景和目標檢測 畢業論文+答辯PPT+項目源碼
基於Python的智能視頻分析之人數統計的多種實現 畢業論文+答辯PPT+項目源碼
基於C#+SQL server的校園卡消費信息管理系統 畢業論文+項目源碼及資料庫文件

『捌』 利用Python分析處理數據。學校大數據課程,十幾年第一次開,有沒有精通計算機的哥哥姐姐幫助一下。

想要系統學習數據分析,建議一定要看的數據分析聖經《利用python進行數據分析》,這本書有理論有實踐,深入淺出,層層遞進,適合剛入門的數據分析小白,或者還有另外一本《python機器學習基礎教程》,也是比較入門級的,不過更偏向於機器學習的方向,但是也是涉及比較基礎的內容,可以作為進階來學習。手打不容易,以上回答如有幫助請採納,謝謝!

『玖』 計算機實驗報告總結怎麼寫

格式以下:

實驗報告格式模板

課程_多媒體技術_______實驗名稱__PHOTOSHOP______第頁共頁。

系別_陝西省中職骨幹教師培訓班實驗日期07年8月6日專業班級計算機______實驗報告日期07年8月6日姓名___辛樹斌______學號_048____報告退發(訂正、重做)。

一、實驗目的

熟悉應用PHOTOSHOP在圖形處理中的操作。

二、實驗內容

按照樣張的樣子把兩氏團張素材文件合並為一個圖像文件。

保存文件為.psd(不得合並圖層)旅悄。

樣張:

素材:

三、實驗環境

實驗應用系統及軟體:WINDOWNS XP和PHOTOSHOP。

硬體環境:

四、實驗步驟

1、從桌面上啟動PHOTOSHOP。

2、應用菜單欄中的「文件」菜單「打開」命令分別打開兩個圖形文件「城市風.JPG」和「雲天.jpg」。

3、應用「圖象」—>「旋轉畫布」—>「水平反拆核渣轉畫布」對文件「雲天.jpg」進行轉換。

4、使用方框工具選中中間圖片,使用CTRL+j新建圖層。

5、選擇新建圖層,並選擇「魔術棒工具」大致選出「城市風光.jpg」文件中的建築輪廓,並配合使用SHIFT、ALT鍵完成精細的選擇。

6、使用「選擇」菜單中的「反選」命令選中建築圖片拖動到雲天圖片中。

7、使用CTRL+T對圖片進行自由變換使其符合雲天圖片大小。

8、保存文件名為xin.psd。

五、實驗結果

在實驗中著重應用了PHOTOSHOP中的圖片反轉、圖層的建立、圖片中的扣圖、圖片的自由變換,基本達到了實驗目標。

六、總結

實驗過程中,開始我不知道如何去除圖片中的背景、經過請教摸索終於掌握了其應用方法。個人方面我覺得初次接觸PHOTOSHOP很有收獲。

『拾』 python成語填空的實驗報告怎麼寫

#python成語填空的實驗報告有關代碼:
from random import (choice,randint);
while 1:
stringa="掩耳盜鈴@揠苗助長@一葉障目@濫竽充數@指鹿為馬@亡羊補牢@夜郎自大@暗渡成倉"#此行首縮進4格;
lista=stringa.split("@")#此行首縮進陵卜寬4格;
listb=choice(lista)#此行首縮進4格;
listc=[j for j in listb]#此行首縮進尺亮4格;
space_letter=choice(listc)#此行首縮進4格;
select_letters=listb.replace(space_letter,"()")#此行首縮進4格;
print(select_letters)#此行首縮進4格;
insert_letter=input("填:")#此行首縮進4格;
result=(True if insert_letter==space_letter else False)#此行首縮進4格;
print(f'Your anser:{result}')#此行首縮進4格;
if result:#此行弊稿首縮進4格;
break#此行首縮進8格;

'''
揠苗助()
填:目
Your anser:False
夜()自大
填:郎
Your anser:True

'''

閱讀全文

與大學計算機python課程實驗報告相關的資料

熱點內容
韓國倫理電影翠花 瀏覽:83
電影提前看完整版 瀏覽:699
有個寶媽購物app叫什麼物 瀏覽:507
韓國倫理電影盲人男孩和戴墨鏡的醜女 瀏覽:729
美女被鬼強干 瀏覽:893
java得到伺服器的ip地址 瀏覽:502
陳友演的青頭鬼 瀏覽:690
wifi重置後怎麼加密碼 瀏覽:744
租用的伺服器怎麼配置 瀏覽:631
《消失的眼角膜》2電影免費版 瀏覽:371
2014造價師教材pdf 瀏覽:755
描述一個演算法的好壞 瀏覽:324
開發軟體用什麼app 瀏覽:34
數據編程個股 瀏覽:810
現代訓誡sp文雙男主 瀏覽:924
村長你懂的不用下載的視頻 瀏覽:587
愛戀法國電影講的什麼故事 瀏覽:272
less命令自動更新 瀏覽:309
三分鍾投降命令 瀏覽:936
cups伺服器是什麼 瀏覽:311