国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python——基本數據類型(模塊2: time庫的使用)(實例3:文本進度條)

Jenny_Tong / 1400人閱讀

摘要:前言本篇主要介紹基本數據類型,以文本進度條為例,介紹庫的使用。

前言

本篇主要介紹基本數據類型,以文本進度條為例,介紹time庫的使用。
并在最后對蟒蛇繪制的代碼進行分析。
(從本篇開始,出現的一些庫中函數介紹以及部分簡單代碼都將以圖片形式呈現)

讀完本篇,你將了解:
1.方法論
Python語言數字及字符串類型
2.實踐能力
初步學會編程進行字符類操作

本篇將系統介紹:
1.數字類型及操作(整數、浮點數、復數及相關函數)
2.字符串類型及操作(字符串及字符串序號、操作函數、類型的格式化)
3.模塊2: time庫的使用(時間獲取、格式化、程序計時應用)
4.實例3:文本進度條(簡單開始->單行動態刷新->完整效果)

了解基本數據類型之后, 通過字符串、數字的組合,將能很容易的操作字符,使我們能更好的開展程序設計

一、數字類型及操作

1.整數類型

與數學中整數的概念一致,可正可負,沒有取值范圍限制
(1)pow(x,y)函數∶計算x的y次方,由于整數沒有限制,想算多大算多大
(2)4種進制表示形式
①十進制:1010,99,-217
②二進制,以0b或0B開頭:0b010,-OB101
③八進制,以0o或0O開頭:0o123,-OO456
④十六進制,以0x或0X開頭:0x9a,-0X89

2.浮點數類型

與數學中實數的概念一致,帶有小數點及小數的數字
(1)注意:浮點數取值范圍和小數精度都存在限制,但常規計算可忽略
取值范圍數量級約-10^(308) 10^(308)
精度數量級:10^-16
(2)不確定尾數:浮點數間運算存在不確定尾數,不是bug
①舉例:>>> 0.1 + 0.3輸出0.4
>>> 0.1 +0.2輸出0.30000000000000004
涉及到計算機對數字運算的內部實現原理
②原理:計算機中采用二進制表達數字,Python中采用53位二進制表示小數部分,約10^-16
由于計算機中的二進制跟十進制之間,不存在嚴格的對等關系,計算機只能截取53位,無限接近0.1
輸出時只保留16位,之后的并未輸出。故二進制與十進制之間轉換出現不確定尾數
(3)round(x, d):對x四舍五入,d是小數截取位數
①浮點數間運算及比較用round()函數輔助
②不確定尾數一般發生在10^-16左右,round()十分有效
(4)科學計數法
①格式:使用字母e或E作為冪的符號,以10為基數,格式如下:
(a)e(b)表示a*10b
②例如∶4.3e-3 值為0.0043或9.6E5值為960000.0

3.復數(僅Python提供)

與數學中復數的概念一致
(1)定義j=√(-1),以此為基礎,構建數學體系
(2)a+bj被稱為復數,其中,a是實部,b是虛部
(3)z.real獲得實部、z.imag獲得虛部
(4)客觀說常規編程中很少使用,但是它卻是進行空間變換,尤其是跟復變函數相關的科學體系中最常用的一種類型

4.數字類型及操作

操作符是完成運算的一種符號體系
(1)一些基礎操作符

注意:/的結果保留小數

(2)對二元操作符的增強型操作符

(3)數字類型的關系
類型間可進行混合運算,生成結果為"最寬"類型
①三種類型存在一種逐漸"擴展"或"變寬"的關系∶
整數->浮點數->復數
②例如:123 +4.0 = 127.0 (整數+浮點數=浮點數)

5.數值運算函數

(1)Python提供的一些函數

(2)數字類型轉換函數

二、字符串類型及操作

1.字符串類型的表示

(1)字符串:
由0個或多個字符組成的有序字符序列
①字符串由一對單引號或一對雙引號表示:"請輸入帶有符號的溫度值: "或’C’
②字符串是字符的有序序列,可以對其中的字符進行索引(從0開始)
如:"請"是"請輸入帶有符號的溫度值:”的第O個字符

(2)字符串有2類共4種表示方法
①由一對單引號或雙引號表示,僅表示單行字符串
如:“請輸入帶有符號的溫度值: “或’℃’
②由一對三單引號或三雙引號表示,可表示多行字符串(作用而言,也可當作注釋使用)
‘’’ Python
語言‘’‘
③如果希望在字符串中包含雙引號或單引號呢?
若字符串中出現雙引號,那么最外層的引號就要使用單引號,反之
如:"這里有個雙引號(”)‘或者"這里有個單引號(’)”
④如果希望在字符串中既包括單引號又包括雙引號呢?
則用三個單引號表示
如:’‘’這里既有單引號(’)又有雙引號(")‘’‘
⑤故這4種方法存在冗余,使得字符串中出現單引號或者雙引號的處理更方便簡單

(3)字符串的序號
正向遞增序號和反向遞減序號

①使用[ ]獲取字符串中一個或多個字符
1)索引∶返回字符串中單個字符 <字符串>[M]
"請輸入帶有符號的溫度值: "[0]或者TempStr[-1]
2)切片:返回字符串中一段字符子串 <字符串>[M: N]
“請輸入帶有符號的溫度值:”[1:3]或者TempStr[0:-1]
(這里之前說過,不再多作贅述)

②字符串切片的高級用法
使用[M: N:K]根據步長對字符串切片
1)<字符串>[M: N],M缺失表示至開頭,N缺失表示至結尾
如:“o一二三四五六七八九十”[:3]結果是"O一二"(從最開始到3前一個為止)
2)<字符串>[M: N: K],根據步長K對字符串切片
“o一二三四五六七八九十”[1:8:2]結果是"一三五七"(從第一位置到第八位置前結束,步長為2取)
3)小技巧:將字符串逆序[::-1]
“o一二三四五六七八九十”[::-1]結果是"十九八七六五四三二一o"
(從最開始到結尾,步長-1(即從后向前逐一取出),相當于逆序)

③轉義符
1)轉義符表達特定字符的本意
“這里有個雙引號(”)”結果為:這里有個雙引號(")
2)轉義符形成一些組合,表達一些不可打印的含義
如:"/b"回退“ /n"換行(光標移動到下行首)“ /r”回車(光標移動到本行首)

2.字符串操作符

(1)由0個或多個字符組成的有序字符序列

(2)舉例:獲取星期字符串
輸入∶1-7的整數,表示星期幾
輸出∶輸入整數對應的星期字符串
例如∶輸入3,輸出星期三

weekStr = "星期一星期二星期三星期四星期五星期六星期日"weekId = eval(input("請輸入星期數字(1-7):"))pos = (weekId-1)*3  # 算出起始索引的位置print(weekStr[pos:pos+3]) # 使用切片操作,將切片結果返回給用戶

利用操作符改進

weekStr = "一二三四五六日"weekId = eval(input("請輸入星期數字(1-7):"))print("星期"+weekStr[weekId-1])

3.字符串處理函數

(1)一些以函數形式提供的字符串處理功能

str和eval是一對對應的函數

這兩個函數也是一對對應函數
(2)Unicode編碼
Python字符串的編碼方式
①統一字符編碼,即覆蓋幾乎所有字符的編碼方式
②從0到1114111(Ox10FFFF)空間,每個編碼對應一個字符
③Python字符串中每個字符都是Unicode編碼字符,使得Python程序不限于中文英文韓文日文俄文等
④一些有趣的例子:
>>> "1 +1 = 2 " +chr( 10004)輸出’1 +1 = 2 √’

4.字符串處理方法

(1)方法
"方法"在編程中是一個專有名詞
①"方法"特指(a).(b)風格中的函數b()
②方法本身也是函數,但與a有關,是a能提供的函數,必須a.b()風格使用(面向對象的一種使用風格)
③字符串及變量也是a,存在一些方法

(2)8個常用方法(字符串及變量也是a,存在一些方法)


①split()函數:例子中用逗號分隔字符串,即只要出現逗號就會把字符串拆解為兩個部分
故A后的逗號就會將A多帶帶形成一個字符串,B同樣。然后將他們放成一個列表類型返回給用戶
②center()函數:(對字符串格式進行處理)根據width居中,居中后剩余兩側填充為fillchar(使打印規則的輸出處理簡易)
③strip()函數:去除字符串左右兩側預定義字符

5.字符串類型的格式化

格式化是對字符串進行格式表達的方式
(1)字符串格式化使用.format()方法,用法如下:
<模板字符串>.format(<逗號分隔的參數>)
(2)槽
相當于一個占位信息符,它使用一對{}來表示,只在字符串中有用
①舉例

1)每一個槽中所要添加的內容與.format方法中對應的參數相一致
2)槽的3個順序在不指定的情況下默認為012
3)將format方法中的參數按照對應順序填到模板字符串的槽中
4)進一步可在槽中指定需要添加的參數的位置

(3)Python語言使用槽機制加上format方法,來形成字符串的格式化
除參數序號之外,如果某一個槽中確定關聯的某一個參數,可以對參數的輸出格式進行控制。
在槽內部使用格式化的控制標記來進行格式控制

(4)format()方法的格式控制
①槽內部對格式化的配置方式
通過一個冒號來引導一些參數,控制某一個變量在槽位置的輸出格式
Python一共提供了六種格式控制標記

分為兩組記憶
②前三個參數為一組,這三個參數分別表達填充、對齊和寬度
基本模式:
1)給出一個輸出寬度
2)決定即將輸出的這個參數在這個寬度中的對齊方式
3)確定對齊方式之后,若還有空余空間,該填充什么字符
首先要給定填充,其次設定對齊,最后設定寬度
4)舉例

第一個例子中:
在一個模板字符串中,槽中給出“:=^20”。=指填充符號,空余空間中填=的單字符
^表明居中對齊(>指右對齊)指的是所放入槽中的format方法中的第0個參數以居中對齊方式來顯示
20指輸出寬度
第三個例子中:
省略填充、對齊,直接給出寬度。默認情況下填充為空格,變量左對齊

③后三個都是與具體的數字有關(控制數字類型輸出)
1)<,>:數字的千位分隔符(這種情況只有在輸出字符串,但是當作數字給人閱讀的時候才會使用)
2)<.精度>:浮點數小數精度或字符串最大輸出長度
3)<類型>:我們以什么樣的類型將變量放到槽中
4)舉例

第一個例子中:
.2f表示保留兩位小數并使用千位分隔符
第二個例子中:
對425以:b的形式輸出二進制格式,以:c的形式輸出字符形式(即Unicode編碼形式)
以:d的形式輸出十進制格式, 以:o的形式輸出八進制格式
以:x的形式輸出十六進制格式, 以:X的形式輸出大寫十六進制格式
第三個例子中:
以:e的形式采用科學計數法e形式表示浮點數, 以:E的形式采用科學計數法E形式表示浮點數,
以:f的形式采用通常的非科學計數法表示浮點數, 以:%的形式采用百分號形式表示浮點數。

三、time庫的使用

1.time庫基本介紹

(1)time庫是Python中處理時間的標準庫
①計算機時間的表達
②提供獲取系統時間并格式化輸出功能
③提供系統級精確計時功能,用于程序性能分析

(2)使用方法:
import time
time.b()
以此調用相關函數(最典型最直接Python庫的使用方法)

(3)time庫包括三類函數
①時間獲取:time() ctime() gmtime()
②時間格式化并輸出: strftime() strptime()
③程序計時(time庫的重要功能): sleep(), perf_counter()

2.時間獲取

(1)一些函數

①時間戳是一個很長的浮點數,表示從1970年1月1日0:00開始,到當前這一時刻為止的,一個以秒為單位的數值
②ctime():給出一個具體的時分秒的時間(time庫中獲取人類譯讀方式時間的最簡單的函數)

③gmtime():獲取當前時間,但獲取后生成的格式不一樣,生成的是一種計算機程序可以處理的時間格式
(2)這三個函數基本能對獲取來的時間做所有可能的后續處理

3.時間格式化

將時間以合理的方式展示出來
(1)格式化
①格式化:類似字符串格式化,需要有展示模板
②展示模板由特定的格式化控制符組成(告訴程序輸出的時間大概是什么樣子)
③實現時間格式化的方法:strftime()方法
(2)strftime()

(3)時間格式化很重要的一點
將計算機內部時間中,表達的年月日時分秒等相關的與時間有關的信息,用一種變量的形式進行合理組合,并合理輸出
通過控制來表達輸出格式
(4)time庫中的控制符
格式:%+字母

(可回顧剛剛的例子)

(5)strptime()

將一個字符串變成一個計算機內部可操作的一個時間(特定程序中才會使用)

4.程序計時應用

(1)程序計時應用廣泛
①程序計時指測量起止動作所經歷時間的過程
②測量時間: perf_counter()(獲取計算機中CPU以其頻率運行的時鐘,往往以納秒來計算,非常精準)
③產生時間: sleep()(讓程序休眠或產生一定時間)

(2)perf_counter()

(3)sleep()

四、實例4:文本進度條

1.需求分析

(1)文本進度條
①采用字符串方式打印可以動態變化的文本進度條
②進度條需要能在一行中根據程序的運行逐漸變化(與時間有一定關系)
(2)如何獲得文本進度條的變化時間?
采用sleep()模擬一個持續的進度

2.“文本進度條“簡單的開始

(1)代碼實現

# TextProBarV1import timescale = 10print("------執行開始------")for i in range(scale+1):    a = "*" * i    b = "." * (scale-i)    c = (i/scale)*100    print("{:3.0f}%[{}->{}]".format(c, a, b))    time.sleep(0.1)print("------執行結束------")

①該代碼完成了一個基本的文本進度條框架
②執行效果:生成一個有開始、結束標記,且有一定進度百分比表示的進度條格式

(2)代碼簡單分析
①引入time庫,使用time庫的sleep()函數來生成一個持續不斷的時間
②打印“執行開始”“執行結束”作為標簽
③定義變量scale=10,指文本進度條的大概的寬度
④for循環模擬進度:for i in range(n)結構
⑤基本原理:定義休眠時間,每次循環都會打印當前進度條狀態,進行一個簡單的休眠
⑥for循環中的相關工作:
1)a等于字符(乘號)與循環變量i的乘積(字符串與整數的乘積表示字符串被復制的次數)
指當前百分比所表達的信息
2)b等于’."與當前剩余的進度條的比例之間的乘積
3)a與b構成當前進度比例中,與已經執行的和未知執行的之間的對應的(星號)和‘."兩者之間的關系
4)變量c等于i除以scale乘以100,輸出與當前進度條與進度相關的百分比
⑦print函數設置三個槽,在每個槽中增加了百分比以及相應字符串
⑧指向效果如上圖

3.“文本進度條“單行動態刷新

(1)單行動態刷新:
刷新的關鍵是/r
①刷新的本質是:用后打印的字符覆蓋之前的字符
②不能換行:print()需要被控制(print()默認輸出之后會換行到下一行)
③要能回退:需要讓打印后光標退回到之前的位置/r(輸出字符串之后,光標會移動到字符串之后)
(2)代碼實現

# TextProBarV1import timefor i in range(101):    print("/r{:3}%".format(i), end="")    time.sleep(0.1)

①使用time庫及sleep()函數,101次的循環(0%到100%)
②代碼關鍵:print函數
輸出信息之后,增加,end=""這樣一個參數,可以改變每一次print輸出最后增加的那個信息
比如在這里我們使end賦值為空字符串,那么print函數每一次輸出字符串之后,不會增加換行
只會把光標停留在當次輸出字符串的后面
③總結:若希望輸出的字符串后面增加什么信息,就在end參數中增加,不希望增加換行,使end賦值為空字符串
④print的第一個參數:/r,一個槽,并給出百分號
/r:打印輸出之前,它能夠使光標退回到當前行的行首

4.“文本進度條“實例完整效果

(1)代碼實現

# TextProBarV3import timescale = 50print("執行開始".center(scale//2, "-"))start = time.perf_counter()for i in range(scale+1):    a = "*" * i    b = "." * (scale - i)    c = (i / scale) * 100    dur = time.perf_counter() - start    print("/r{:3.0f}%[{}->{}]{:.2f}s".format(c, a, b, dur), end="")    time.sleep(0.1)print("/n"+"執行結束".center(scale//2, "-"))

(2)代碼分析
與第一段代碼很接近,重點分析修改
①第一個和最后一個print,center函數用-填充在兩側
②增加計時效果:對程序進度有更好的展示(程序運行開始變量start開始時間)
③for循環:保留abc變量,新增dur變量記錄每一次需要打印文本進度條時所消耗的時間,當前時間減去最開始記錄的時間
④for中的print函數:打印文本進度條
1)單行刷新效果:最開始增加/r,實現光標向行首的移動
2)同時print函數要增加end參數,end賦值為空字符串:每次輸出之后不換行
(3)效果:具有一定格式框架,有進度“*”輸出,又有時間記錄的完整的文本進度條
(4)這段代碼覆蓋了字符串處理,覆蓋了數字處理,時間庫的使用
效果如圖

5.“文本進度條“舉一反三

(1)計算問題擴展
①文本進度條程序使用了perf_counter()計時
②計時方法適合各類需要統計時間的計算問題
③例如︰比較不同算法時間、統計部分程序運行時間
(2)進度條擴展
①在任何運行時間需要較長的程序中增加進度條
②在任何希望提高用戶體驗的應用中增加進度條
③進度條是人機交互的紐帶之一
(3)文本進度條的不同設計函數(作擴展用)

總結

經過本篇的學習,可以大致掌握運用time庫去實現基本的文本進度條(本篇只是基礎),大家可以嘗試不同的進度條設計風格。善于使用time庫函數來抓取時間。
如有錯誤,歡迎指正!
注:代碼非原創
下篇將介紹程序的控制結構。
ps(又咕咕了)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/119817.html

相關文章

  • 圖解——PyQt4從入門到運用

    摘要:將程序包裝在界面里,可以將輸入通過多種途徑如文本框彈出路徑選擇等輸入到程序里。將輸出通過文本框顯示出來將執行信息如如報錯信息運行進度通過文本框或進度條顯示出來文章安排先介紹安裝和配合的使用。 作為一個程序的開發者,我們僅僅需要在相應路徑通過命令行就可執行那個程序。但是,不懂行的人不理解這個黑框框的東西,陌生領域任何人都沒有安全感,所以他們是拒絕接受一個項目僅僅只是通過一個黑框框來執行的...

    史占廣 評論0 收藏0
  • Python3網絡爬蟲實戰---29、解析庫的使用:BeautifulSoup

    摘要:解析器在解析的時候實際上是依賴于解析器的,它除了支持標準庫中的解析器,還支持一些第三方的解析器比如,下面我們對支持的解析器及它們的一些優缺點做一個簡單的對比。 上一篇文章:Python3網絡爬蟲實戰---28、解析庫的使用:XPath下一篇文章:Python3網絡爬蟲實戰---30、解析庫的使用:PyQuery 前面我們介紹了正則表達式的相關用法,但是一旦正則寫的有問題,可能得到的就...

    MockingBird 評論0 收藏0
  • JavaScript 資源大全中文版

    摘要:官網全新的靜態包管理器。官網一個整合和官網的最佳思想,使開發者能快速方便地組織和編寫前端代碼的下一代包管理器。官網小巧的兼容的所見即所得的富文本編輯器。官網富文本編輯器。官網由制作,適用于每天寫作的富文本編輯器。 1. 包管理器 管理著 javascript 庫,并提供讀取和打包它們的工具。 npm:npm 是 javascript 的包管理器。官網 cnpm:cnpm 是 由于國...

    jzman 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<