新手鍛鍊一下,利用Python寫一個簡單的計時程序!

新手鍛鍊一下,利用Python寫一個簡單的計時程序!

Python 和放大鏡的二進制代碼

私信小編007即可自動獲取大量的Python視頻教程以及各類PDF!

用Python寫一個簡單的計時程序

時隔這麼久,終於騰出點時間,就想把手頭的工作簡單介紹一下,所以做一期關於編程的推送。本次涉及到的Python,是個對初學者非常友好的一款編程語言,學習起來非常輕鬆,同時本次推送僅介紹相關的函數與命令。Python遵循GPL協議,大家可以到Python.org免費下載對應的版本。

Python的啟動與退出

這個非常簡單,我們打開“終端”(windows系統為命令提示符),輸入:

python

此時敲一下回車鍵即可。如果在Mac系統下,直接輸入python會進入系統自帶的2.7版本,如果要進入新版本,如果我下載的3.7.1,那麼需要輸入的命令是:

python3.7

新手鍛鍊一下,利用Python寫一個簡單的計時程序!

新手鍛鍊一下,利用Python寫一個簡單的計時程序!

我們可以看到,當前行最左邊出現了“>>>”,這就說明我們已經成功進入了python。

如果要退出python,非常簡單,我們需要調用一個退出函數(如下)即可,此時可以看到我們回到了正常的終端命令下。

exit()

新手鍛鍊一下,利用Python寫一個簡單的計時程序!

基礎語法

這部分很簡單,我儘量言簡意賅一點。

一、註釋

單行註釋用#,多行註釋用一組'''或者"""引用。註釋內容不會被執行,只是留一個說明。以下兩種註釋其實質是一樣的。

# Hello

# Hi

'''

Hello

Hi

'''

二、縮進

在寫代碼塊的時候,python與其他大部分語言不同,不需要{}將內容括起來,而是通過縮進來完成,也就是按一下Tab鍵。例如if條件語句:

if a == 3: #第一行

a = a + 1 #第二行

b = a + 2 #第三行

c = a + 3 #第四行

else:

a = a + 2

這段的意思暫時不用理解,但是需要知道的是,第二行至第四行是第一行的子句。

三、數據類型與賦值

這裡僅介紹數字和字符串,其他數據類型,如列表、元組、集合、字典等有興趣可以自行百度。

數字很好理解,python3支持整數(int)、浮點(float)、布爾(bool)和複數(complex)。對於數字的計算很直觀:

>>> 3 + 9 #整型 加法

12

>>> 9.2 * 4 #浮點 乘法

36.8

>>> 8 / 3 #除法 結果為浮點

2.6666666666666665

>>> 8 // 3 #除法 結果為整型

2

>>> 12 % 5 #取餘

2

>>> 2 ** 4 #乘方

16

布爾型是True或者False,其值分別為1和0。(布爾型是python3新引入的,在python2中,只用1或0來表示)

複數很少會用到,其表示方法為 a+bj或者complex(a,b),a為實部,b為虛部。

字符串是一組字符,可以用單引號和雙引號標記。字符串可以用過[x:y]來截取,x、y為字符串中字符的序號,序號從0開始計,所取的值為x號字符到y號字符之前(不含y號字符)的字符。舉說明:

#單引號與雙引號是一樣的功能。

>>> 'qwer'

'qwer'

>>> "qwer"

'qwer'

>>> str = 'abcdefghijklmn' #給str賦值一串字符

# 此時,a的序號為0,b的序號為1,c的序號為2,以此類推

>>> str[0:1] #取a開始,到b之前(不含b)的字符

'a'

>>> str[1:3] #取b開始,到d之前(不含d)的字符

'bc'

上是正數的序號,倒數的序號用負數表示。-1表示最後一個字符,-2表示倒數第二個字符,以此類推。

>>> str = 'abcdefghijklmn' #給str賦值一串字符

>>> str[-2:-1] #取m開始,到n之前(不含n)的字符

'm'

>>> str[1:-2] #取b開始,到m之前(不含m)的字符

'bcdefghijkl'

# 其他

>>>str[2:] #取c開始,到最後的所有字符

'cdefghijklmn'

>>>str[3] #取d一個字符

'd'

字符串可以進行運算,例如:

>>> str = 'abcdefghijklmn' #給str賦值一串字符

>>> str + 'opq' #相加

'abcdefghijklmnopq'

>>> str * 2 #相乘

'abcdefghijklmnabcdefghijklmn'

特殊字符會用 \ 標註,比如 \n 表示換行,如下:

>>>str = 'abc\ndef' #給str賦值

>>>str #顯示str的內容

'abc\ndef' #可以看到賦值成功,這個字符串中有特殊字符“\n”

>>>print(str) #輸出一下str

abc

def #可以看出,“\n”並不是作為字符串內容輸出,而是自動換行了

如果你要抬槓,非要輸出個 “\n”,那麼請在字符串之前加一個“r”。

新手鍛鍊一下,利用Python寫一個簡單的計時程序!

賦值很簡單,用“=”即可。前面的例子也有,a = 2,是將2的值賦給a。那麼等號呢?等號是“==”,不等號是“!=”

if控制與for、while循環

if、for和while是所有語言中非常基礎又非常重要的存在。

if條件控制

if 條件1 :

語句1.1

語句1.2

elif 條件2:

語句2.1

語句2.2

else:

語句3.1

語句3.2

簡單來說,如果條件1為真,執行語句1.1和1.2,結束;如果條件1為假,條件2為真,執行2.1和2.2,結束;如果條件1為假,條件2為假,那麼執行3.1和3.2,結束;

for循環

for 變量 in 序列:

語句1

else:

語句2

for循環可以遍歷序列:

>>> seq = [1,2,3,4,5,6,7,8,9]

>>> for i in seq:

... print(i)

...

1

2

3

4

5

6

7

8

9

定義一個序列,內容為1至9,九個數字,然後讓變量i遍歷這個序列,每次循環輸出i的值。

while循環

while 條件:

語句

while循環,當條件為真時,執行語句,然後再次判斷條件。

>>> n=100

>>> sum=0

>>> ct=1

>>> while ct <= n:

... sum = sum + ct

... ct = ct + 1

...

>>> print(sum)

5050

這個例子是計算1至100所有正數之和。

重點命令

下面將結合一個計時測試程序的實力來講講一些簡單命令。

import

import time

import命令是引入模塊用的。因為我們需要計時,所以需要調取一些時間相關的函數,因此在這裡引入了time的模塊。模塊就好比一些預製好的函數的集合,引入後,可以直接調取其中的函數,而不必重新定義函數。

input()

input()函數是讀取鍵盤輸入的本文,我們常常將讀取內容直接賦值給一個變量。如下:

>>> pthtestfile = input("請拽入文本或輸入測試文檔路徑:")

輸入這條命令後,系統會返回引號內的文字,並等待輸入內容。

如下圖,當我們輸入完路徑之後,可以再查看一下pthtestfile的值,已經變成了我們的文件路徑。

新手鍛鍊一下,利用Python寫一個簡單的計時程序!

open(file, mode)

打開文件,file表示文件路徑,mode表示打開的模式。

>>> f = open(pthtestfile, "r")

>>> w = open(pthresultfile, "w")

這兩條命令是以讀模式打開pthtestfile路徑的文件,並賦值給文件對象f;以寫模式打開pthresultfile路徑的文件,並賦值給文件對象w。關於mode,在本實例中之只用讀模式r和寫模式w。

f.readline()

在我們有了文件對象f之後,f.readline()表示讀取文件f的一行,以“\n”為止。如果返回為空,那就說明讀取到最後一行了。每調用完一次,指針自動指向下一行。

類似的命令還有read(),和readlines(),可以自行百度。

我們現在準備一個txt文本,一共有三行,進行一下演練:

>>> f = open("/Users/gaoqy/Desktop/py/aaa.txt", "r")

>>> f.readline()

'Line 1\n'

>>> f.readline()

'Line 2\n'

>>> f.readline()

'Line 3'

>>> f.readline()

''

打開準備好的文件,調用readline命令,每調用一次返回一行的內容,以換行符“\n”為結尾,最後一次調用返回了一個空字符串,說明已經到最後一行了。

>>> f = open("/Users/gaoqy/Desktop/py/aaa.txt", "r")

>>> f.read()

'Line 1\nLine 2\nLine 3'

>>> f = open("/Users/gaoqy/Desktop/py/aaa.txt", "r")

>>> f.readlines()

['Line 1\n', 'Line 2\n', 'Line 3']

同樣的文件使用read()和readlines()讀取,效果是不一樣的。read()在一個字符串中返回所有內容,readlines()是返回了一個列表,列表裡的每一項就是文件中每一行的內容。

**因為每次讀取後,指針回指到文本末端,所以需要重新打開一遍。

w.write()

有讀取就要有寫入,所以寫入的命令就是write()。

>>> w = open("/Users/gaoqy/Desktop/py/bbb.txt", "w")

>>> w.write("你好呀!")

4

我們新建一個bbb.txt空白文檔,然後依然要打開它,模式為w,並賦值給文件對象w。向裡面寫入字符串“你好呀!”,此時返回的數字“4”表示寫入有4個字符。此時我們打開bbb.txt看不到此內容,因為我們寫完之後,並沒有關閉文檔,此時我們需要close()來關閉文檔。

>>> w.close()

新手鍛鍊一下,利用Python寫一個簡單的計時程序!

time.time()

這條命令是獲取從1970年1月1日到此時此刻的時間,單位為秒。

>>> import time #需要先引入time模塊啦

>>> time.time()

1540814234.5979111 #15.4億秒,時間飛逝啊

部分系統可能並不是到1970年,我們可以用gmtime(0)來查看。同時我們可以使用gmtime()來查看當下時間。

**用gmtime調取的均為UTC,協調世界時。

#因為之前引入了time模塊,在關閉程序前不必再次引入。

>>> time.gmtime(0)

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

>>> time.gmtime()

time.struct_time(tm_year=2018, tm_mon=10, tm_mday=29, tm_hour=12, tm_min=1, tm_sec=26, tm_wday=0, tm_yday=302, tm_isdst=0)

str()

這個命令是把內容轉化為字符串

新手鍛鍊一下,利用Python寫一個簡單的計時程序!

導入time模塊,調用time()時,返回的是浮點數。我們用str()套一下的話,返回的就是字符串了。

實例

利用以上的知識,我們來分析一下這個實例:

新手鍛鍊一下,利用Python寫一個簡單的計時程序!

1-3行:版權聲明,系統生成的,我加了一個版本號方便修正

6行:引入time模塊

7行:讀取測試文檔路徑

8行:讀取空白文檔路徑

9行:打開測試文檔,並賦值給文件對象f

10行:打開空白文檔,並賦值給文件對象w

11行:定義sp,其實就是換行符啦

12行:if條件控制,我在測試文檔前加了一串字符當作校驗碼,校驗碼匹配才能繼續運行

13-19行:其實沒什麼用,就是個說明

20行:提示開始測試

21行:空白,為了閱讀時不易串行

22行:while循環,當沒有到文本最後一行的時候執行下面的語句

23-24行:讀一行文本並輸出該文本

25行:記錄起始時間

26行:等待輸入,其實就是等待閱讀完成

27-30行:記錄結束時間,並計算閱讀時長,寫入文件w

31-32行:提示準備開始下一句

33-36行:關閉兩個文件,並提示測試結束

37行:如果校驗碼有問題,提示警告

實際運行


新手鍛鍊一下,利用Python寫一個簡單的計時程序!


這裡有個問題就是測試文檔需要經過提前編輯。第一行為校驗碼,第二、四、六、八等行為佔位用的,第三、五、七、九等行為閱讀內容。因為我們在程序的22行while循環中使用了readline(),所以程序其實是隔行輸出文本。

另外,我用的xcode寫的代碼,個人習慣吧。也可以用文檔app直接寫,寫完之後把後綴改成py即可。

如果有什麼問題,可以留言,一起研究咯


分享到:


相關文章: