[python]一塊兒學python(1)

python

跟不少前端工做者同樣,我也經常打聽。做爲前端,在要懂js的前提下,還要能夠學什麼其餘語言來增長本身的競爭力。
我看到最多的是node,不少人說前端真正的學好node。已經能夠勝任不少工做了。假如想學後端java是需求最大的。
不過目前來講java的學習成本很高,相對python是一門很好入門的語言,最近也是很火。
因此我想用一小段時間,快速瞭解一下python。(本文用的是python3.x)前端

數據類型

先看數據類型(看咱們能夠pyhton中寫什麼。)java

  1. 整數
  2. 浮點數
  3. 字符串
  4. 布爾值
  5. 空值

乍一看基本類型和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'

各類佔位符數組

  1. %d 整數
  2. %f 浮點數
  3. %s 字符串
  4. %x 十六進制整數

其中當用到%時,須要轉義一下。%%app

>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'

list

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

list方法

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

tuple是相似list的,但是一旦定義了就不能修改。定義寫法用的是()。

>>> classmates = ('Michael', 'Bob', 'Tracy')
>>> classmates
('Michael', 'Bob', 'Adam')

一旦嘗試經過classmates[1]="tom"。修改tuple,會報錯。tuple能夠保證一些不須要修改的數據被無心修改。

dict

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

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判斷

來到了邏輯判斷了,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。用input()程序會讓用戶輸入文本並存放在對應位置,繼續完成代碼。

birth = int(input('birth: '))
# input()參入的字符,爲輸入時的提醒文本
# 輸入的值會被定義爲birth的值,參與if判斷。
if birth < 2000:
    print('00前')
else:
    print('00後')

注意input輸入的文本類型是字符,字符不能直接用<,>對比。必需要先轉成數字。用int()能夠把字符轉成整數。

循環

white

只要知足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..

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']))
相關文章
相關標籤/搜索