python基礎(chǔ)

一沮脖、輸入與輸出

1金矛、print打印

(1)打印字符串:%s

>>> name = "yisan"
>>> print ("hello %s,Nice to meet you!!"  %name)
hello yisan,Nice to meet you!!

(2)打印數(shù)字:%d

>>> age = 26
>>> print ("You are %d"  %age)
You are 26

(3)若不知道打印內(nèi)容的類型:%r

>>> n = 100
>>> print ("You print is %r"  %n)
You print is 100
>>> name = "yisan"
>>> age = 26
>>> print ("student info : %s %d"  %(name,age))
student info : yisan 26

2、input輸入

n = input("Enter any content:")
print ("your input is %r"  %n)

按F5快捷鍵運行程序勺届,當運行到input()時驶俊,需要用戶輸入一些信息,用print打印出來(python2中使用:raw_input()代替input()):

Enter any content:tom
your input is 'tom'

3免姿、引號與注釋

(1)引號:
python中饼酿,不區(qū)分單引號(' ')與雙引號(" "),都用來表示一個字符串:

>>> print("hello")
hello
>>> print('world')
world

單引號與雙引號可以互相嵌套使用胚膊,但不能交叉使用:

>>> print("你說:'早上好'")
你說:'早上好'
>>> 
>>> print("你向我微笑'向我問好"故俐。')
      
SyntaxError: invalid character in identifier

(2)注釋:

>>> #單行注釋
>>> print("hello world")#打印hello world
hello world
多行注釋:用"""     """
"""
你好,
早上好
中午好
下午好
晚上好
"""

二紊婉、分支與循環(huán)

1药版、if 語句:

>>> a = 2
>>> b = 3
>>> if a > b:
    print("a max")
else:
    print("b max")

    
b max

python中的if語句通過“==”運算符判斷相等,通過“!=”判斷不相等:

>>> student = "yisan"
>>> if student == "yisan":
    print("yisan,You are on duty today.")
else:
    print("Please call yisan to duty.")

    
yisan,You are on duty today.

python中喻犁,用“in”和“not in”表示包含關(guān)系:

>>> hi = "Hello,World!!!"
>>> if "Hello" in hi:
    print("Contain")
else:
    print("Not Contain")

    
Contain

if語句可以進行布爾類型的判斷:

>>> a = True
>>> if a:
    print("a is True")
else:
    print("a is not True")

    
a is True

demo:

results = 75
if results >=90:
    print("優(yōu)秀")
elif results>=70:
    print("良好")
elif results>=60:
    print('及格')
else:
    ptiny('不及格')

2刚陡、for語句

>>> for i in "Hello,World!!!":
    print(i)

    
H
e
l
l
o
,
W
o
r
l
d
!
!
!
>>> fruits = ['banana','apple','mango']
>>> for fruit in fruits:
    print(fruit)

    
banana
apple
mango

range()函數(shù)默認從0開始循環(huán):

>>> for i in range(5):
    print(i)

    
0
1
2
3
4

range()函數(shù)也可以設(shè)置起始位置和步長,如打印1到10之間的奇數(shù):

>>> for i in range(1,10,2):
    print(i)

    
1
3
5
7
9

三株汉、數(shù)組與字典

1筐乳、數(shù)組

數(shù)組用方括號([ ])表示,里面的每一項用逗號(乔妈,)隔開

>>> lists = [1,2,3,'a',4]
>>> lists
[1, 2, 3, 'a', 4]
>>> lists[0]
1
>>> lists[3]
'a'
>>> lists[4]
4
>>> lists[4]='b'
>>> lists[4]
'b'
>>> lists.append('c')
>>> lists
[1, 2, 3, 'a', 'b', 'c']

2蝙云、字典

字典用花括號({ })表示,里面的項成對出現(xiàn)路召,一個key對應(yīng)一個value勃刨;key與value之間用(:)分隔;不同的項之間用逗號(,)分隔

>>> dicts = {"username":"yisan",'password':123456}
>>> dicts.keys()
dict_keys(['username', 'password'])
>>> dicts.values()
dict_values(['yisan', 123456])
>>> dicts.items()
dict_items([('username', 'yisan'), ('password', 123456)])
>>> for k,v in dicts.items():
    print("dicts keys is %r"  %k)
    print("dicts values is %r"  %v)

    
dicts keys is 'username'
dicts values is 'yisan'
dicts keys is 'password'
dicts values is 123456

注意:python字典中股淡,key必須獨一無二身隐,value可以相同
keys()函數(shù)返回字典key的列表
values()函數(shù)返回字典中value的列表
items()函數(shù)將所有的字典項以列表的方式返回,這些列表中的每一項都包含key和value唯灵,但是項在返回時并不會按照他們在字典中的存放順序贾铝。如果想按照存放的順序輸出,可通過下面的方式:

#通過zip方法合并兩個List為Dictionary
#遍歷會按原先的順序
keys = ["b","a","c","e","d"]
values = ["2","1","3","5","4"]
for key,value in zip(keys,values):
    print(key,value)

輸出結(jié)果:
=======RESTART: C:/Users/川/Desktop/test.py ========
b 2
a 1
c 3
e 5
d 4

四、函數(shù)垢揩、類和方法

1玖绿、函數(shù)

在python中,通過def關(guān)鍵字來定義函數(shù):

>>> def add(a,b):
    print(a+b)

>>> add(3,5)
8
>>> def add(a,b):
    return a+b

>>> add(2,5)
7
>>> def add(a=1,b=2):
    return a+b

>>> add()
3
>>> add(3,5)
8

2叁巨、類和方法

python中斑匪,用class關(guān)鍵字來創(chuàng)建類

class A(object):   #python3中object可以不用聲明
    def add(self,a,b):
        return a+b
count = A()
print(count.add(3,5))

輸出結(jié)果:
============ RESTART: C:/Users/川/Desktop/test.py ============
8

上面創(chuàng)建了一個A類,在類下面創(chuàng)建了一個add()方法锋勺,方法的創(chuàng)建使用def關(guān)鍵字蚀瘸,方法的第一個參數(shù)必須是存在的,一般習慣命名為“self”庶橱,但是調(diào)用這個方法時贮勃,不需要為這個參數(shù)傳值。

一般在創(chuàng)建類時會首先聲明初始化方法init():

class A(object):
    def __init__(self,a,b):
        self.a = int(a)
        self.b = int(b)
    def add(self):
        return self.a+self.b
count = A('4',5)
print(count.add())

輸出結(jié)果:
============ RESTART: C:/Users/川/Desktop/test.py =============
9

當調(diào)用A類時悬包,首先執(zhí)行init()方法進行初始化,將輸入的參數(shù)類型轉(zhuǎn)化為int類型馍乙,用來保證程序的容錯性布近。add()方法可以直接拿初始化方法init()的self.a和self.b兩個數(shù)進行計算

2、繼承

class A():
    def add(self,a,b):
        return a+b

class B(A):
    def sub(self,a,b):
        return a-b
print(B().add(4,5))
print(B().sub(5,4))

輸出結(jié)果:
============RESTART: C:/Users/川/Desktop/test.py =============
9
1

B類繼承了A類丝格,所以B類 擁有了add()方法撑瞧,從而B類可以直接調(diào)用add()方法

五、模塊

1显蝌、引用模塊

在python中预伺,通過import...或from...import...的方式引用模塊,例如:

import time
print(time.ctime())

輸出結(jié)果:
===========RESTART: C:\Users\川\Desktop\test.py =============
Sat Jun 24 21:48:34 2017

或:

from time import ctime
print(ctime())

輸出結(jié)果:
============RESTART: C:\Users\川\Desktop\test.py =============
Sat Jun 24 21:50:45 2017

又如:

from time import *
print(ctime())
print("休眠兩秒")
sleep(2)
print(ctime())

輸出結(jié)果:
============RESTART: C:\Users\川\Desktop\test.py ===========
Sat Jun 24 21:53:43 2017
休眠兩秒
Sat Jun 24 21:53:45 2017

星號“*”表示模塊下的所有方法

2曼尊、模塊調(diào)用

python中酬诀,既可以調(diào)用系統(tǒng)模塊,也可以調(diào)用自己創(chuàng)建的模塊:
創(chuàng)建一個目錄project骆撇,并在目錄下創(chuàng)建兩個文件:
project/
|----pub.py
|__count.py

在pub.py文件中創(chuàng)建add函數(shù):

pub.py:

def add(a,b):
    return a+b

在count.py中調(diào)用pub.py文件中的函數(shù)add():

count.py:

from pub import add
print(add(4,5))

輸出結(jié)果:
=============RESTART: D:\project\count.py =================
9

以上就實現(xiàn)了跨文件的函數(shù)調(diào)用瞒御。

3、跨目錄模塊調(diào)用(1)

如果調(diào)用文件與被調(diào)用文件在一個目錄下面神郊,則可以非常方便的調(diào)用。如果被調(diào)用的文件與調(diào)用文件不在同一個目錄下呢?假設(shè)文件目錄結(jié)構(gòu)如下:
project/
|-----model/----pub.py
|
|_____count.py

count.py

from model.pub import add
print(add(4,5))

輸出結(jié)果:
==============RESTART: D:\project\count.py =================
9

4兜辞、跨目錄調(diào)用(2)

當項目變得復(fù)雜之后姨夹,需要涉及多個文件目錄之間的調(diào)用,結(jié)構(gòu)如下:

圖片.png

count.py

class A():
    def add(self,a,b):
        return a+b

new_count.py

from count import A
class B(A):
    def sub(self,a,b):
        return a-b
result = B().add(2,5)
print(result)

輸出結(jié)果:
============ RESTART: D:\project\model\new_count.py ============
7

test.py

from model import new_count
test = new_count.B()
test.add(2,5)

輸出結(jié)果:
Traceback (most recent call last):
  File "D:\project\test.py", line 1, in <module>
    from model import new_count
  File "D:\project\model\new_count.py", line 1, in <module>
    from count import A
ImportError: No module named 'count'

執(zhí)行test.py時夕晓,會報錯宛乃,提示在new_count.py中找不到“count”模塊,是因為:
站在new_count.py的位置,執(zhí)行“from count import A”時烤惊,可以找到“count”文件乔煞,但是站在test.py的位置執(zhí)行“from count import A”時,就找不到“count”文件了柒室。
修改test.py文件如下:

import sys
sys.path.append("./model")  #將model目錄添加到系統(tǒng)變量path下
from model import new_count
test = new_count.B()
test.add(2,5)

輸出結(jié)果:
================RESTART: D:\project\test.py ==================
7

六渡贾、異常

1、認識異常

如下異常情況:

>>> open("abc.txt",'r')
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    open("abc.txt",'r')
FileNotFoundError: [Errno 2] No such file or directory: 'abc.txt'

提示:No such file or directory: 'abc.txt'(沒有abc.txt這樣的文件或目錄)雄右,可以用python提供的try...except...語句來 接受并處理這個異常:

>>> try:
    open("abc.txt",'r')
    except FileNotFoundError:     
    print("異常了空骚!")

輸出結(jié)果:   
異常了!

又如:

try:
    print(aa)
except NameError:
    print("這是一個name異常擂仍!")

輸出結(jié)果:
=============RESTART: C:\Users\川\Desktop\test.py =============
這是一個name異常囤屹!

在python中,所有的異常類型都繼承Exception逢渔,所以可以使用它來接受所有類型的異常:

try:
    open("abc.txt",'r')
except Exception:
    print("異常了@呒帷!")

輸出結(jié)果:
===========RESTART: C:\Users\川\Desktop\test.py ==============
異常了K嗬智厌!

從python2.5版本之后,所有異常類型都有了新的基類BaseException盲赊。Exception同樣也繼承自BaseException铣鹏,所以我們也可以使用BaseException來接收所有類型的異常:

try:
    open("abc.txt",'r')
    print(123)
except BaseException:
    print("異常了!哀蘑!!")

輸出結(jié)果:
============ RESTART: C:\Users\川\Desktop\test.py =============
異常了3闲丁!!

對于上面的例子绘迁,打印異常時合溺,我們并不知道到底哪一行代碼起了異常,可以通過下面的方法讓python直接告訴我們異常的原因:

try:
    open("abc.txt",'r')
    print(123)
except BaseException as msg:
    print(msg)

輸出結(jié)果:
=========== RESTART: C:\Users\川\Desktop\test.py ==============
[Errno 2] No such file or directory: 'abc.txt'

我們在BaseException后面定義了msg變量來接收異常信息缀台,并通過print將其打印出來辫愉。此處寫法與python2有所不同,在python2中用逗號“将硝,”代替“as”
python中常見的異常如下表所示:

| 異常 | 描述 |
|----------------------|------------------------------------------------------------- :|
|BaseException |新的所有異常類型的基類 |
|Exception |所有異常類型的基類恭朗,但繼承BaseException類 |
|AssertionError |assert語句失敗 |
|FileNotFoundError|試圖打開一個不存在的文件或目錄 |
|AttributeError |試圖訪問的對象沒有屬性 |
|OSError |當系統(tǒng)函數(shù)返回一個系統(tǒng)相關(guān)的錯誤,包括I/O故障依疼,如找不到文件或磁盤已滿時痰腮,引發(fā)此異常 |
|NameError |使用一個還未賦值對象的變量 |
|IndexError |當一個序列超出了范圍 |
|SyntaxError |當解析器遇到一個語法錯誤時引發(fā) |
|KeyboardInterrupt|Ctrl+C被按下,程序被強行終止 |
|TypeError |傳入的對象類型與要求不符 |

2律罢、更多異常用法

下面來學習異常的更多用法:try....except與else配合使用:

try:
    aa = "異常測試"
    print(aa)
except BaseException as msg:
    print(msg)
else:
    print("沒有異常膀值!")

輸出結(jié)果:
============RESTART: C:\Users\川\Desktop\test.py ==============
異常測試
沒有異常棍丐!

else語句只有在沒有異常的情況下才會被執(zhí)行,但是有些情況下沧踏,無論是否出現(xiàn)異常歌逢,操作都希望被執(zhí)行,如文件的關(guān)閉翘狱、鎖的釋放秘案、把數(shù)據(jù)庫連接返還給連接池等操作 ,可以通過使用try...except...finally...語句來實現(xiàn)這樣的需求:

try:
    print(aa)
except Exception as e:
    print(e)
finally:
    print("不管是否異常潦匈,我都會被執(zhí)行阱高。")

輸出結(jié)果:
============ RESTART: C:\Users\川\Desktop\test.py =============
name 'aa' is not defined
不管是否異常,我都會被執(zhí)行茬缩。

又如:

try:
    aa = "異常測試"
    print(aa)
except Exception as e:
    print(e)
finally:
    print("不管是否異常赤惊,我都會被執(zhí)行。")

輸出結(jié)果:
=============RESTART: C:\Users\川\Desktop\test.py ==============
異常測試
不管是否異常凰锡,我都會被執(zhí)行未舟。

3、拋出異常

print()方法只能打印錯誤信息掂为,python中提供了raise方法來拋出一個異常信息:

from random import randint
#生成一個1到9之間的隨機整數(shù)
number = randint(1,9)
if number %2 ==0:
    raise NameError("%d is even" %number)
else:
    raise NameError("%d is odd" %number)

輸出結(jié)果:
============= RESTART: C:\Users\川\Desktop\test.py ============
Traceback (most recent call last):
  File "C:\Users\川\Desktop\test.py", line 5, in <module>
    raise NameError("%d is even" %number)
NameError: 6 is even

通過randinnt()方法隨機生成1到9之間的整數(shù)裕膀,然后判斷這個數(shù)字時奇數(shù)還是偶數(shù),最后通過raise拋出NameError異常菩掏。(注:判斷奇偶數(shù)與NameError之間沒有任何關(guān)系魂角,這里只是演示如何通過raise拋出各種類型的異常)

續(xù):

1昵济、全局變量global的用法

python 中使用 global 來設(shè)置全局變量智绸,如下:

global a
a=1
def change():
  print(a)

也就是說,聲明一個全局變量访忿,首先要在方法外的地方聲明一個變量瞧栗,然后在方法內(nèi)使用它的時候,先要對這個變量聲明下 global , 然后再進行修改海铆,否則會人會你聲明的是一個方法內(nèi)的局部變量迹恐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市卧斟,隨后出現(xiàn)的幾起案子殴边,更是在濱河造成了極大的恐慌,老刑警劉巖珍语,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锤岸,死亡現(xiàn)場離奇詭異,居然都是意外死亡板乙,警方通過查閱死者的電腦和手機是偷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蛋铆,你說我怎么就攤上這事馋评。” “怎么了刺啦?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵留特,是天一觀的道長。 經(jīng)常有香客問我洪燥,道長磕秤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任捧韵,我火速辦了婚禮市咆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘再来。我一直安慰自己蒙兰,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布芒篷。 她就那樣靜靜地躺著搜变,像睡著了一般。 火紅的嫁衣襯著肌膚如雪针炉。 梳的紋絲不亂的頭發(fā)上挠他,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音篡帕,去河邊找鬼殖侵。 笑死,一個胖子當著我的面吹牛镰烧,可吹牛的內(nèi)容都是我干的拢军。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼怔鳖,長吁一口氣:“原來是場噩夢啊……” “哼茉唉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起结执,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤度陆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后献幔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體懂傀,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年斜姥,在試婚紗的時候發(fā)現(xiàn)自己被綠了鸿竖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沧竟。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缚忧,靈堂內(nèi)的尸體忽然破棺而出悟泵,到底是詐尸還是另有隱情,我是刑警寧澤闪水,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布糕非,位于F島的核電站,受9級特大地震影響球榆,放射性物質(zhì)發(fā)生泄漏朽肥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一持钉、第九天 我趴在偏房一處隱蔽的房頂上張望衡招。 院中可真熱鬧,春花似錦每强、人聲如沸始腾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浪箭。三九已至,卻和暖如春辨绊,著一層夾襖步出監(jiān)牢的瞬間奶栖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工门坷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宣鄙,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓拜鹤,卻偏偏與公主長得像框冀,于是被迫代替她去往敵國和親流椒。 傳聞我的和親對象是個殘疾皇子敏簿,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 本節(jié)內(nèi)容 Python介紹 發(fā)展史 Python 2 or 3? 安裝 Hello World程序 變量 用戶輸入...
    小小不懂11閱讀 3,421評論 2 30
  • 本教程基于Python 3,參考 A Byte of Python v1.92(for Python 3.0) 以...
    yuhuan121閱讀 3,059評論 1 6
  • Python 基礎(chǔ)教程 實例(Python 2.0+) 實例(Python 3.0+) Python 簡介 Pyt...
    縱我不往矣閱讀 64,732評論 0 23
  • @貳拾貳畫生 感謝簡明Python教程 輸入輸出 輸入:raw_input string = raw_input(...
    貳拾貳畫生閱讀 2,632評論 4 21
  • 冬悄悄走進了南國宣虾, 四季不分的廣東惯裕, 莫名地寒意侵襲。 昨日還是夏裙飛揚绣硝, 今日已是棉衣果腹蜻势! 這就是南國的冬。 ...
    木棉清雨閱讀 145評論 0 0