跟不少前端工做者同樣,我也經常打聽。做爲前端,在要懂js的前提下,還要能夠學什麼其餘語言來增長本身的競爭力。
我看到最多的是node,不少人說前端真正的學好node。已經能夠勝任不少工做了。假如想學後端java是需求最大的。
不過目前來講java的學習成本很高,相對python是一門很好入門的語言,最近也是很火。
因此我想用一小段時間,快速瞭解一下python。(本文用的是python3.x)前端
先看數據類型(看咱們能夠pyhton中寫什麼。)java
乍一看基本類型和js的差很少。
在學習過程當中咱們會屢次用到print();相似於js的console,就是打印輸出。node
python的聲明沒有關鍵字,聲明和賦值寫法同樣。python
counter = 100 # 整型變量 miles = 1000.0 # 浮點型變量 name = "John" # 字符串變量 flag = True # 布爾類型變量 print(counter) //100 print(miles) //1000.0 print(name) //"John" print(flag) //True
這種經常使用的是動態語言,與之相反的是靜態語言。在聲明時規定變量的類型。後端
int a = 123; // a是整數類型變量 a = "ABC"; // 會報錯,不能把字符串賦給整型變量
至關於佔位符,用%符號調用。python3.x
`'Hello, %s' % 'world' // 'Hello, world'
各類佔位符數組
其中當用到%時,須要轉義一下。%%app
>>> 'growth rate: %d %%' % 7 'growth rate: 7 %'
list很像js中的數組。這裏叫列表。其實也差很少,就是一個有序的存放數據的表。dom
>>> classmates = ['Michael', 'Bob', 'Tracy'] print(classmates) //['Michael', 'Bob', 'Tracy']
用len()能夠查看list的長度(同時也能看字符的長度)學習
classmates = ['Michael', 'Bob', 'Tracy'] name = 'Michael' print(len(classmates)) //3 print(len(name)) //7
由於是有序的,list中的數據都有本身的索引。索引從0開始。超出後會報錯。
>>> classmates[0] 'Michael' >>> classmates[1] 'Bob' >>> classmates[2] 'Tracy' >>> classmates[3] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range
!!比js方便的是list能夠調用索引-1直接訪問最後一位。
>>> classmates[-1] 'Tracy' >>> classmates[-2] 'Bob' >>> classmates[-3] 'Michael' >>> classmates[-4] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range
append在list最後添加數據
>>> classmates.append('Adam') >>> classmates ['Michael', 'Bob', 'Tracy', 'Adam']
insert能夠在list指定位置插入數據
>>> classmates.insert(1, 'Jack') >>> classmates ['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
pop直接使用刪除list最後一位。帶上索引刪除指定位置。
>>> classmates.pop() 'Adam' >>> classmates ['Michael', 'Jack', 'Bob', 'Tracy'] >>> classmates.pop(1) 'Jack' >>> classmates ['Michael', 'Bob', 'Tracy']
tuple是相似list的,但是一旦定義了就不能修改。定義寫法用的是()。
>>> classmates = ('Michael', 'Bob', 'Tracy') >>> classmates ('Michael', 'Bob', 'Adam')
一旦嘗試經過classmates[1]="tom"。修改tuple,會報錯。tuple能夠保證一些不須要修改的數據被無心修改。
dict相似於js的對象。也就是key-value對的形式存數據。能夠用名字快速地找到數據內容。
寫法
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} # js的是用. python用[] >>> d['Michael'] 95
當數據多了以後list的查找速度會變慢,而dict幾乎不受影響。但是dict會佔用大量空間,是用空間來換取時間的一種方法。
若是key不存在,dict就會報錯:
>>> d['Thomas'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Thomas'
這時能夠用in或者get()來判斷該key是否存在。
# in >>> 'Thomas' in d False # get() >>> d.get('Thomas') >>> d.get('Thomas', -1) -1
用pop()能夠刪除dict中一項包括key和value
>>> d.pop('Bob') 75 >>> d {'Michael': 95, 'Tracy': 85}
set與dict類型類似,但是set只存key。能夠用add(),remove()來增減。
# 經過list來傳入 >>> s = set([1, 2, 3]) >>> s {1, 2, 3} # add() >>> s.add(4) >>> s {1, 2, 3, 4} >>> s.add(4) >>> s {1, 2, 3, 4} # remove() >>> s.remove(4) >>> s {1, 2, 3}
來到了邏輯判斷了,if。條件判斷。首先於js不一樣python的分塊不用{}而是用縮進和:(這個要注意)
age = 20 if age >= 18: print('your age is', age) print('adult') # 加入else age = 3 if age >= 18: # 符合條件走這裏 print('your age is', age) print('adult') else: # 不符合條件走這裏 print('your age is', age) print('teenager')
對於else if,python有它的專用縮寫
age = 3 if age >= 18: print('adult') elif age >= 6: print('teenager') else: print('kid')
變量判斷
if x: print('True')
只要x是非零數值、非空字符串、非空list等,就判斷爲True,不然爲False。
終於出現了第一個交互功能--input。用input()程序會讓用戶輸入文本並存放在對應位置,繼續完成代碼。
birth = int(input('birth: ')) # input()參入的字符,爲輸入時的提醒文本 # 輸入的值會被定義爲birth的值,參與if判斷。 if birth < 2000: print('00前') else: print('00後')
注意input輸入的文本類型是字符,字符不能直接用<,>對比。必需要先轉成數字。用int()能夠把字符轉成整數。
只要知足white的條件,即爲true。就會一直跑循環裏的代碼。
sum = 0 n = 99 while n > 0: sum = sum + n n = n - 2 print(sum)
在循環內部變量n不斷自減,直到變爲-1時,再也不知足while條件,循環退出。
break
break能夠提早結束循環。
n = 1 while n <= 100: if n > 10: # 當n = 11時,條件知足,執行break語句 break # break語句會結束當前循環 print(n) n = n + 1 print('END')
continue
continue是跳過某次的代碼直接進入下一次循環。
n = 0 while n < 10: n = n + 1 if n % 2 == 0: # 若是n是偶數,執行continue語句 continue # continue語句會直接繼續下一輪循環,後續的print()語句不會執行 print(n)
for in 能夠枚舉list或tuple裏的數據.
names = ['Michael', 'Bob', 'Tracy'] for name in names: print(name) #順序輸出'Michael', 'Bob', 'Tracy'
某些場景,python是有提供基本方法的,不須要循環生成。list()可讓有序數據轉換爲list。range()能夠生成一個整數序列
>>> list(range(5)) [0, 1, 2, 3, 4]
咱們能夠利用目前瞭解到的python語法作一款弱智的遊戲。猜數字
import random # 用一個dict存放須要的數據 config = {'maxNum': 100,'minNum': 0,'count':0} # 用模塊生成隨機數,模塊是python中很重要的一環 target = random.randint(config['minNum'],config['maxNum']) # 讓循環持續發生 while True: config['count'] += 1 num = int(input('請輸入 %d 至 %d 的整數:' % (config['minNum'],config['maxNum']))) if num == target: # 當猜對時break跳出循環 break elif num < target: config['minNum'] = num print('不對,猜小了') elif num > target: config['maxNum'] = num print('不對,猜大了') print('猜對了答案是 %d。一共猜了 %d 次' % (target,config['count']))