高考過后準備做什么,跟著我學習python,帶你火速入門!

高考于今日正式結束了,相信很多小伙伴們已經安排好了假期,是準備出去約上幾個小伙伴出去旅游?又或者是出去打個暑假工,為父母減輕壓力?再或者是在這個暑假學習一個技能,為以后的生活提前鋪墊?

學習技能,說到這就有很多的技能了。各種類型的技能,但是我相信很多人會忽視一個作用特別大的技能——python編程

這篇文章,將帶你走進python的大門,帶你了解python內每個字符的含義,入門python

讓你在大學生活中用一項技能,獲得有限擇偶權。

PS:覺得有幫助的可以幫忙一鍵三連,給個意見。如有需要交流也可以私信我喲。

注意:這篇教程是基于 Python 3 寫的。

#用井字符開頭的是單行注釋

“”"?多行字符串用三個引號

包裹,也常被用來做多

行注釋

“”"

原始數據類型和運算符

#?整數

3??#?=>?3

#?算術

1?+?1??#?=>?2

8?-?1??#?=>?7

10?*?2??#?=>?20

#?除法例外,會自動轉換成浮點數

35?/?5??#?=>?7.0

5?/?3??#?=>?1.6666666666666667

#?整數除法的結果都是向下取整

5?//?3?????#?=>?1

5.0?//?3.0?#?=>?1.0?#?浮點數也可以

-5?//?3??#?=>?-2

-5.0?//?3.0?#?=>?-2.0

#?浮點數的運算結果也是浮點數

3?*?2.0?#?=>?6.0

#?模除

7?%?3?#?=>?1

#?x的y次方

2**4?#?=>?16

#?用括號決定優先級

(1?+?3)?*?2??#?=>?8

#?布爾值

True

False

#?用not取非

not?True??#?=>?False

not?False??#?=>?True

#?邏輯運算符,注意and和or都是小寫

True?and?False?#?=>?False

False?or?True?#?=>?True

#?整數也可以當作布爾值

0?and?2?#?=>?0

-5?or?0?#?=>?-5

0?==?False?#?=>?True

2?==?True?#?=>?False

1?==?True?#?=>?True

#?用==判斷相等

1?==?1??#?=>?True

2?==?1??#?=>?False

#?用!=判斷不等

1?!=?1??#?=>?False

2?!=?1??#?=>?True

#?比較大小

1?<?10??#?=>?True

1?>?10??#?=>?False

2?<=?2??#?=>?True

2?>=?2??#?=>?True

#?大小比較可以連起來!

1?<?2?<?3??#?=>?True

2?<?3?<?2??#?=>?False

#?字符串用單引雙引都可以

“這是個字符串”

‘這也是個字符串’

#?用加號連接字符串

"Hello?"?+?“world!”??#?=>?“Hello?world!”

#?字符串可以被當作字符列表

“This?is?a?string”[0]??#?=>?‘T’

#?用.format來格式化字符串

“{}?can?be?{}”.format(“strings”,?“interpolated”)

#?可以重復參數以節省時間

“{0}?be?nimble,?{0}?be?quick,?{0}?jump?over?the?{1}”.format(“Jack”,?“candle?stick”)

#?=>?“Jack?be?nimble,?Jack?be?quick,?Jack?jump?over?the?candle?stick”

#?如果不想數參數,可以用關鍵字

“{name}?wants?to?eat?{food}”.format(name=“Bob”,?food=“lasagna”)

#?=>?“Bob?wants?to?eat?lasagna”

#?如果你的Python3程序也要在Python2.5以下環境運行,也可以用老式的格式化語法

“%s?can?be?%s?the?%s?way”?%?(“strings”,?“interpolated”,?“old”)

#?None是一個對象

None??#?=>?None

#?當與None進行比較時不要用?==,要用is。is是用來比較兩個變量是否指向同一個對象。

“etc”?is?None??#?=>?False

None?is?None??#?=>?True

#?None,0,空字符串,空列表,空字典都算是False

#?所有其他值都是True

bool(0)??#?=>?False

bool("")??#?=>?False

bool([])?#?=>?False

bool({})?#?=>?False

變量和集合

#?print是內置的打印函數

print(“I’m?Python.?Nice?to?meet?you!”)

#?在給變量賦值前不用提前聲明

#?傳統的變量命名是小寫,用下劃線分隔單詞

some_var?=?5

some_var??#?=>?5

#?訪問未賦值的變量會拋出異常

#?參考流程控制一段來學習異常處理

some_unknown_var??#?拋出NameError

#?用列表(list)儲存序列

li?=?[]

#?創建列表時也可以同時賦給元素

other_li?=?[4,?5,?6]

#?用append在列表最后追加元素

li.append(1)????#?li現在是[1]

li.append(2)????#?li現在是[1,?2]

li.append(4)????#?li現在是[1,?2,?4]

li.append(3)????#?li現在是[1,?2,?4,?3]

#?用pop從列表尾部刪除

li.pop()????????#?=>?3?且li現在是[1,?2,?4]

#?把3再放回去

li.append(3)????#?li變回[1,?2,?4,?3]

#?列表存取跟數組一樣

li[0]??#?=>?1

#?取出最后一個元素

li[-1]??#?=>?3

#?越界存取會造成IndexError

li[4]??#?拋出IndexError

#?列表有切割語法

li[1:3]??#?=>?[2,?4]

#?取尾

li[2:]??#?=>?[4,?3]

#?取頭

li[:3]??#?=>?[1,?2,?4]

#?隔一個取一個

li[::2]???#?=>[1,?4]

#?倒排列表

li[::-1]???#?=>?[3,?4,?2,?1]

#?可以用三個參數的任何組合來構建切割

#?li[始:終:步伐]

#?用del刪除任何一個元素

del?li[2]???#?li?is?now?[1,?2,?3]

#?列表可以相加

#?注意:li和other_li的值都不變

li?+?other_li???#?=>?[1,?2,?3,?4,?5,?6]

#?用extend拼接列表

li.extend(other_li)???#?li現在是[1,?2,?3,?4,?5,?6]

#?用in測試列表是否包含值

1?in?li???#?=>?True

#?用len取列表長度

len(li)???#?=>?6

#?元組是不可改變的序列

tup?=?(1,?2,?3)

tup[0]???#?=>?1

tup[0]?=?3??#?拋出TypeError

#?列表允許的操作元組大都可以

len(tup)???#?=>?3

tup?+?(4,?5,?6)???#?=>?(1,?2,?3,?4,?5,?6)

tup[:2]???#?=>?(1,?2)

2?in?tup???#?=>?True

#?可以把元組合列表解包,賦值給變量

a,?b,?c?=?(1,?2,?3)?????#?現在a是1,b是2,c是3

#?元組周圍的括號是可以省略的

d,?e,?f?=?4,?5,?6

#?交換兩個變量的值就這么簡單

e,?d?=?d,?e?????#?現在d是5,e是4

#?用字典表達映射關系

empty_dict?=?{}

#?初始化的字典

filled_dict?=?{“one”:?1,?“two”:?2,?“three”:?3}

#?用[]取值

filled_dict[“one”]???#?=>?1

#?用 keys 獲得所有的鍵。

#?因為 keys 返回一個可迭代對象,所以在這里把結果包在 list 里。我們下面會詳細介紹可迭代。

#?注意:字典鍵的順序是不定的,你得到的結果可能和以下不同。

list(filled_dict.keys())???#?=>?[“three”,?“two”,?“one”]

#?用values獲得所有的值。跟keys一樣,要用list包起來,順序也可能不同。

list(filled_dict.values())???#?=>?[3,?2,?1]

#?用in測試一個字典是否包含一個鍵

“one”?in?filled_dict???#?=>?True

1?in?filled_dict???#?=>?False

#?訪問不存在的鍵會導致KeyError

filled_dict[“four”]???#?KeyError

#?用get來避免KeyError

filled_dict.get(“one”)???#?=>?1

filled_dict.get(“four”)???#?=>?None

#?當鍵不存在的時候get方法可以返回默認值

filled_dict.get(“one”,?4)???#?=>?1

filled_dict.get(“four”,?4)???#?=>?4

#?setdefault方法只有當鍵不存在的時候插入新值

filled_dict.setdefault(“five”,?5)??#?filled_dict[“five”]設為5

filled_dict.setdefault(“five”,?6)??#?filled_dict[“five”]還是5

#?字典賦值

filled_dict.update({“four”:4})?#?=>?{“one”:?1,?“two”:?2,?“three”:?3,?“four”:?4}

filled_dict[“four”]?=?4??#?另一種賦值方法

#?用del刪除

del?filled_dict[“one”]??#?從filled_dict中把one刪除

#?用set表達集合

empty_set?=?set()

#?初始化一個集合,語法跟字典相似。

some_set?=?{1,?1,?2,?2,?3,?4}???#?some_set現在是{1,?2,?3,?4}

#?可以把集合賦值于變量

filled_set?=?some_set

#?為集合添加元素

filled_set.add(5)???#?filled_set現在是{1,?2,?3,?4,?5}

#?&?取交集

other_set?=?{3,?4,?5,?6}

filled_set?&?other_set???#?=>?{3,?4,?5}

#?|?取并集

filled_set?|?other_set???#?=>?{1,?2,?3,?4,?5,?6}

#?-?取補集

{1,?2,?3,?4}?-?{2,?3,?5}???#?=>?{1,?4}

#?in?測試集合是否包含元素

2?in?filled_set???#?=>?True

10?in?filled_set???#?=>?False

流程控制和迭代器

#?先隨便定義一個變量

some_var?=?5

#?這是個if語句。注意縮進在Python里是有意義的

#?印出"some_var比10小"

if?some_var?>?10:

print(“some_var比10大”)

elif?some_var?<?10:????#?elif句是可選的

print(“some_var比10小”)

else:??????????????????#?else也是可選的

print(“some_var就是10”)

“”"

用for循環語句遍歷列表

打印:

dog?is?a?mammal

cat?is?a?mammal

mouse?is?a?mammal

“”"

for?animal?in?[“dog”,?“cat”,?“mouse”]:

print("{}?is?a?mammal".format(animal))

“”"

"range(number)“返回數字列表從0到給的數字

打印:

0

1

2

3

“””

for?i?in?range(4):

print(i)

“”"

while循環直到條件不滿足

打印:

0

1

2

3

“”"

x?=?0

while?x?<?4:

print(x)

x?+=?1??#?x?=?x?+?1?的簡寫

#?用try/except塊處理異常狀況

try:

#?用raise拋出異常

raise?IndexError(“This?is?an?index?error”)

except?IndexError?as?e:

pass????#?pass是無操作,但是應該在這里處理錯誤

except?(TypeError,?NameError):

pass????#?可以同時處理不同類的錯誤

else:???#?else語句是可選的,必須在所有的except之后

print(“All?good!”)???#?只有當try運行完沒有錯誤的時候這句才會運行

#Python提供一個叫做可迭代(iterable)的基本抽象。一個可迭代對象是可以被當作序列

#?的對象。比如說上面range返回的對象就是可迭代的。

filled_dict?=?{“one”:?1,?“two”:?2,?“three”:?3}

our_iterable?=?filled_dict.keys()

print(our_iterable)?#?=>?dict_keys([‘one’,?‘two’,?‘three’]),是一個實現可迭代接口的對象

#?可迭代對象可以遍歷

for?i?in?our_iterable:

print(i)????#?打印?one,?two,?three

#?但是不可以隨機訪問

our_iterable[1]??#?拋出TypeError

#?可迭代對象知道怎么生成迭代器

our_iterator?=?iter(our_iterable)

#?迭代器是一個可以記住遍歷的位置的對象

#?用__next__可以取得下一個元素

our_iterator.next()??#?=>?“one”

#?再一次調取__next__時會記得位置

our_iterator.next()??#?=>?“two”

our_iterator.next()??#?=>?“three”

#?當迭代器所有元素都取出后,會拋出StopIteration

our_iterator.next()?#?拋出StopIteration

#?可以用list一次取出迭代器所有的元素

list(filled_dict.keys())??#?=>?Returns?[“one”,?“two”,?“three”]

函數

#?用def定義新函數

def?add(x,?y):

print(“x?is?{}?and?y?is?{}”.format(x,?y))

return?x?+?y????#?用return語句返回

#?調用函數

add(5,?6)???#?=>?印出"x?is?5?and?y?is?6"并且返回11

#?也可以用關鍵字參數來調用函數

add(y=6,?x=5)???#?關鍵字參數可以用任何順序

#?我們可以定義一個可變參數函數

def?varargs(*args):

return?args

varargs(1,?2,?3)???#?=>?(1,?2,?3)

#?我們也可以定義一個關鍵字可變參數函數

def?keyword_args(**kwargs):

return?kwargs

#?我們來看看結果是什么:

keyword_args(big=“foot”,?loch=“ness”)???#?=>?{“big”:?“foot”,?“loch”:?“ness”}

#?這兩種可變參數可以混著用

def?all_the_args(*args,?**kwargs):

print(args)

print(kwargs)

“”"

all_the_args(1,?2,?a=3,?b=4)?prints:

(1,?2)

{“a”:?3,?“b”:?4}

“”"

#?調用可變參數函數時可以做跟上面相反的,用*展開序列,用**展開字典。

args?=?(1,?2,?3,?4)

kwargs?=?{“a”:?3,?“b”:?4}

all_the_args(*args)???#?相當于?foo(1,?2,?3,?4)

all_the_args(**kwargs)???#?相當于?foo(a=3,?b=4)

all_the_args(*args,?**kwargs)???#?相當于?foo(1,?2,?3,?4,?a=3,?b=4)

#?函數作用域

x?=?5

def?setX(num):

#?局部作用域的x和全局域的x是不同的

x?=?num?#?=>?43

print?(x)?#?=>?43

def?setGlobalX(num):

global?x

print?(x)?#?=>?5

x?=?num?#?現在全局域的x被賦值

print?(x)?#?=>?6

setX(43)

setGlobalX(6)

#?函數在Python是一等公民

def?create_adder(x):

def?adder(y):

return?x?+?y

return?adder

add_10?=?create_adder(10)

add_10(3)???#?=>?13

#?也有匿名函數

(lambda?x:?x?>?2)(3)???#?=>?True

#?內置的高階函數

map(add_10,?[1,?2,?3])???#?=>?[11,?12,?13]

filter(lambda?x:?x?>?5,?[3,?4,?5,?6,?7])???#?=>?[6,?7]

#?用列表推導式可以簡化映射和過濾。列表推導式的返回值是另一個列表。

[add_10(i)?for?i?in?[1,?2,?3]]??#?=>?[11,?12,?13]

[x?for?x?in?[3,?4,?5,?6,?7]?if?x?>?5]???#?=>?[6,?7]

#?定義一個繼承object的類

class?Human(object):

#?類屬性,被所有此類的實例共用。

species?=?“H.?sapiens”

#?構造方法,當實例被初始化時被調用。注意名字前后的雙下劃線,這是表明這個屬

#?性或方法對Python有特殊意義,但是允許用戶自行定義。你自己取名時不應該用這

#?種格式。

definit(self,?name):

#?Assign?the?argument?to?the?instance’s?name?attribute

self.name?=?name

#?實例方法,第一個參數總是self,就是這個實例對象

def?say(self,?msg):

return?“{name}:?{message}”.format(name=self.name,?message=msg)

#?類方法,被所有此類的實例共用。第一個參數是這個類對象。

@classmethod

def?get_species(cls):

return?cls.species

#?靜態方法。調用時沒有實例或類的綁定。

@staticmethod

def?grunt():

return?“grunt

#?構造一個實例

i?=?Human(name=“Ian”)

print(i.say(“hi”))?????#?印出?“Ian:?hi”

j?=?Human(“Joel”)

print(j.say(“hello”))??#?印出?“Joel:?hello”

#?調用一個類方法

i.get_species()???#?=>?“H.?sapiens”

#?改一個共用的類屬性

Human.species?=?“H.?neanderthalensis”

i.get_species()???#?=>?“H.?neanderthalensis”

j.get_species()???#?=>?“H.?neanderthalensis”

#?調用靜態方法

Human.grunt()???#?=>?“grunt

模塊

#?用import導入模塊

import?math

print(math.sqrt(16))??#?=>?4.0

#?也可以從模塊中導入個別值

from?math?import?ceil,?floor

print(ceil(3.7))??#?=>?4.0

print(floor(3.7))???#?=>?3.0

#?可以導入一個模塊中所有值

#?警告:不建議這么做

from?math?import?*

#?如此縮寫模塊名字

import?math?as?m

math.sqrt(16)?==?m.sqrt(16)???#?=>?True

#python模塊其實就是普通的python文件。你可以自己寫,然后導入。

#?模塊的名字就是文件的名字。

#?你可以這樣列出一個模塊里所有的值

import?math

dir(math)

高級用法

#?用生成器(generators)方便地寫惰性運算

def?double_numbers(iterable):

for?i?in?iterable:

yield?i?+?i

#?生成器只有在需要時才計算下一個值。它們每一次循環只生成一個值,而不是把所有的

#?值全部算好。

#range的返回值也是一個生成器,不然一個1到9000000000的列表會花很多時間和內存

#?如果你想用一個Python的關鍵字當作變量名,可以加一個下劃線來區分。

range_?=?range(1,?900000000)

#?當找到一個?>=30?的結果就會停

#?這意味著double_numbers不會生成大于30的數。

for?i?in?double_numbers(range_):

print(i)

if?i?>=?30:

break

#?裝飾器(decorators)

#?這個例子中,beg裝飾say

#beg會先調用say。如果返回的say_please為真,beg會改變返回的字符串。

from?functools?import?wraps

def?beg(target_function):

@wraps(target_function)

def?wrapper(*args,?**kwargs):

msg,?say_please?=?target_function(*args,?**kwargs)

if?say_please:

return?“{}?{}”.format(msg,?“Please!?I?am?poor?:(”)

return?msg

return?wrapper


@beg

def?say(say_please=False):

msg?=?“Can?you?buy?me?a?beer?”

return?msg,?say_please

print(say())??#?Can?you?buy?me?a?beer?

print(say(say_please=True))??#?Can?you?buy?me?a?beer??Please!?I?am?poor?:(

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Python 是由吉多·范羅蘇姆(Guido Van Rossum)在 90 年代早期設計。 它是如今最常用的編程...
    夢想編程家小楓閱讀 304評論 0 0
  • From:https://learnxinyminutes.com/docs/files/learnpython3...
    QoioQ閱讀 338評論 0 1
  • 原文出處: Learn Python in Y Minutes 譯文出處:夏永鋒Python由Guido Va...
    春風在抱閱讀 275評論 0 0
  • 表情是什么,我認為表情就是表現出來的情緒。表情可以傳達很多信息。高興了當然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 125,987評論 2 7
  • 16宿命:用概率思維提高你的勝算 以前的我是風險厭惡者,不喜歡去冒險,但是人生放棄了冒險,也就放棄了無數的可能。 ...
    yichen大刀閱讀 6,099評論 0 4