python基礎筆記1

一、python是什麼?

Python是一種計算機程序設計語言。你可能已經據說過不少種流行的編程語言,好比很是難學的C語言,很是流行的Java語言html

二、python能用來作什麼

平常任務,好比自動備份;能夠用來作網站;雲計算最火的語言;運維人員必備語言等等等python

三、python的版本

python目前有兩個版本,一個是python2.x  一個是python3.xexpress

關於python兩個版本區別此處描寫的更加詳細編程

http://www.cnblogs.com/codingmylife/archive/2010/06/06/1752807.htmlpython3.x

四、第一個python程序

1 print('hello world!')

五、python的變量

變量定義的規則:app

    • 變量名只能是 字母、數字或下劃線的任意組合
    • 變量名的第一個字符不能是數字
    • 如下關鍵字不能聲明爲變量名 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

變量的賦值運維

name = 'ly'dom

六、python的輸入和輸出

print()在括號中加上字符串,就能夠向屏幕上輸出指定的文字。好比輸出'hello, world'編程語言

Python提供了一個input(),可讓用戶輸入字符串,並存放到一個變量裏。好比輸入用戶的名字:ide

>>> name=input('please input your name:')
please input your name:ly
>>> name
'ly'
name

 input()的輸入的類型默認都是字符串

>>> num=input(':')
:1
>>> type(num)
<class 'str'>

格式化輸出字符串可使用%格式化輸出,例如

name = input('name:')
age = int(input('age:'))
score = float(input('score:'))
info = ('''
-------------info  %s -------------
name:%s
age:%d
score:%.2f
-----------------------------------
''') % (name,name,age,score)
View Code

%s  字符串 %d 10進制整數 %f  浮點型(取兩位%.2f) 

有的時候字符串裏面的%是一個普通字符,就須要轉義使用%%來表示%

格式化輸出還可使用.format方式

 1 info1 = ('''
 2 -------------info1 {name}------------
 3 name:{name}
 4 age:{age:d}
 5 score:{score:.2f}
 6 -------------------------------------
 7 ''').format(name=name,age=age,score=score)
 8 print('format的一種輸出方式',info1)
 9 info2 = ('''
10 -------------info2 {0}-------------
11 name:{0}
12 age:{1:d}
13 score:{2:.2f}
14 -----------------------------------
15 ''').format(name,age,score)
16 print('format的另外一種輸出方式',info2)
View Code

{}默認字符串{:d}整數型{:f}浮點型(取2位{:.2f})

七、python的數據類型

可使用內部函數type()來查看數據的類型

7.1 字符串(str)

用單引號‘’或雙引號「」括起來的任意文本,字符串中包含轉義字符\,製表符\t,換行符\n

轉義字符\的使用方法,好比咱們要輸出一個\

>>> print('\\')
\

 打印D:\test的文件路徑也須要使用轉義

>>> print('D:\\test')
D:\test

 若是字符串中有許多字符都須要轉義的話,就須要加不少的\,爲了簡化python提供一種很是簡便的方式r' ',例如若是咱們要打印D:\test\test.txt時,能夠這麼寫

>>> print(r'D:\test\test.txt')
D:\test\test.txt

若是字符串中有不少換行,寫在一行使用使用\n很差閱讀,爲了簡化python提供'''...'''的格式表示多行內容

>>> print('''line1)
... line2
... line3''')
line1)
line2
line3

7.2布爾型(bool)

布爾型表示判斷只有True和Flase兩種值,布爾值可使用and、or、not計算

7.3整數型(int)

任意大小的整數,包含負整數

7.4浮點型(float)

小數

7.5列表(list)

一種有序的集合,使用[ ]定義能夠隨時添加和刪除其中的元素,好比建立0-9的整數集合

>>> num=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 >>> num
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

能夠經過索引來訪問list中的每一個元素,索引默認從0開始,好比定義一個班級的列表

 1 >>> classmates=['張三','李四','王五','趙六']
 2 >>> classmates
 3 ['張三', '李四', '王五', '趙六']
 4 >>> classmates[0]
 5 '張三'
 6 #添加一個王二麻子
 7 >>> classmates.append('王二麻子')
 8 >>> classmates
 9 ['張三', '李四', '王五', '趙六', '王二麻子']
10 #刪除王五,使用remove,默認刪除第一個
11 >>> classmates.remove('王五')
12 >>> classmates
13 ['張三', '李四', '趙六', '王二麻子']
14 #查看每一個元素對應的索引號可使用enumerate
15 >>> for obj,value in enumerate(classmates):
16 ...     print(obj,'--',value)
17 ...
18 0 -- 張三
19 1 -- 李四
20 2 -- 趙六
21 3 -- 王二麻子
22 #刪除張三,使用pop方法,默認刪除最後一個元素
23 >>> classmates.pop(0)
24 '張三'
25 >>> classmates
26 ['李四', '趙六', '王二麻子']
classmates

要把某個元素替換成別的元素,能夠直接賦值給對應的索引位置

>>> classmates
['李四', '趙六', '王二麻子']
>>> classmates[2] = '週二'
>>> classmates
['李四', '趙六', '週二']

list中全部元素也能夠是不一樣的數據類型例如:

>>> list = ['apple',1,True]
>>> list
['apple', 1, True]

 list元素也能夠是另外一個list

>>> list1 = ['red','blue',list]
>>> list1
['red', 'blue', ['apple', 1, True]]

python中列表的操做函數跟方法

len(list)    列表元素的個數

max(list)   返回列表元素的最大值

min(list)   返回列表元素的最小值

list()         修改其餘的數據類型爲list類型(不是全部數據類型均可轉換)

列表操做方法

list.append(obj)   在列表末尾添加新元素

list.count(obj)    統計某個元素在列表中出現的次數

list.extend()    追加,在列表末尾添加一個列表

list.index(obj)   從列表中找出某個元素對應的索引號

list.insert(index,obj) 將某個元素插入列表指定的索引位置

list.pop(index)         刪除列表中某個索引對應的元素,不寫默認刪除最後一位

list.remove(obj)       刪除列表中某個元素,不寫默認刪除第一位

list.reverse()            反向列表中元素

>>> a
[0, 1, 2, 4, 5, 6, 7, 8]
>>> a.reverse()
>>> a
[8, 7, 6, 5, 4, 2, 1, 0]

list.sort()     對列表中元素進行排序

>>> a
[8, 7, 6, 5, 4, 2, 1, 0]
>>> a.sort()
>>> a
[0, 1, 2, 4, 5, 6, 7, 8]

7.6元組(tuple)
另外一種有序的列表叫元組,元組跟列表很是類似,可是元組一旦初始化就不能修改,使用()定義,元組一樣能夠操做

若是元組中只有一個元素須要在元素後面添加,(逗號)

>>> b=('a')
>>> b
'a'
>>> type(b)
<class 'str'>
>>> b=('a',)
>>> type(b)
<class 'tuple'>

 7.7字典(dict)

 python內置了字典dict的支持,使用  鍵---值(key---value)的方式存儲,具備極快的查找速度

定義方法使用{}定義

>>> d = {'張三':90,'李四':58,'王五':65}
>>> d
{'張三': 90, '李四': 58, '王五': 65}
>>> d['李四']
58
>>>

 根據key值直接拿到value,把數據放入dict的方法,除了初始化時指定以外,還能夠經過key放入

>>> d['週二']=100
>>> d
{'張三': 90, '李四': 58, '王五': 65, '週二': 100}

 若是屢次對一個key放入value,後面的值會把前面的沖掉,若是key不存在,dict就會報錯

>>> d['金三胖']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: '金三胖'

 要避免key不存在的錯誤,有兩種方法,一種是in方法

>>> '金三胖' in d
False
>>> '週二' in d
True

 一種是經過dict提供的get方法,若是key不存在,能夠返回None或自定義value

>>> d.get('金三胖')
>>> d.get('金三胖',0)
0

 要刪除使用dict.pop(key)方法,對應的value也會從dict中刪除,注意dict內部存放的順序跟key放入的順序是沒有關係的

>>> d
{'張三': 90, '李四': 58, '王五': 65, '週二': 100}
>>> d.pop('王五')
65
>>> d
{'張三': 90, '李四': 58, '週二': 100}

和list相比dict有如下幾個特色
a.查找和插入的速度極快,不會隨着key的增長而變慢

b.須要佔用大量的內存,內存浪費多

而list正好相反,因此dict是一種用空間換取時間的方法,須要牢記的是dict中key必須是不可變對象,list就不能做爲key,而字符串、整數、元組均可以做爲key

7.8 set

set和dict類型,也是一組key的集合,可是不存儲value,因爲key不能重複,因此,在set中沒有重複的key

要建立一個set須要提供一個list做爲輸入集合

>>> s = set([1,2,'a','b',2])
>>> s
{'b', 1, 2, 'a'}

 注意,傳入的參數是一個list,而顯示的{  }只是告訴你這個set內部有這幾種元素,顯示的順序也不表示set是有序的,而且重複元素會自動過濾

能夠經過add(key)添加元素到set,能夠重複添加,不會有效果,經過remove(key)刪除元素

>>> s.add(3)
>>> s.add(3)
>>> s
{1, 2, 'a', 3, 'b'}
>>> s.remove('b')
>>> s
{1, 2, 'a', 3}

 set能夠看出是數學意義上無序和無重複的元素的集合,所以兩個set能夠作數學意義上的交集、並集等操做

>>> s1
{1, 2, 3}
>>> s2
{2, 3, 4}
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}

 set和dict的惟一區別僅在於沒有存儲對應的value,可是set和dict同樣,一樣不可放入可變對象

7.9 空值(None) 

空值是python中一個特殊的值,用None表示,None不能理解爲0,由於0是有意義的,而None是一個特殊的空值。

八、運算符

8.1 算數運算

+ 加法 - 減法 * 乘法 / 除(使用/除時,結果爲float類型) //地板除(結果爲整數int) % 取餘數  ** 次冪(2**2 表示2的2次冪結果4)

8.2 比較運算,輸出結果爲bool

== 等於   != 不等於(python3.0以後不能夠寫做<>) > 大於 <  小於  >=  大於等於  <=小於等於

8.3賦值運算

= 簡單的賦值運算符

+=加法賦值運算符   c+=a至關於c=c+a

-=減法賦值運算符    c-=a至關於c=c-a

*=乘法賦值運算符   c*=a至關於c=c*a

/=除法賦值運算符   c/=a至關於c=c/a

%=取餘賦值運算符  c%=a至關於c=c%a

除此以外還有**=  //=

8.4邏輯運算符

and  布爾與  二者都是True纔是True,不然爲False

or    布爾或  二者都是False纔是False,不然爲True

not  布爾非  非True就是False,非False就是True

8.5成員運算

in      若是在指定的序列找到值,則返回True,不然爲False

not in     若是在指定的序列中沒有找到值,返回True,不然爲False

8.6身份運算

is      is是判斷兩個標識符是否是引用一個對象

is not     is not 是判斷兩個標識符是否是引用不一樣對象

8.7強制類型轉換符

不一樣數據類型之間能夠進行轉換

>>> a = '1'
>>> type(a)
<class 'str'>
>>> int(a)
1
>>> b = int(a)
>>> type(b)
<class 'int'>

 

 8.8 python中不一樣對象進行比較須要使用operator模塊

須要引入 operator 模塊,適合任何對象,包含的方法有:

import operator

operator.lt(a, b)  a小於b? operator.le(a, b)  a小於等於b? operator.eq(a, b)  a等於b? operator.ne(a, b)  a不等於b? operator.ge(a, b)  a大於等於b? operator.gt(a, b)  a大於b
Python 運算符優先級
運算符 描述
lambda Lambda表達式
or 布爾「或」
and 布爾「與」
not x 布爾「非」
in,not in 成員測試
is,is not 同一性測試
<,<=,>,>=,!=,== 比較
| 按位或
^ 按位異或
& 按位與
<<,>> 移位
+,- 加法與減法
*,/,% 乘法、除法與取餘
+x,-x 正負號
~x 按位翻轉
** 指數
x.attribute 屬性參考
x[index] 下標
x[index:index] 尋址段
f(arguments...) 函數調用
(experession,...) 綁定或元組顯示
[expression,...] 列表顯示
{key:datum,...} 字典顯示
'expression,...' 字符串轉換

 九、判斷語句和循環語句

python的語法比較簡單,採用縮進方式;已#開頭表示註釋,批量註釋使用'''。。。''',其餘每一行都是一個語句,當語句已冒號:結尾時,縮進的語句視爲代碼塊。按照約定俗成,縮進應始終堅持使用4個空格(不要tab鍵和空格混用,python是區分大小寫的)。

9.1判斷語句

簡單的if判斷語句爲

if   條件:#條件爲True

     執行結果

else:  #不然

     執行結果

if中還可使用elif作更細緻的判斷,elif 是else if的縮寫,if語句是從上往下判斷,若是某個判斷上是True,就會執行相應的結果,執行完畢後會忽略掉接下來的elif和else

9.2循環語句for

for...in....語句能夠循環遍歷list或tuple,又稱做迭代,例:

names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)
#執行這段代碼,會依次打印names的每個元素:
Michael
Bob
Tracy

若是要計算從1到100的數之和,咱們可使用for循環實現

sum=0
#range()函數能夠生成一個整數序列,range(1,101)表明從1開始取到100,至關於
#[1,2,3,4,5.....100]的一個列表
for i in range(1,101):
    sum = sum + i
print(sum)

9.3循環語句while

while循環是,只要條件知足,就不斷循環,條件不知足時退出。例:

打印1到10的整數

>>> i=0
>>> while i <10:
...     i = i + 1
...     print(i)
...
1
2
3
4
5
6
7
8
9
10

在循環中,可使用break和continue,須要配合if語句來使用,break是退出循環,continue是跳過當前循環

一個經典的猜數字的遊戲

 1 #!/usr/bin/env python3
 2 #-*- coding: utf-8 -*-
 3 #經典猜數字遊戲
 4 import random
 5 #取一個隨機數(0-9)
 6 num = random.randint(0,9)
 7 #用戶輸入一個數字
 8 #給3次機會判斷輸入的數字跟獲取的隨機數是否相等,並給出提示,超過次數提示機會已用盡
 9 for i in range(3):
10     #用戶輸入一個數字
11     num_of_user = int(input('請輸入一個0-9的數字:'))
12     #首先判斷輸入的數值是否0-9之間
13     while True:
14         if num_of_user in range(10):
15             break
16         else:
17             print('輸入的數值超過0-9區間範圍!,請從新輸入')
18             num_of_user = int(input(''))
19     if num_of_user == num:
20         print('恭喜你猜對了!')
21         break
22     elif num_of_user > num:
23         print('你猜想的數字過大!')
24     else:
25         print('你猜想的數字小了!')
26     
27 else:
28     print('你的機會已用盡,對不起,你輸了!')    
View Code

一個交互式的猜數字遊戲

#!/usr/bin/env python3
#-*- coding: utf-8 -*-
#經典猜數字遊戲
import random
#取一個隨機數(0-9)
num = random.randint(0,9)
#建立一個計數器
count = 0
while count<3:
    #用戶輸入一個數字
    num_of_user = int(input('請輸入一個0-9的數字:'))
    #計數器循環+1
    count += 1
    #首先判斷輸入的數值是否0-9之間
    while True:
        if num_of_user in range(10):
            break
        else:
            print('輸入的數值超過0-9區間範圍!,請從新輸入')
            num_of_user = int(input(''))
    if num_of_user == num:
        print('恭喜你猜對了!')
        break
    elif num_of_user > num:
        print('你猜想的數字過大!')
    else:
        print('你猜想的數字小了!!')
    if count == 3:
        print('三次機會已用盡,請問你還想繼續玩嗎Y/N?')
        play_flag = input('')
        if play_flag == 'Y':
            count = 0
        elif play_flag == 'N':
            print('遊戲結束。')
        else:
            print('輸入的命令有誤,遊戲結束。')
View Code
相關文章
相關標籤/搜索