人家說合格的程序員要養成經常寫博客的習慣。嗯。。。我正在培養中。日積月累,希望自己能堅持下去。
一、數字類型
1. 整數:與往常的C、C++等語言的不同是,python的整型沒有範圍約束。其餘相同。
2. 浮點數:取值範圍數量級 ~ ,精度 。需要注意的是浮點數不能直接比較大小。可以藉助round(x,d)函數,其中x是數值,d是截取的位數。python支持科學計數法,< a >e< b > 等價於
3. 複數: python中可以直接使用虛數,虛部用j表示。
4. 操作符
操作符 | 含義 |
---|---|
// | 整除 |
% | 取餘 |
** | 冪 (x**y=pow(x,y)) |
x op y | x += y 即x=x+y |
5. 運算函數
函數 | 說明 |
---|---|
abs(x) | 求絕對值 |
divmod(x,y) | 商餘,同時輸出商數和餘數 |
pow(x,y[,z]) | 冪餘,(x**y)%z |
round(x[,d]) | 四捨五入 |
max(),min() | 最大最小值函數 |
6.
##day_day_up.py
def dayup(df):
dayup = 1
for i in range(365):
if i%7 in [6,0]:
dayup = dayup*(1-0.01)
else:
dayup = dayup*(1+df)
return dayup
dayfactor = 0.01
while dayup(dayfactor)<37.78:
dayfactor+=0.001
print("工作日努力參數是:{:.3f}".format(dayfactor))
二、字符串
1. 編號:略
2. 切片:[M:N:K] #K是步長,K=-1時逆序
3. 函數
函數 | 說明 |
---|---|
len(x) | 求長度 |
str(x) | 轉爲字符串 |
hex(x)/oct(x) | 十六進制、八進制小寫形式 |
chr(x) | 將x轉爲字符型表示,其中的x爲Unicode編碼 |
ord(x) | 將x用Unicode編碼表示 |
print(內容,end=”“) | ,end=”“表示在同一行打印 |
4. 方法
方法 | 說明 |
---|---|
str.lower() | 全部變爲小寫 |
str.upper() | 全部變爲大寫 |
str.split(sep=None) | 返回一列表,由str根據sep被分隔的部分組成 |
str.count(sub) | 返回子串sub在str中出現的次數 |
str.replace(old,new) | 返回str副本,所有的old被new替換 |
str.center(width[,fillchar]) | 居中,width爲總寬度,fillchar爲填充的字符 |
str.strip(char) | 刪除str首尾指定字符。若char爲空格,常用於輸入的清理。 |
str.lstrip(char) | 刪除str開頭指定字符。 |
str.rstrip(char) | 刪除str結尾指定字符。 |
str.join(iter) | 以str爲連接符,連接iter中每一個元素 |
說明:
(1)str.strip(” “)只是刪除首位空格,若想刪除一條句子中的所有的空格,可以用str.replace(” “,”“)
(2)關於join()
>>>iter=['Let','us','study','python']
>>>' '.join(iter)
Let us study python
5. 槽{}
格式:“{}”.format()
{<參數序號>:<格式控制標記>}
<參數序號> | : | <填充> | <對齊> | <寬度> | <,> | <.精度> | <類型> |
---|---|---|---|---|---|---|---|
從0開始 | 引導符號 | 單個字符 | < 左對齊 ^ 居中 > 右對齊 |
輸出寬度 | 千位 分隔符 |
有個點 | 整數類型: b,c,d,o,x,X 浮點類型: e,E,f,% |
注意:在槽兩端要加雙引號,我每次都會忘。
>>>print("{1:*^10},{0:^5.2f}".format(3.1415926,"BIT"))
輸出:
***BIT****,3.14
[Finished in 1.7s]
例題1:凱撒密碼
描述
凱撒密碼是古羅馬凱撒大帝用來對軍事情報進行加解密的算法,它採用了替換方法對信息中的每一個英文字符循環替換爲字母表序列中該字符後面的第三個字符,即,字母表的對應關係如下:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
對於原文字符P,其密文字符C滿足如下條件:C=(P+3) mod 26
上述是凱撒密碼的加密方法,解密方法反之,即:P=(C-3) mod 26
假設用戶可能使用的輸入僅包含小寫字母a~z和空格,請編寫一個程序,對輸入字符串進行凱撒密碼加密,直接輸出結果,其中空格不用進行加密處理。使用input()獲得輸入。
輸入
示例1: python is good
輸出
示例1: sbwkrq lv jrrg
#Caesar_Cipher.py
code = input()
code = code.lower() #slove the problem of upper and lower both in the string, but don't need to think it in this item.
num = ord('a') #record the ascII of 'a'
for i in code:
if i is ' ':
print(' ',end="")
else:
index = ord(i) - num #record the indext of the letter in the alphabet list
password = chr(num + ((index + 3) % 26)) #tranform rule of Caesar Cipher
print(password,end="")
例題2:星號三角形
描述
讀入一個整數N,N是奇數,輸出由星號字符組成的等邊三角形
要求
第1行1個星號,第2行3個星號,第3行5個星號,依次類推,最後一行共N的星號。
輸入
示例1:3
輸出
示例2:
*
***
#trangle.py
N=eval(input())
r=int(N/2)+1#計算行數
for i in range(r):
n=2*i+1
my_str = '*' * n
print(my_str.center(N))
注:字符串和居中和print槽的居中^要區分開來。
三、time模塊
time庫中的函數大致可以分爲三類:
- 時間獲取:time() ctime() gmtime()
- 時間格式化:strftime() strptime()
- 程序計時:sleep() perf_counter()
下面逐個細說。
1、
time() #獲取當前時間,返回的格式是浮點型
ctime() #返回字符型的時間格式
gmtime() #返回計算機可處理的時間格式
測試代碼如下:
import time
print("float time:",time.time())
print("char time:",time.ctime())
print("computer time:",time.gmtime())
'''
輸出:
float time: 1525360585.78386
char time: Thu May 3 23:16:25 2018
computer time: time.struct_time(tm_year=2018, tm_mon=5, tm_mday=3,tm_hour=15, tm_min=16, tm_sec=25, tm_wday=3, tm_yday=123, tm_isdst=0)
'''
2、時間格式化
time.strftime(tpl,ts) #tpl:格式化模板字符串,用來定義輸出效果
#ts:計算機內部時間類型變量
time.strptime(str,tpl) #與strf相反
栗子:
import time
t = time.gmtime()
print(time.strftime("%Y-%m-%d %H:%M:%S",t))
'''
輸出:
2018-05-03 15:28:47
'''
3、程序計時
time.perf_counter()
#用於測量時間,返回一個CPU級別的精確時間計數值,時間單位爲秒。由於計數值起點不確定,連續調用使用差值纔有意義
time.sleep(s)
#讓程序休眠s秒
import time
start = time.perf_counter()
for i in range(5):
dur = time.perf_counter() - start
print("{:.2f}s".format(dur))
time.sleep(0.1)
'''
輸出:
0.00s
0.11s
0.22s
0.33s
0.44s
'''
爲了方便起見,由>>>開頭的爲在shell中寫的,具體操作方法是安裝python後在開始處敲入idle回車。沒有標>>>的爲在IDE中完成的。
關於python的IDE,我裝的比較全,使用的卻很少。
最先裝的是pycharm
後來裝了anaconda,安裝anaconda3時,會自動幫你把pycharm、spyder等都裝上。因爲個人考慮學習機器學習,裝了anaconda以後也就方便了吧。
至於現在用的sublime text3,這個要好好安利一下。它是同事告訴我的。建議初學者可以使用這個,原因就是它很簡單方便,不像pycharm一樣寫一小段還要新建項目,使用起來十分靈活。相比shell,方便保存。其實打開idle時,也可以選擇文本編輯用於保存每次的代碼,我開始就是這樣做的,有兩次都報錯找不出原因,重啓idle後再執行就可以了。同事告訴我是因爲它不穩定,所以推薦了我sublime。emmmmm,目前覺得很好用。
更博有些慢,原因有二,一是我太懶,二是我效率太低。其實自己挖了很多坑,C++、機器學習、python都有,都存到草稿裏了,寫着寫着,或者後來有點別的什麼事就忘了更了。好習慣慢慢養吧。其實大多數是從自己筆記中摘來的,只有一篇關於matlab的是自己工作中各種踩雷後寫的總結。寫完其實也不一定能記住,但一定比不寫好,而且方便以後複習。本來計劃幾天用很短時間把python二寫完後開一篇C++的,這幾日重學C++學到很多本科教材上從來沒講過的內容。但是寫完這篇一看錶已經零點了,第二天還要上班,emmmm,改天吧(又改天了)