導航:首頁 > 編程語言 > python資料庫編程實例

python資料庫編程實例

發布時間:2023-06-11 08:36:36

① 後端編程python3-資料庫編程

對大多數軟體開發者而言,術語資料庫通常是指RDBMS(關系資料庫管理系統), 這些系統使用表格(類似於電子表格的網格),其中行表示記錄,列表示記錄的欄位。表格及其中存放的數據是使用SQL (結構化査詢語言)編寫的語句來創建並操縱的。Python提供了用於操縱SQL資料庫的API(應用程序介面),通常與作為標準的SQLite 3資料庫一起發布。

另一種資料庫是DBM (資料庫管理器),其中存放任意數量的鍵-值項。Python 的標准庫提供了幾種DBM的介面,包括某些特定於UNIX平台的。DBM的工作方式 與Python中的字典類似,區別在於DBM通常存放於磁碟上而不是內存中,並且其鍵與值總是bytes對象,並可能受到長度限制。本章第一節中講解的shelve模塊提供了方便的DBM介面,允許我們使用字元串作為鍵,使用任意(picklable)對象作為值。

如果可用的 DBM 與 SQLite 資料庫不夠充分,Python Package Index, pypi.python.org/pypi中提供了大量資料庫相關的包,包括bsddb DBM ("Berkeley DB"),對象-關系映射器,比如SQLAlchemy (www.sqlalchemy.org),以及流行的客戶端/伺服器數據的介面,比如 DB2、Informix、Ingres、MySQL、ODBC 以及 PostgreSQL。

本章中,我們將實現某程序的兩個版本,該程序用於維護一個DVD列表,並追蹤每個DVD的標題、發行年份、時間長度以及發行者。該程序的第一版使用DBM (通過shelve模塊)存放其數據,第二版則使用SQLite資料庫。兩個程序都可以載入與保存簡單的XML格式,這使得從某個程序導出DVD數據並將其導入到其他程序成為可能。與DBM版相比,基於SQL的程序提供了更多一些的功能,並且其數據設計也稍干凈一些。

12.1 DBM資料庫

shelve模塊為DBM提供了一個wrapper,藉助於此,我們在與DBM交互時,可以將其看做一個字典,這里是假定我們只使用字元串鍵與picklable值,實際處理時, shelve模塊會將鍵與值轉換為bytes對象(或者反過來)。

由於shelve模塊使用的是底層的DBM,因此,如果其他計算機上沒有同樣的DBM,那麼在某台計算機上保存的DBM文件在其他機器上無法讀取是可能的。為解決這一問題,常見的解決方案是對那些必須在機器之間可傳輸的文件提供XML導入與導出功能,這也是我們在本節的DVD程序dvds-dbm.py中所做的。

對鍵,我們使用DVD的標題;對值,則使用元組,其中存放發行者、發行年份以及時間。藉助於shelve模塊,我們不需要進行任何數據轉換,並可以把DBM對象當做一個字典進行處理。

程序在結構上類似於我們前面看到的那種菜單驅動型的程序,因此,這里主要展示的是與DBM程序設計相關的那部分。下面給出的是程序main()函數中的一部分, 忽略了其中菜單處理的部分代碼。

db = None

try:

db = shelve.open(filename, protocol=pickle.HIGHEST_PROTOCOL)

finally:

if db is not None:

db.dose()

這里我們已打開(如果不存在就創建)指定的DBM文件,以便於對其進行讀寫操作。每一項的值使用指定的pickle協議保存為一個pickle,現有的項可以被讀取, 即便是使用更底層的協議保存的,因為Python可以計算出用於讀取pickle的正確協議。最後,DBM被關閉——其作用是清除DBM的內部緩存,並確保磁碟文件可以反映出已作的任何改變,此外,文件也需要關閉。

該程序提供了用於添加、編輯、列出、移除、導入、導出DVD數據的相應選項。除添加外,我們將忽略大部分用戶介面代碼,同樣是因為已經在其他上下文中進行了展示。

def add_dvd(db):

title = Console.get_string("Title", "title")

if not title:

return

director = Console.get_string("Director", "director")

if not director:

return

year = Console.get_integer("Year", "year",minimum=1896,

maximum=datetime,date.today().year)

ration = Console.get_integer("Duration (minutes)", "minutes「, minimum=0, maximum=60*48)

db[title] = (director, year, ration)

db.sync()

像程序菜單調用的所有函數一樣,這一函數也以DBM對象(db)作為其唯一參數。該函數的大部分工作都是獲取DVD的詳細資料,在倒數第二行,我們將鍵-值項存儲在DBM文件中,DVD的標題作為鍵,發行者、年份以及時間(由shelve模塊pickled在一起)作為值。

為與Python通常的一致性同步,DBM提供了與字典一樣的API,因此,除了 shelve.open() 函數(前面已展示)與shelve.Shelf.sync()方法(該方法用於清除shelve的內部緩存,並對磁碟上文件的數據與所做的改變進行同步——這里就是添加一個新項),我們不需要學習任何新語法。

def edit_dvd(db):

old_title = find_dvd(db, "edit")

if old_title is None:

return

title = Console.get.string("Title", "title", old_title)

if not title:

return

director, year, ration = db[old_title]

...

db[title]= (director, year, ration)

if title != old_title:

del db[old_title]

db.sync()

為對某個DVD進行編輯,用戶必須首先選擇要操作的DVD,也就是獲取DVD 的標題,因為標題用作鍵,值則用於存放其他相關數據。由於必要的功能在其他場合 (比如移除DVD)也需要使用,因此我們將其實現在一個單獨的find_dvd()函數中,稍後將査看該函數。如果找到了該DVD,我們就獲取用戶所做的改變,並使用現有值作為默認值,以便提高交互的速度。(對於這一函數,我們忽略了大部分用戶介面代碼, 因為其與添加DVD時幾乎是相同的。)最後,我們保存數據,就像添加時所做的一樣。如果標題未作改變,就重寫相關聯的值;如果標題已改變,就創建一個新的鍵-值對, 並且需要刪除原始項。

def find_dvd(db, message):

message = "(Start of) title to " + message

while True:

matches =[]

start = Console.get_string(message, "title")

if not start:

return None

for title in db:

if title.lower().startswith(start.lower()):

matches.append(title)

if len(matches) == 0:

print("There are no dvds starting with", start)

continue

elif len(matches) == 1:

return matches[0]

elif len(matches) > DISPLAY_LIMIT:

print("Too many dvds start with {0}; try entering more of the title".format(start)

continue

else:

matches = sorted(matches, key=str.lower)

for i, match in enumerate(matches):

print("{0}: {1}".format(i+1, match))

which = Console.get_integer("Number (or 0 to cancel)",

"number", minimum=1, maximum=len(matches))

return matches[which - 1] if which != 0 else None

為盡可能快而容易地發現某個DVD,我們需要用戶只輸入其標題的一個或頭幾個字元。在具備了標題的起始字元後,我們在DBM中迭代並創建一個匹配列表。如果只有一個匹配項,就返回該項;如果有幾個匹配項(但少於DISPLAY_LIMIT, 一個在程序中其他地方設置的整數),就以大小寫不敏感的順序展示所有這些匹配項,並為每一項設置一個編號,以便用戶可以只輸入編號就可以選擇某個標題。(Console.get_integer()函數可以接受0,即便最小值大於0,以便0可以用作一個刪除值。通過使用參數allow_zero=False, 可以禁止這種行為。我們不能使用Enter鍵,也就是說,沒有什麼意味著取消,因為什麼也不輸入意味著接受默認值。)

def list_dvds(db):

start =」"

if len(db)> DISPLAY.LIMIT:

start = Console.get_string(「List those starting with [Enter=all]」, "start」)

print()

for title in sorted(db, key=str.lower):

if not start or title.Iower().startswith(start.lower()):

director, year, ration = db[title]

print("{title} ({year}) {ration} minute{0}, by "

"{director}".format(Util.s(ration),**locals()))

列出所有DVD (或者那些標題以某個子字元串引導)就是對DBM的所有項進行迭代。

Util.s()函數就是簡單的s = lambda x: "" if x == 1 else "s",因此,如果時間長度不是1分鍾,就返回"s"。

def remove_dvd(db):

title = find_dvd(db, "remove")

if title is None:

return

ans = Console.get_bool("Remove {0}?".format(title), "no")

if ans:

del db[title]

db.sync()

要移除一個DVD,首先需要找到用戶要移除的DVD,並請求確認,獲取後從DBM中刪除該項即可。

到這里,我們展示了如何使用shelve模塊打開(或創建)一個DBM文件,以及如何向其中添加項、編輯項、對其項進行迭代以及移除某個項。

遺憾的是,在我們的數據設計中存在一個瑕疵。發行者名稱是重復的,這很容易導致不一致性,比如,發行者Danny DeVito可能被輸入為"Danny De Vito",用於 一個電影;也可以輸入為「Danny deVito",用於另一個。為解決這一問題,可以使用兩個DBM文件,主DVD文件使用標題鍵與(年份,時間長度,發行者ID)值; 發行者文件使用發行者ID (整數)鍵與發行者名稱值。下一節展示的SQL資料庫 版程序將避免這一瑕疵,這是通過使用兩個表格實現的,一個用於DVD,另一個用於發行者。

12.2 SQL資料庫

大多數流行的SQL資料庫的介面在第三方模塊中是可用的,Python帶有sqlite3 模塊(以及SQLite 3資料庫),因此,在Python中,可以直接開始資料庫程序設計。SQLite是一個輕量級的SQL資料庫,缺少很多諸如PostgreSQL這種資料庫的功能, 但非常便於構造原型系統,並且在很多情況下也是夠用的。

為使後台資料庫之間的切換盡可能容易,PEP 249 (Python Database API Specification v2.0)提供了稱為DB-API 2.0的API規范。資料庫介面應該遵循這一規范,比如sqlite3模塊就遵循這一規范,但不是所有第三方模塊都遵循。API規范中指定了兩種主要的對象,即連接對象與游標對象。表12-1與表12-2中分別列出了這兩種對象必須支持的API。在sqlite3模塊中,除DB-API 2.0規范必需的之外,其連接對象與游標對象都提供了很多附加的屬性與方法。

DVD程序的SQL版本為dvds.sql.py,該程序將發行者與DVD數據分開存儲,以 避免重復,並提供一個新菜單,以供用戶列出發行者。該程序使用的兩個表格在圖12-1

def connect(filename):

create= not os.path.exists(filename)

db = sqlite3.connect(filename)

if create:

cursor = db.cursor()

cursor.execute("CREATE TABLE directors ("

"id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL, "

"name TEXT UNIQUE NOT NULL)")

cursor.execute("CREATE TABLE dvds ("

"id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL, "

"title TEXT NOT NULL, "

"year INTEGER NOT NULL,"

"ration INTEGER NOT NULL, "

"director_id INTEGER NOT NULL, 」

"FOREIGN KEY (director_id) REFERENCES directors)")

db.commit()

return db

sqlite3.connect()函數會返回一個資料庫對象,並打開其指定的資料庫文件。如果該文件不存在,就創建一個空的資料庫文件。鑒於此,在調用sqlite3.connect()之前,我們要注意資料庫是否是准備從頭開始創建,如果是,就必須創建該程序要使用的表格。所有査詢都是通過一個資料庫游標完成的,可以從資料庫對象的cursor()方法獲取。

注意,兩個表格都是使用一個ID欄位創建的,ID欄位有一個AUTOINCREMENT 約束——這意味著SQLite會自動為ID欄位賦予唯一性的數值,因此,在插入新記錄時,我們可以將這些欄位留給SQLite處理。

SQLite支持有限的數據類型——實際上就是布爾型、數值型與字元串——但使用數據'『適配器」可以對其進行擴展,或者是擴展到預定義的數據類型(比如那些用於日期與datetimes的類型),或者是用於表示任意數據類型的自定義類型。DVD程序並不需要這一功能,如果需要,sqlite3模塊的文檔提供了很多詳細解釋。我們使用的外部鍵語法可能與用於其他資料庫的語法不同,並且在任何情況下,只是記錄我們的意圖,因為SQLite不像很多其他資料庫那樣需要強制關系完整性,sqlite3另一點與眾不同的地方在於其默認行為是支持隱式的事務處理,因此,沒有提供顯式的「開始事務」 方法。

def add_dvd(db):

title = Console.get_string("Title", "title")

if not title:

return

director = Console.get_string("Director", "director")

if not director:

return

year = Console.get_integer("Year", "year」, minimum=1896,

maximum=datetime.date.today().year)

ration = Console.get_integer("Duration (minutes)", "minutes",

minimum=0,maximum=60*48)

director_id = get_and_set_director(db, director)

cursor = db.cursor()

cursor.execute("INSERT INTO dvds 」

"(title, year, ration, director_id)"

"VALUES (?, ?, ?, ?)",

(title, year, ration, director_id))

db.commit()

這一函數的開始代碼與dvds-dbm.py程序中的對應函數一樣,但在完成數據的收集後,與原來的函數有很大的差別。用戶輸入的發行者可能在也可能不在directors表格中,因此,我們有一個get_and_set_director()函數,在資料庫中尚無某個發行者時, 該函數就將其插入到其中,無論哪種情況都返回就緒的發行者ID,以便在需要的時候插入到dvds表。在所有數據都可用後,我們執行一條SQL INSERT語句。我們不需要指定記錄ID,因為SQLite會自動為我們提供。

在査詢中,我們使用問號(?)作為佔位符,每個?都由包含SQL語句的字元串後面的序列中的值替代。命名的佔位符也可以使用,後面在編輯記錄時我們將看到。盡管避免使用佔位符(而只是簡單地使用嵌入到其中的數據來格式化SQL字元串)也是可能的,我們建議總是使用佔位符,並將數據項正確編碼與轉義的工作留給資料庫模塊來完成。使用佔位符的另一個好處是可以提高安全性,因為這可以防止任意的SQL 被惡意地插入到一個査詢中。

def get_and_set_director(db, director):

director_id = get_director_id(db, director)

if directorjd is not None:

return director_id

cursor = db.cursor()

cursor.execute("lNSERT INTO directors (name) VALUES (?)」,(director,))

db.commit()

return get_director_id(db, director)

這一函數返回給定發行者的ID,並在必要的時候插入新的發行者記錄。如果某個記錄被插入,我們首先嘗試使用get_director_id()函數取回其ID。

def get_director_id(db, director):

cursor = db.cursor()

cursor.execute("SELECT id FROM directors WHERE name=?",(director,))

fields = cursor.fetchone()

return fields[0] if fields is not None else None

get_director_id()函數返回給定發行者的ID,如果資料庫中沒有指定的發行者,就返回None。我們使用fetchone()方法,因為或者有一個匹配的記錄,或者沒有。(我們知道,不會有重復的發行者,因為directors表格的名稱欄位有一個UNIQUE約束,在任何情況下,在添加一個新的發行者之前,我們總是先檢査其是否存在。)這種取回方法總是返回一個欄位序列(如果沒有更多的記錄,就返回None)。即便如此,這里我們只是請求返回一個單獨的欄位。

def edit_dvd(db):

title, identity = find_dvd(db, "edit")

if title is None:

return

title = Console.get_string("Title","title", title)

if not title:

return

cursor = db.cursor()

cursor.execute("SELECT dvds.year, dvds.ration, directors.name"

「FROM dvds, directors "

"WHERE dvds.director_id = directors.id AND "

"dvds.id=:id", dict(id=identity))

year, ration, director = cursor.fetchone()

director = Console.get_string("Director", "director", director)

if not director:

return

year = Console,get_integer("Year","year", year, 1896,datetime.date.today().year)

ration = Console.get_integer("Duration (minutes)", "minutes",

ration, minimum=0, maximum=60*48)

director_id = get_and_set_director(db, director)

cursor.execute("UPDATE dvds SET title=:title, year=:year,"

"ration=:ration, director_id=:directorjd "

"WHERE id=:identity", locals())

db.commit()

要編輯DVD記錄,我們必須首先找到用戶需要操縱的記錄。如果找到了某個記錄,我們就給用戶修改其標題的機會,之後取回該記錄的其他欄位,以便將現有值作為默認值,將用戶的輸入工作最小化,用戶只需要按Enter鍵就可以接受默認值。這里,我們使用了命名的佔位符(形式為:name),並且必須使用映射來提供相應的值。對SELECT語句,我們使用一個新創建的字典;對UPDATE語句,我們使用的是由 locals()返回的字典。

我們可以同時為這兩個語句都使用新字典,這種情況下,對UPDATE語句,我們可以傳遞 dict(title=title, year=year, ration=ration, director_id=director_id, id=identity)),而非 locals()。

在具備所有欄位並且用戶已經輸入了需要做的改變之後,我們取回相應的發行者ID (如果必要就插入新的發行者記錄),之後使用新數據對資料庫進行更新。我們採用了一種簡化的方法,對記錄的所有欄位進行更新,而不僅僅是那些做了修改的欄位。

在使用DBM文件時,DVD標題被用作鍵,因此,如果標題進行了修改,我們就需要創建一個新的鍵-值項,並刪除原始項。不過,這里每個DVD記錄都有一個唯一性的ID,該ID是記錄初次插入時創建的,因此,我們只需要改變任何其他欄位的值, 而不需要其他操作。

def find_dvd(db, message):

message = "(Start of) title to " + message

cursor = db.cursor()

while True: .

start = Console.get_stnng(message, "title")

if not start:

return (None, None)

cursor.execute("SELECT title, id FROM dvds "

"WHERE title LIKE ? ORDER BY title」,

(start +"%",))

records = cursor.fetchall()

if len(records) == 0:

print("There are no dvds starting with", start)

continue

elif len(records) == 1:

return records[0]

elif len(records) > DISPLAY_LIMIT:

print("Too many dvds ({0}) start with {1}; try entering "

"more of the title".format(len(records),start))

continue

else:

for i, record in enumerate(records):

print("{0}:{1}".format(i + 1, record[0]))

which = Console.get_integer("Number (or 0 to cancel)",

"number", minimum=1, maximum=len(records))

return records[which -1] if which != 0 else (None, None)

這一函數的功能與dvdsdbm.py程序中的find_dvd()函數相同,並返回一個二元組 (DVD標題,DVD ID)或(None, None),具體依賴於是否找到了某個記錄。這里並不需要在所有數據上進行迭代,而是使用SQL通配符(%),因此只取回相關的記錄。

由於我們希望匹配的記錄數較小,因此我們一次性將其都取回到序列的序列中。如果有不止一個匹配的記錄,但數量上又少到可以顯示,我們就列印記錄,並將每條記錄附帶一個數字編號,以便用戶可以選擇需要的記錄,其方式與在dvds-dbm.py程序中所做的類似:

def list_dvds(db):

cursor = db.cursor()

sql = ("SELECT dvds.title, dvds.year, dvds.ration, "

"directors.name FROM dvds, directors "

"WHERE dvds.director_id = directors.id")

start = None

if dvd_count(db) > DISPLAY_LIMIT:

start = Console.get_string("List those starting with [Enter=all]", "start")

sql += " AND dvds.title LIKE ?"

sql += 」 ORDER BY dvds.title"

print()

if start is None:

cursor.execute(sql)

else:

cursor.execute(sql, (start +"%",))

for record in cursor:

print("{0[0]} ({0[1]}) {0[2]} minutes, by {0[3]}".format(record))

要列出每個DVD的詳細資料,我們執行一個SELECT査詢。該査詢連接兩個表,如果記錄(由dvd_count()函數返回)數量超過了顯示限制值,就將第2個元素添加到WHERE 分支,之後執行該査詢,並在結果上進行迭代。每個記錄都是一個序列,其欄位是與 SELECT査詢相匹配的。

def dvd_count(db):

cursor = db.cursor()

cursor.execute("SELECT COUNT(*) FROM dvds")

return cursor.fetchone()[0]

我們將這幾行代碼放置在一個單獨的函數中,因為我們在幾個不同的函數中都需要使用這幾行代碼。

我們忽略了 list_directors()函數的代碼,因為該函數在結構上與list_dvds()函數非常類似,只不過更簡單一些,因為本函數只列出一個欄位(name)。

def remove_dvd(db):

title, identity = find_dvd(db, "remove")

if title is None:

return

ans = Console.get_bool("Remove {0}?".format(title), "no")

if ans:

cursor = db.cursor()

cursor.execute("DELETE FROM dvds WHERE id=?", (identity,))

db.commit()

在用戶需要刪除一個記錄時,將調用本函數,並且本函數與dvds-dbm.py程序中 相應的函數是非常類似的。

到此,我們完全查閱了 dvds-sql.py程序,並且了解了如何創建資料庫表格、選取 記錄、在選定的記錄上進行迭代以及插入、更新與刪除記錄。使用execute()方法,我們可以執行底層資料庫所支持的任意SQL語句。

SQLite提供了比我們這里使用的多得多的功能,包括自動提交模式(以及任意其他類型的事務控制),以及創建可以在SQL查詢內執行的函數的能力。提供一個工廠函數並用於控制對每個取回的記錄返回什麼(比如,一個字典或自定義類型,而不是欄位序列)也是可能的。此外,通過傳遞「:memory:」作為文件名,創建內存中的SQLite 資料庫也是可能的。

以上內容部分摘自視頻課程05後端編程Python22 資料庫編程,更多實操示例請參照視頻講解。跟著張員外講編程,學習更輕松,不花錢還能學習真本領。

② 如何用python寫sql

python可以利用pymysql模塊操作資料庫。

什麼是 PyMySQL?

PyMySQL 是在 Python3.x 版本中用於連接 MySQL 伺服器的一個庫,Python2中則使用mysqldb。

PyMySQL 遵循 Python 資料庫 API v2.0 規范,並包含了 pure-Python MySQL 客戶端庫。

PyMySQL 安裝

在使用 PyMySQL 之前,我們需要確保 PyMySQL 已安裝。

PyMySQL 下載地址:https://github.com/PyMySQL/PyMySQL。

如果還未安裝,我們可以使用以下命令安裝最新版的 PyMySQL:

$ pip3 install PyMySQL

如果你的系統不支持 pip 命令,可以使用以下方式安裝:

1、使用 git 命令下載安裝包安裝(你也可以手動下載):

$ git clone https://github.com/PyMySQL/PyMySQL$ cd PyMySQL/$ python3 setup.py install

2、如果需要制定版本號,可以使用 curl 命令來安裝:

$ # X.X 為 PyMySQL 的版本號$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz$ cd PyMySQL*$ python3 setup.py install
$ # 現在你可以刪除 PyMySQL* 目錄

注意:請確保您有root許可權來安裝上述模塊。

安裝的過程中可能會出現"ImportError: No mole named setuptools"的錯誤提示,意思是你沒有安裝setuptools,你可以訪問https://pypi.python.org/pypi/setuptools找到各個系統的安裝方法。

Linux 系統安裝實例:

$ wget https://bootstrap.pypa.io/ez_setup.py$ python3 ez_setup.py

資料庫連接

連接資料庫前,請先確認以下事項:

③ python的問題

IDE選用這里推薦兩款常用的 IDE,可以按照自己的條件和場景來選擇。PyCharmPyCharm 是由 JetBrain 的人員製作的 IDE,該團隊負責最著名的 Java IDE,IntelliJ IDEA之一。PyCharm 的界面和功能對於那些有使用過其他 JetBrain 產品的人來說,是完美的。 此外,如果您喜歡 IPython 或 Anaconda 發行版,那麼 PyCharm 可以將其工具和庫(如NumPyMatplotlib)集成在一起,從而讓您可以使用數組查看器和互動式圖表。Thonny現在的開發工具太多了,而且每個開發工具都致力於做成最好用最智能的工具,所以功能越堆越多,越懟越智能。安裝這些開發工具比較燒腦,經常需要經過許多配置步驟。作為一個 Python 開發者來說,好多人光是這些配置都要弄半天。配置好之後,打開軟體,發現滿屏都是菜單、按鈕,無從下手,學習這些功能使用又是一大難題。這是一款對初學者特別友好的開發 IDE,它是由愛沙尼亞的 Tartu 大學開發,十分易於上手,還支持插件。如果你有編程基礎,會其他編程語言,那麼建議你用Pycharm。如果你是編程小白,或者零基礎上手,那麼建議你用Thonny。入門首先要學習Python基礎知識,直接上課程:Python 環境搭建Python 基礎語法Python 變數與數據類型Python 流程式控制制Python函數Python 模塊和包Python 數據結構--序列Python ListPython tupplePython 類與對象Python 字典Python 集合Python 函數的參數Python 高階函數Python 輸入輸出Python 錯誤和異常Python 之引用Python 之迭代器Python 之裝飾器Python NameSpace & ScopePython Standard Library 01Python Standard Library 02Python datetime 和 timePython 垃圾回收機制Python 到底是值傳遞還是引用傳遞Python 之對象的比較與拷貝進階通過上面基礎知識的學習,相信你已經知道Python是個什麼玩意了,對它也有一個初步的了解,對它的入門知識點也有些印象了。這時候你需要進階學習,在入門的基礎上更進一步。下面就從 Python 模塊、Python爬蟲基礎、Python Web開發、Python 資料庫操作、Python 數據分析及數據科學、Python IO及非同步、Python網路編程、Python圖像處理、Python 辦公、Python 機器學習、Python 可視化 這些Python的基礎大類來進行深入學習。Python 模塊Python os 模塊詳解Python shutil 模塊Python sys 模塊詳解Python queue 模塊詳解Python collections 模塊Python random 模塊Python logging 模塊詳解Python 枚舉Python json&picklepathlib 模塊Python calendar 模塊Python math 模塊Python decimal 模塊Python itertools 模塊Python statistics 模塊Python operator 模塊Python paramiko 模塊Python filecmp&difflib模塊初識 Python 多線程Python 多線程之 threading 模塊Python Queue 進階用法Python multiprocessing 模塊Python 線程池Python 多線程 EventPython爬蟲基礎爬蟲介紹Python 爬蟲之 urllib 包基本使用Python 用戶登錄 Flask-LoginPython Requests 庫的基本使用Python Requests 庫高級用法正則表達式XPath 和 lxml爬蟲利器 Beautiful Soup 之遍歷文檔PyQuery 詳解爬蟲利器 Beautiful Soup 之搜索文檔Selenium 環境配置Selenium詳解Python Scrapy 爬蟲框架及搭建Python Scrapy 項目實戰PySpider框架的使用Scrapy 模擬登陸Python 解析 XML爬取微信公眾號文章內容Python 爬取豆瓣電影 top 250Python newspaper 框架Python Web開發Web 開發 Flask 介紹Web開發 Jinja2模板引擎Flask 框架集成BootstrapWeb表單Flask數據持久化Web 開發 RESTfulPython Web開發 Django 簡介Python Django 模型概述與應用HTTP 入門Python Web 開發之 JWT 簡介Python Web開發 OAuth2.0 簡介OAuth2.0 客戶端實戰Flask 單元測試Web 開發 Django 管理工具Web 開發 Django 模板Flask 項目結構Python 資料庫操作Python 操作 Redis 資料庫介紹Python 操作 SQLitePython 操作 MongoDB 資料庫介紹Python 操作 MySQLPython SQLAlchemyPython 數據分析及數據科學數據分析之 Numpy 初步NumPy Ndarray 對象及數據類型NumPy 字元串操作NumPy 數學函數NumPy 統計函數NumPy 排序和篩選函數NumPy 位運算與算術函數數據分析之 pandas 初步NumPy 矩陣Numpy 中數組和矩陣的區別Python IO及非同步文件讀寫StringIO & BytesIOPython asyncioPython非同步之aiohttpPython網路編程TCP 編程UDP 編程Python圖像處理圖像庫 PIL(一)圖像庫 PIL(二)圖像庫 PIL 實例—驗證碼去噪Python 辦公Python 操作 ExcelPython 操作 WordPython 解析 pdfPython 操作 CSVPython 機器學習機器學習概覽第 112 天:機器學習演算法之蒙特卡洛Python XGBoost 演算法項目實戰三木板模型演算法項目實戰第116天:機器學習演算法之樸素貝葉斯理論機器學習演算法之 K 近鄰第120天:機器學習演算法之 K 均值聚類機器學習之決策樹Python 可視化Python matplotlib introctionPython Matplotlib 進階操作Seaborn-可視化統計關系Seaborn-可視化分類數據Seaborn-可視化數據集的分布實戰Python的知識點學完了之後,並不代表學完了。這只能代表你會Python了,並不能表示你可以去找工作、你可以去接單了。因為你還缺乏實戰練習,這個階段需要你能從一個實際需求中進行建模,然後用Python去實現模型,得到預期的結果。這里列一些貼近工作生活實際的小項目,每個項目都能讓你學習到如何進行需求建模,如何用代碼去實現,去解決實際的問題。解析網路網盤鏈接:幾行代碼,網盤鏈接提頭來見!揭露出軌女友:女友加班發自拍,男友用幾行代碼發現驚天秘密...爬取小程序:不能爬小程序,叫什麼會爬蟲解密當代女性胸圍:我半夜爬了嚴選的女性文胸數據,發現了驚天秘密製作簽名軟體:牛逼!用Python為她設計專屬簽名軟體!識別車牌:如何用 Python 識別車牌?追女神:用Python助女神發朋友圈下載知乎美女圖片:Python 抓取知乎幾千張小姐姐圖片是什麼體驗?炒股賺錢:一份代碼幫我賺了10萬寫小游戲:不到 150 行代碼寫一個 Python 版的貪吃蛇摳圖無煩惱:Python裝逼指南——五行代碼實現批量摳圖跟蹤房價數據:看我如何抓取最新房價數據跟女友惡作劇:女友電腦私存撕蔥帥照,我用python偷梁換柱...自動搶紅包:強大!用 60 行代碼自動搶微信紅包下載B站視頻:使用 Python 下載 B 站視頻更多精彩可以關注我的專欄:我是@無歡不散,看到這里的朋友請幫忙點個贊,也可以關注 @無歡不散 不迷路。

④ python數據分析與應用-Python數據分析與應用 PDF 內部全資料版

給大家帶來的一篇關於Python數據相關的電子書資源,介紹了關於Python方面的內容,本書是由人民郵電出版社出版,格式為PDF,資源大小281 MB,黃紅梅 張良均編寫,目前豆瓣、亞馬遜、當當、京東等電子書綜合評分為:7.8。

內容介紹

目錄

第1章Python數據分析概述1

任務1.1認識數據分析1

1.1.1掌握數據分析的概念2

1.1.2掌握數據分析的流程2

1.1.3了解數據分析應用場景4

任務1.2熟悉Python數據分析的工具5

1.2.1了解數據分析常用工具6

1.2.2了解Python數據分析的優勢7

1.2.3了解Python數據分析常用類庫7

任務1.3安裝Python的Anaconda發行版9

1.3.1了解Python的Anaconda發行版9

1.3.2在Windows系統中安裝Anaconda9

1.3.3在Linux系統中安裝Anaconda12

任務1.4掌握Jupyter Notebook常用功能14

1.4.1掌握Jupyter Notebook的基本功能14

1.4.2掌握Jupyter Notebook的高 級功能16

小結19

課後習題19

第2章NumPy數值計算基礎21

任務2.1掌握NumPy數組對象ndarray21

2.1.1創建數組對象21

2.1.2生成隨機數27

2.1.3通過索引訪問數組29

2.1.4變換數組的形態31

任務2.2掌握NumPy矩陣與通用函數34

2.2.1創建NumPy矩陣34

2.2.2掌握ufunc函數37

任務2.3利用NumPy進行統計分析41

2.3.1讀/寫文件41

2.3.2使用函數進行簡單的統計分析44

2.3.3任務實現48

小結50

實訓50

實訓1創建數組並進行運算50

實訓2創建一個國際象棋的棋盤50

課後習題51

第3章Matplotlib數據可視化基礎52

任務3.1掌握繪圖基礎語法與常用參數52

3.1.1掌握pyplot基礎語法53

3.1.2設置pyplot的動態rc參數56

任務3.2分析特徵間的關系59

3.2.1繪制散點圖59

3.2.2繪制折線圖62

3.2.3任務實現65

任務3.3分析特徵內部數據分布與分散狀況68

3.3.1繪制直方圖68

3.3.2繪制餅圖70

3.3.3繪制箱線圖71

3.3.4任務實現73

小結77

實訓78

實訓1分析1996 2015年人口數據特徵間的關系78

實訓2分析1996 2015年人口數據各個特徵的分布與分散狀況78

課後習題79

第4章pandas統計分析基礎80

任務4.1讀/寫不同數據源的數據80

4.1.1讀/寫資料庫數據80

4.1.2讀/寫文本文件83

4.1.3讀/寫Excel文件87

4.1.4任務實現88

任務4.2掌握DataFrame的常用操作89

4.2.1查看DataFrame的常用屬性89

4.2.2查改增刪DataFrame數據91

4.2.3描述分析DataFrame數據101

4.2.4任務實現104

任務4.3轉換與處理時間序列數據107

4.3.1轉換字元串時間為標准時間107

4.3.2提取時間序列數據信息109

4.3.3加減時間數據110

4.3.4任務實現111

任務4.4使用分組聚合進行組內計算113

4.4.1使用groupby方法拆分數據114

4.4.2使用agg方法聚合數據116

4.4.3使用apply方法聚合數據119

4.4.4使用transform方法聚合數據121

4.4.5任務實現121

任務4.5創建透視表與交叉表123

4.5.1使用pivot_table函數創建透視表123

4.5.2使用crosstab函數創建交叉表127

4.5.3任務實現128

小結130

實訓130

實訓1讀取並查看P2P網路貸款數據主表的基本信息130

實訓2提取用戶信息更新表和登錄信息表的時間信息130

實訓3使用分組聚合方法進一步分析用戶信息更新表和登錄信息表131

實訓4對用戶信息更新表和登錄信息表進行長寬表轉換131

課後習題131

第5章使用pandas進行數據預處理133

任務5.1合並數據133

5.1.1堆疊合並數據133

5.1.2主鍵合並數據136

5.1.3重疊合並數據139

5.1.4任務實現140

任務5.2清洗數據141

5.2.1檢測與處理重復值141

5.2.2檢測與處理缺失值146

5.2.3檢測與處理異常值149

5.2.4任務實現152

任務5.3標准化數據154

5.3.1離差標准化數據154

5.3.2標准差標准化數據155

5.3.3小數定標標准化數據156

5.3.4任務實現157

任務5.4轉換數據158

5.4.1啞變數處理類別型數據158

5.4.2離散化連續型數據160

5.4.3任務實現162

小結163

實訓164

實訓1插補用戶用電量數據缺失值164

實訓2合並線損、用電量趨勢與線路告警數據164

實訓3標准化建模專家樣本數據164

課後習題165

第6章使用scikit-learn構建模型167

任務6.1使用sklearn轉換器處理數據167

6.1.1載入datasets模塊中的數據集167

6.1.2將數據集劃分為訓練集和測試集170

6.1.3使用sklearn轉換器進行數據預處理與降維172

6.1.4任務實現174

任務6.2構建並評價聚類模型176

6.2.1使用sklearn估計器構建聚類模型176

6.2.2評價聚類模型179

6.2.3任務實現182

任務6.3構建並評價分類模型183

6.3.1使用sklearn估計器構建分類模型183

6.3.2評價分類模型186

6.3.3任務實現188

任務6.4構建並評價回歸模型190

6.4.1使用sklearn估計器構建線性回歸模型190

6.4.2評價回歸模型193

6.4.3任務實現194

小結196

實訓196

實訓1使用sklearn處理wine和wine_quality數據集196

實訓2構建基於wine數據集的K-Means聚類模型196

實訓3構建基於wine數據集的SVM分類模型197

實訓4構建基於wine_quality數據集的回歸模型197

課後習題198

第7章航空公司客戶價值分析199

任務7.1了解航空公司現狀與客戶價值分析199

7.1.1了解航空公司現狀200

7.1.2認識客戶價值分析201

7.1.3熟悉航空客戶價值分析的步驟與流程201

任務7.2預處理航空客戶數據202

7.2.1處理數據缺失值與異常值202

7.2.2構建航空客戶價值分析關鍵特徵202

7.2.3標准化LRFMC模型的5個特徵206

7.2.4任務實現207

任務7.3使用K-Means演算法進行客戶分群209

7.3.1了解K-Means聚類演算法209

7.3.2分析聚類結果210

7.3.3模型應用213

7.3.4任務實現214

小結215

實訓215

實訓1處理信用卡數據異常值215

實訓2構造信用卡客戶風險評價關鍵特徵217

實訓3構建K-Means聚類模型218

課後習題218

第8章財政收入預測分析220

任務8.1了解財政收入預測的背景與方法220

8.1.1分析財政收入預測背景220

8.1.2了解財政收入預測的方法222

8.1.3熟悉財政收入預測的步驟與流程223

任務8.2分析財政收入數據特徵的相關性223

8.2.1了解相關性分析223

8.2.2分析計算結果224

8.2.3任務實現225

任務8.3使用Lasso回歸選取財政收入預測的關鍵特徵225

8.3.1了解Lasso回歸方法226

8.3.2分析Lasso回歸結果227

8.3.3任務實現227

任務8.4使用灰色預測和SVR構建財政收入預測模型228

8.4.1了解灰色預測演算法228

8.4.2了解SVR演算法229

8.4.3分析預測結果232

8.4.4任務實現234

小結236

實訓236

實訓1求取企業所得稅各特徵間的相關系數236

實訓2選取企業所得稅預測關鍵特徵237

實訓3構建企業所得稅預測模型237

課後習題237

第9章家用熱水器用戶行為分析與事件識別239

任務9.1了解家用熱水器用戶行為分析的背景與步驟239

9.1.1分析家用熱水器行業現狀240

9.1.2了解熱水器採集數據基本情況240

9.1.3熟悉家用熱水器用戶行為分析的步驟與流程241

任務9.2預處理熱水器用戶用水數據242

9.2.1刪除冗餘特徵242

9.2.2劃分用水事件243

9.2.3確定單次用水事件時長閾值244

9.2.4任務實現246

任務9.3構建用水行為特徵並篩選用水事件247

9.3.1構建用水時長與頻率特徵248

9.3.2構建用水量與波動特徵249

9.3.3篩選候選洗浴事件250

9.3.4任務實現251

任務9.4構建行為事件分析的BP神經網路模型255

9.4.1了解BP神經網路演算法原理255

9.4.2構建模型259

9.4.3評估模型260

9.4.4任務實現260

小結263

實訓263

實訓1清洗運營商客戶數據263

實訓2篩選客戶運營商數據264

實訓3構建神經網路預測模型265

課後習題265

附錄A267

附錄B270

參考文獻295

學習筆記

Jupyter Notebook(此前被稱為 IPython notebook)是一個互動式筆記本,支持運行 40 多種編程語言。 Jupyter Notebook 的本質是一個 Web 應用程序,便於創建和共享文學化程序文檔,支持實時代碼,數學方程,可視化和 markdown。 用途包括:數據清理和轉換,數值模擬,統計建模,機器學習等等 。 定義 (推薦學習:Python視頻教程) 用戶可以通過電子郵件,Dropbox,GitHub 和 Jupyter Notebook Viewer,將 Jupyter Notebook 分享給其他人。 在Jupyter Notebook 中,代碼可以實時的生成圖像,視頻,LaTeX和JavaScript。 使用 數據挖掘領域中最熱門的比賽 Kaggle 里的資料都是Jupyter 格式 。 架構 Jupyter組件 Jupyter包含以下組件: Jupyter Notebook 和 ……

本文實例講述了Python實現的微信好友數據分析功能。分享給大家供大家參考,具體如下: 這里主要利用python對個人微信好友進行分析並把結果輸出到一個html文檔當中,主要用到的python包為 itchat , pandas , pyecharts 等 1、安裝itchat 微信的python sdk,用來獲取個人好友關系。獲取的代碼 如下: import itchatimport pandas as pdfrom pyecharts import Geo, Baritchat.login()friends = itchat.get_friends(update=True)[0:]def User2dict(User): User_dict = {} User_dict["NickName"] = User["NickName"] if User["NickName"] else "NaN" User_dict["City"] = User["City"] if User["City"] else "NaN" User_dict["Sex"] = User["Sex"] if User["Sex"] else 0 User_dict["Signature"] = User["Signature"] if User["Signature"] else "NaN" ……

基於微信開放的個人號介面python庫itchat,實現對微信好友的獲取,並對省份、性別、微信簽名做數據分析。 效果: 直接上代碼,建三個空文本文件stopwords.txt,newdit.txt、unionWords.txt,下載字體simhei.ttf或刪除字體要求的代碼,就可以直接運行。 #wxfriends.py 2018-07-09import itchatimport sysimport pandas as pdimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei']#繪圖時可以顯示中文plt.rcParams['axes.unicode_minus']=False#繪圖時可以顯示中文import jiemport jieba.posseg as psegfrom scipy.misc import imreadfrom wordcloud import WordCloudfrom os import path#解決編碼問題non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd) #獲取好友信息def getFriends():……

Python數據分析之雙色球基於線性回歸演算法預測下期中獎結果示例

本文實例講述了Python數據分析之雙色球基於線性回歸演算法預測下期中獎結果。分享給大家供大家參考,具體如下: 前面講述了關於雙色球的各種演算法,這里將進行下期雙色球號碼的預測,想想有些小激動啊。 代碼中使用了線性回歸演算法,這個場景使用這個演算法,預測效果一般,各位可以考慮使用其他演算法嘗試結果。 發現之前有很多代碼都是重復的工作,為了讓代碼看的更優雅,定義了函數,去調用,頓時高大上了 #!/usr/bin/python# -*- coding:UTF-8 -*-#導入需要的包import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport operatorfrom sklearn import datasets,linear_modelfrom sklearn.linear_model import LogisticRegression#讀取文件d……

以上就是本次介紹的Python數據電子書的全部相關內容,希望我們整理的資源能夠幫助到大家,感謝大家對鬼鬼的支持。

注·獲取方式:私信(666)

⑤ python輸入某年某月某日計算到年底還有多少天

year = int(input("請輸入年份:"))
month = int(input("請輸入月份:"))
day = int(input("請輸入日期:"))

months = [0,31,59,90,120,151,181,212,243,273,304] # months累加記錄1-11月的總天數

if 0 < month < 12: # 假設為非閏年時,當前日期的天數
sum = months[month - 1] + day

flag = 0
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): # 判斷是否為閏年,如果為閏年flag = 1
flag = 1

if flag == 1 and month > 2: # 年份為閏年且月份大於2
sum += 1

print("%d.%d.%d 是 %d 年的第 %d 天" % (year,month,day,year,sum))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
輸入年月日,判斷今年還剩多少天
此程序和上一個程序其實大同小異,只需要知道今年總天數,然後:
今年剩餘多少天 = 總天數 - 今天是今年的多少天
你就說簡不簡單?

year = int(input("請輸入年份:"))
month = int(input("請輸入月份:"))
day = int(input("請輸入日期:"))

days = 365
months = [0,31,59,90,120,151,181,212,243,273,304]

if 0 < month < 12:
sum = months[month - 1] + day

flag = 0
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
flag = 1
days += 1

if flag == 1 and month > 2:
sum += 1

surplus_day = days - sum

print("今天是:%d.%d.%d,今年還剩 %d 天" % (year,month,day,surplus_day))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
兩個程序可以綜合起來,具體步驟就不詳細說明了!!!

加油!O(∩_∩)O

文章知識點與官方知識檔案匹配
Python入門技能樹首頁概覽
200575 人正在系統學習中
打開CSDN,閱讀體驗更佳

《學習記錄》「Python」輸入月份,輸出天數
輸入一個月份,首先判斷是否為1-12,然後判斷返回該月份的天數。
繼續訪問

python計算今年第幾天_Python三種方法計算指定日期是今年的第幾天
今天早上和騰訊面試官進行了視頻面試,由於音量和網路以及我的垃圾電腦的原因,個人感覺黃了...最後面試官給了我一道簡單的計算題:指定日期是今年的第幾年由於電腦卡到打字都打不動,我勉勉強強寫了一點,雖然面試官知道了我的想法也了解我的設備情況,最後沒讓我寫完但是心裡慚愧還是時候補齊了...話不多說回到主題吧首先是輸入的問題,個人認為分別輸入年月份是一件很初級的要求,就實現了形如「2020-3-26」的字...
繼續訪問
python春節_python計算春節倒計時
先來無聊,想知道今年的春節還有幾天,好久沒寫python代碼了,下面就隨便寫了一個,如有不對之處,還請各位看官不靈賜教,好了,我直接上代碼了:#coding=utf-8#!/usr/bin/env pythonimport datetimespring=datetime.datetime(2014,1,31,0,0,0) #春節日期today=datetime.datetime.now() ...
繼續訪問
python代碼實現「今天是今年的第幾天」
python代碼實現「今天是今年的第幾天」 ** #代碼如下: list_day_runnian = [0,31,29,31,30,31,30,31,31,30,31,30,31] year = int(input(『輸入年份:』)) month = int(input(『輸入月份:』)) day = int(input(『輸入日期:』)) if 1<= month <=12: if (year%400==0)or((year%4 == 0 )and (year%100!=0)): pastmo
繼續訪問
Python 根據輸入的年月日判斷今天是今年的第多少天
year = int(input("請輸入年份:")) month = int(input("請輸入月份:")) day = int(input("請輸入日期:")) sum_day = 0 months=[31,28,31,30,31,30,31,31,30,31,30,31] # 判斷幾月份 然後加到變數里,開頭是0的就不用了 for i in range(month-1): sum_day += months[i] sum_day += day #判斷二月 leap = 0 if (year
繼續訪問
python實現輸入日期判斷這一天是今年多少天
這里寫自定義目錄標題新的改變功能快捷鍵合理的創建標題,有助於目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個表格設定內容居中、居左、居右SmartyPants創建一個自定義列表如何創建一個注腳注釋也是必不可少的KaTeX數學公式新的甘特圖功能,豐富你的文章UML 圖表FLowchart流程圖導出與導入導出導入 整體思路: 1、輸入日期 2、判斷輸入的日期是否合法 3、計算輸入的日期天數 你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學
繼續訪問
用python解:輸入某年某月某日,判斷這一天是這一年的第幾天?
用python解:輸入某年某月某日,判斷這一天是這一年的第幾天?
繼續訪問
熱門推薦 C語言:鍵盤輸入年月日,計算這一天是這一年的第幾天
比如輸入20201010,計算10號這一天是2020年的第幾天首先要考慮這一年是平年還是閏年,其次考慮所有的月份有多少天,最後是考慮怎麼去把所有的天數加在一起。平年的二月份有28天,閏年的二月有29天,所以要判斷這一年是平年還是閏年;而判斷是不是閏年的標准就是這一年除以400能除盡或者這一年除以4和除以100都能除盡,即year%4==0 && year%100!=0 || year%400==...
繼續訪問
python練習題:輸入某年某月某日,判斷這一天是這一年的第幾天?
python練習題
繼續訪問
python輸入年月日,得出已經過了多少天?
# -*- coding: UTF-8 -*- import time def What_day_of_the_year(inputTime): #函數,判斷字元串是否為數字 def is_number(s): try: float(s) return True except ValueError: pass try: import unicodedat
繼續訪問
用python解決題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
一.思路 year = int(input("請輸入年:\n"))#用int()將字元型變數改為整形,以便之後的運算 month = int(input("請輸入月:\n")) day = int(input("請輸入日:\n")) months1 = [0,31,60,91,121,152,182,213,244,274,305,335,366]#閏年 months2 = [0,31,59,90...
繼續訪問
python這天第幾天_Python編程實現輸入某年某月某日計算出這一天是該年第幾天的方法...
此文實例介紹了Python編程實現輸入某年某月某日計算出這一天是該年第幾天的方法。推薦給大夥學習一下,內容如下:#基於 Python3一種做法:def is_leap_year(year): # 判斷閏年,是則返回True,否則返回Falseif (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:return Trueelse:retur...
繼續訪問
python小程序(3)輸入某年某月某日,計算這一天是這一年的第幾天
思路 先判斷是閏年還是平年,再調用相應函數 計算每個月多少天,然後加上前幾個月的所有天數和這個月的天數 import sys #輸入某年某月某日,計算這一天是這一年的第幾天 while True: year=int(input('Year:')) mon=int(input('Month:')) day=int(input('Day:')) if ye...
繼續訪問
C語言實現計算某一天是當年的第幾天,並計算出一年的剩餘天數
這段代碼的實現是很簡單的,用的就是判斷後累加的方法實現的,原理是很簡單的。 第幾天的計算:比如計算的是11月,先將前十個月的天數計算並相加起來,除了二月的天數閏年會有所不同外,其他的都是一樣的,其次就是將輸入的天數加上就可以了。 剩餘多少天的計算:先將輸入進去的這一年的總天數計算出來,再減去上面計算出的第幾天就可以了。 這道題其實主要考的還是閏年的相關計算方法, 判斷任意年份是否為閏年,需要滿足以下條件中的任意一個: ① 該年份能被 4 整除同時不能被 100 整除; ② 該年份能被400整除。
繼續訪問
最新發布 C語言實現輸入某年某月某日,判斷這一天是這一年的第幾天,並輸出今年還剩下多少天?
C語言輸入某年某月某日,判斷這一天是這一年的第幾天,並輸出今年還剩下多少天。
繼續訪問
python 編程實現輸入某年某月某日,輸出它是這一年的第幾天
問題:python 編程實現輸入某年某月某日,輸出它是這一年的第幾天? 解題思路: 1、判斷該年份是閏年還是平年,用 if 分支計算。 2、不同月份的計算:大月,小月,二月,考慮用while循環。 一月 天數=某日 二月 天數=某日+31 三月 天數=某日+31+二月 四月 天數=某日+31+二月+31 五月 天數=某日+31+二月+31+30 ...... def a_1(a, b, c): i=1 #「輸入月份」之前的月份(因為...
繼續訪問

python輸入兩個數,分別代表年份和月份,計算這個月的天數
python輸入兩個數,分別代表年份和月份,計算這個月的天數
繼續訪問
Python實現用戶輸入年月日,程序列印出這是這一年的第多少天
1. 自己造輪子 year=int(input('請輸入年份,如2019>>>')) month=int(input('請輸入月份,如8>>>')) day=int(input('請輸入日期,如25>>>')) #下面這塊代碼是按照閏年計算 if (year%4==0 and year%100!=0) or (year%400==0): ...
繼續訪問
python獲取年末,月末,季末的日期和距指定時間的天數
我們在python日常使用中經常會用到時間的各種計算,這個也是讓人頭疼的地方,下面的方法實現了 年末,月末,季末的日期和距指定時間的天數的計算,要的拿去。自己也做個筆記。後面直接用。 def last_day(any_day): """ 獲取獲得一個月未,季末,年未的天數 的最後一天 :param any_day: 任意日期 :return: <class 'datetime.date'年,月,季末的日期,距年末,月末,季末的天數 """ next_mo
繼續訪問
用days函數算出第幾天c語言,給出年月日 計算該日是該年的第幾天
給出年月日 計算該日是該年的第幾天C語言#include int main(){int sum_day(int month,int day);int leap(int year);int year,month,day,days;printf("input date(year,month,day):");scanf("%d,%d,%d",&year,&month,&day);...
繼續訪問

資料庫課程設計
c語言文件讀寫操作代碼
html+css+js網頁設計
寫評論

1

11

1


⑥ 急!!用python連接資料庫

settings.py
if DEBUG:
DATABASES = {
'default': {
'ENGINE': 'mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '庫名', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '3306', # Set to empty string for default. Not used with sqlite3.
},
'庫名': {
'ENGINE': 'mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '庫名', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '3306', # Set to empty string for default. Not used with sqlite3.
}
}

⑦ 如何用python表示三角函數

腳本之家
JavaScript
資料庫
PHP編程
ASP.NET
ASP編程
AJAX相關
正則表達式
相關技巧
伺服器
其它綜合
﹤首頁 → 腳本專欄 → python → Python入門之三角函數sin()函數

Python入門之三角函數sin()函數實例詳解
發布時間:2017-11-08 10:28:02 投稿:mengwei

這篇文章主要介紹了Python入門之三角函數sin()函數實例詳解,分享了相關實例,具有一定參考價值,需要的朋友可以了解下。
描述

sin()返回的x弧度的正弦值。

語法

以下是sin()方法的語法:

importmath
math.sin(x)
注意:sin()是不能直接訪問的,需要導入math模塊,然後通過math靜態對象調用該方法。

參數

x--一個數值。

返回值

返回的x弧度的正弦值,數值在-1到1之間。

實例

以下展示了使用sin()方法的實例:

#!/usr/bin/python
import math

print "sin(3) : ", math.sin(3)
print "sin(-3) : ", math.sin(-3)
print "sin(0) : ", math.sin(0)
print "sin(math.pi) : ", math.sin(math.pi)
print "sin(math.pi/2) : ", math.sin(math.pi/2)
以上實例運行後輸出結果為:

sin(3) : 0.14112000806
sin(-3) : -0.14112000806
sin(0) : 0.0
sin(math.pi) : 1.22460635382e-16
sin(math.pi/2) : 1
總結

以上就是本文關於Python入門之三角函數sin()函數實例詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站:python正則表達式re之compile函數解析、Python中enumerate函數代碼解析、簡單了解Python中的幾種函數等,有什麼問題可以隨時留言,小編會及時回復大家的。感謝朋友們對本站的支持!

您可能感興趣的文章:
Python入門之三角函數全解【收藏】
Python入門之三角函數tan()函數實例詳解
Python入門之三角函數atan2()函數詳解
Python中計算三角函數之cos()方法的使用簡介
用Python計算三角函數之atan()方法的使用
Python計算三角函數之asin()方法的使用
用Python計算三角函數之acos()方法的使用
Python繪制三角函數圖(sin\cos\tan)並標注特定范圍的例子

相關文章
Python自動化測試Eclipse+Pydev 搭建開發環境
Python Selenium 之數據驅動測試的實現
Python腳本暴力破解柵欄密碼
Python中的推導式使用詳解
python中對list去重的多種方法
Python 實現刪除某路徑下文件及文件夾的實例講解
python pillow模塊使用方法詳解
python numpy數組中的復制知識解析
python實現根據主機名字獲得所有ip地址的方法
python實現隨機調用一個瀏覽器打開網頁
最新更新
1在雙python下設置python3為默認的方法
2Python牛刀小試密碼爆破
3python中的decorator的作用詳解
4Django項目開發中cookies和session的常用
5Python實現的序列化和反序列化二叉樹演算法
6發布你的Python模塊詳解
7詳解Appium+Python之生成html測試報告
8Django 配置多站點多域名的實現步驟
9django 消息框架 message使用詳解
10python利用rsa庫做公鑰解密的方法教程

業界資訊
IntelliJ IDEA 2020.2 EAP6 發布,支持 Jakarta EE 92020-07-06
Ubuntu 19.10 將於2020.7.17結束生命周期,官方建議遷移至 Ubuntu 20.042020-07-04
Ubuntu 20.04 LTS(Focal Fossa)發布:新功能特性介紹2020-07-04
2020年端午三天假期高速免費嗎? 端午節高速是否免費的相關介紹2020-06-22
Adobe將於12月31日終止支持Flash Flash正式宣告死亡2020-06-18
微軟將於 7 月恢復Windows 10可選更新補丁推送2020-06-18
安卓最新版微信怎麼修改微信號有哪些注意事項?四種情況不能修改2020-06-05
Android Studio 4.0 穩定版發布了,牛逼功能一覽2020-06-01
Chrome 83穩定版發布 更新內容匯總介紹2020-05-21
PyTorch官方教程大更新:增加標簽索引,更加新手友好2020-05-19
網友評論

請輸入您感興趣的關鍵字
硬體安全網路評測蘋果安卓手游攻略應用Win10
首頁編程手機電腦教程
電腦版 - 返回首頁
Copyright ©2006-2020 腳本之家. All Rights Reserved

腳本之家
10年專注電腦、網路、編程

⑧ python連接MySQL資料庫實例分析

python連接MySQL資料庫實例分析
本文實例講述了python連接MySQL資料庫的方法。分享給大家供大家參考。具體實現方法如下:
import MySQLdb
conn = MySQLdb.connect(host="localhost",
user="root",
passwd="123456",
db="test")
cursor = conn.cursor()
cursor.execute("select * from hard")
res = cursor.fetchall()
for x in res:
print x
cursor.close()
conn.close()
運行結果如下:
希望本文所述對大家的python程序設計有所幫助。

閱讀全文

與python資料庫編程實例相關的資料

熱點內容
python集成包 瀏覽:303
如何用電腦解壓縮文件 瀏覽:446
pubg用什麼伺服器 瀏覽:526
田漢pdf 瀏覽:661
記錄儀如何安裝安卓系統 瀏覽:594
python求灰度均值 瀏覽:756
c編譯器是系統軟體嗎 瀏覽:694
獲取伺服器內網地址 瀏覽:536
新手媽媽如何帶新生兒APP 瀏覽:157
java日程管理 瀏覽:376
高清視頻鏈接加密 瀏覽:407
新買的阿里雲伺服器怎麼配置 瀏覽:612
在線編譯器為什麼刷新還在 瀏覽:213
雲伺服器系統盤可以裝資料庫 瀏覽:908
php繪制圖形 瀏覽:588
支付伺服器異常怎麼辦 瀏覽:77
java撥號 瀏覽:868
er5200如何設置虛擬伺服器 瀏覽:573
網路中心伺服器叫什麼 瀏覽:459
isplay單片機下載器 瀏覽:482