Python學習 - 概覽

最近空了些,學習一些有意思的東東。主要是看網上的教材,這篇也是邊看編寫的。python

Python教程objective-c

輸入和輸出

輸入:raw_input(),輸入形式爲字符串格式瀏覽器

>>> name = raw_input('input sth:')
input sth:Michael
>>>name
'Michael'
>>>birth = int(raw_input('birth: '))
birth: 1485
>>> birth
1485

這樣就把輸入的字符串轉換爲整型了。服務器

輸出:printapp

print 'The quick brown fox', 'jumps over', 'the lazy dog'
>>> The quick brown fox jumps over the lazy dog

數據類型和變量

Python能夠沒有大括號{}和分號,用縮進替代{},程序區分大小寫。學習

好比:ui

name = raw_input('enter a number:')
if name >= 0:
    print name 
elif name < 0:
    print -name
else:
    print 'not a number'

包括了整數(ox表示十六進制),浮點數(1.23e9=1.23 x 10的9次方),字符串(\爲轉義字符),布爾值(True,False,能夠用and,or,not運算),空值(None)編碼

數據類型包括變量和常量。常量一般用大寫字母表示(相似C++的define)。spa

Python的變量賦值相似指針指針

a = 'ABC'
b = a
a = 'XYZ'
print b

最後結果是XYZ

字符串和編碼

計算機能處理的是二進制文件,就須要把字符串轉化爲二進制數字進行保存。最先時採用的是ASCII編碼方式,用一個字節(8位)把字母編碼到計算機裏,好比A對應數字65z對應122。其餘語言也須要進行相應的編碼,好比GB2312編碼中文(兩個字節)。在不一樣語言採用不一樣編碼保存時,讀取字符串就成了問題。

所以有了Unicode,把全部語言用一種方式編碼。但有時Unicode佔用內存較浪費,好比A只須要一個字節的內存,事實上多過一個字節,就又有了UTF-8編碼,智能化字符串的編碼方式,節省內存。

Unicode轉換爲UTF-8保存到文件::

瀏覽網頁的時候,服務器會把動態生成的Unicode內容轉換爲UTF-8再傳輸到瀏覽器::

文件保存的是UTF-8的編碼方式,打開時變爲Unicode編碼方式。

Python的出現比Unicode早,普通的字符串用ASCII編碼

>>> ord('A')
65
>>> chr(65)
'A'

後來增長了對Unicode的支持

>>> print u'中文'
中文
>>> u'中'
u'\u4e2d'

Unicode編碼轉換未utf-8編碼

>>> u'ABC'.encode('utf-8')
'ABC'
>>> u'中文'.encode('utf-8')
'\xe4\xb8\xad\xe6\x96\x87'

utf-8轉換爲unicode

>>> 'abc'.decode('utf-8')
u'abc'
>>> '\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
u'\u4e2d\u6587'
>>> print '\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
中文

在代碼中包含中文時,就須要用UTF-8編碼讀取,在文件頭加一行

# -*- coding: utf-8 -*-

Python也可使用格式化輸出。

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'

使用list和tuple

list相似objective-c下的NSMutableArray,

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']

可使用len(classmates)計算list元素個數,classmates[-1]獲取list最後一個
元素。

在list最後增長一個元素

>>> classmates.append('Adam')
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']

在某個index插入一個元素

>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']

刪除list的最後一個元素classmates.pop(),刪除某個index的元素classmates.pop(i)

tuple是另外一種有序元祖,與list相似,可是tuple一旦初始化後就不能修改了。

>>> t = (1, 2)
>>> t
(1, 2)

若是隻定義一個元素,採用t = (1),則t不是一個tuple,而是一個整形數字,由於()也能夠認爲是數學公式中的小括號。能夠經過加上,來區分tuple和單個數字t = (1, ),python在顯示只有一個元組的tuple時,也會加上,

tuple也能夠是可變的,好比:

>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])

tuple有一個元素是list,而list是可變的。這段代碼的兩幅圖:

條件判斷

兩段代碼就能夠大概知道Python下的if else了。

Python省去了{},使用縮進代替。

age = 3
if age >= 18:
    print 'your age is', age
    print 'adult'
else:
    print 'your age is', age
    print 'teenager'
age = 20
if age >= 6:
    print 'teenager'
elif age >= 18:
    print 'adult'
else:
    print 'kid'
#若是隻要x是非零數值、非空字符串、非空list等,就判斷爲True,不然爲False
if x:
    print 'True';

Python下的for循環

names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print name
sum = 0
for x in range(101):
    sum = sum + x
print sum

range(101) = [0,1,2,3....100]

還有一種是while循環

sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 1
print sum

使用dict和set

dict是一種key-value數據存儲格式。

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95

判斷某dict中是否存在某個鍵值。

>>> d.get('Thomas')
>>> d.get('Thomas', -1)//-1爲自定義返回值
-1
>>> 'Thomas' in d
False

pop(key)刪除dic中的某個特定鍵值對,好比d.pop('Bob')

string對象在Python中是不可變的。

>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b
'Abc'
>>> a
'abc'

a.replace('a','A'),返回一個新的字符串Abc,原來的a並無改變。

相關文章
相關標籤/搜索