1. 程式人生 > >python入門基礎教程(一)

python入門基礎教程(一)

1.如何在終端視窗列印訊息?

print("Hello World");

2.如何使用變數儲存資訊,並列印該變數?

message = "Hello World";#變數定義無需var,int等操作符
print(message);

3.如何在一個字串變數內填寫小字串?

message = "I love study 'python' very much"+'.';
print(message);#I love study 'python' very much.

4.如何將英文單詞的首字母大寫?

name = "jack smith";
print(name.title());#Jack Smith

5.如何將所有的字串改成大寫或者小寫?

name = "Lucy gray";
print(name.upper());#LUCY GRAY
print(name.lower());#lucy gray

6.如何拼接字串?

str1 = "hello";
str2 = "python";
print(str1+' '+str2);#hello python
print((str1+' '+str2).title());#Hello Python

7.如何讓字串縮排(使用製表符)?

print("python");  #python
print("\tpython");#    python(空白佔4個字元)

8.如何讓字串換行?

str1 = " I am an Apple,";
str2 = " I am an Orange,";
str3 = " I am a  Banana.";
print(str1+str2+str3);
#I am an Apple, I am an Orange, I am a  Banana.

print(str1+'\n'+str2+'\n'+str3);
# I am an Apple,
# I am an Orange,
# I am a  Banana.

9.如何刪除字串末尾的空白,頭部的空白以及頭部和末尾的空白?

str = " abc "
;#空代表此處有一個空格 print(str);#空abc空 print(str.rstrip());#空abc print(str.lstrip());#abc空 print(str.strip()); #abc

10.如何在python中進行四則運算?

print(2+3);#5
print(3-2);#1
print(3/2);#python2版本:1,python3版本:1.5
print(3*2);#6
print(3.0/2);#1.5
print(0.2+0.1);#0.3或者0.300000000004 計算機內部浮點數處理原因

11.如何將整數轉化為字串型別?

age = 11;
print('I am'+age+'years old');#error 不能將整數與字串進行運算
print('I am'+' '+str(age)+' '+'years old');#I am 11 years old

12.如何在python中進行註釋?

在python中,註釋使用#,井號後面的內容會被python直譯器忽略。

13.如何訪問列表元素中的第二個元素?

arr = ['apple','banana','orange'];
print(arr[1]);#banana 陣列索引從0開始,訪問第i個元素則索引為i-1 

14.如何快速訪問列表最後一個元素,倒數第3個元素?

arr = [1,2,3,4,5,6,7,8,9];
print(arr[-1]);#9 python中可以使用負值索引表示從列表末尾開始訪問
print(arr[-3]);#7 運用這種特效能夠快速的獲取需要使用的值

15.如何修改,新增,刪除列表中的元素?

arr = ['apple','banana','orange'];
arr[0]='papaya';
print(arr);#['papaya', 'banana', 'orange']
#直接利用索引對陣列元素進行賦值修改,注意最後一個元素的下標應為-1或者len(arr) - 1

arr.append('watermelon');
print(arr);#['papaya', 'banana', 'orange', 'watermelon']
#append()方法用於直接在陣列的末尾新增一個元素,同於js的push()方法

arr.insert(1,'pitch');
print(arr);
#['papaya', 'pitch', 'banana', 'orange', 'watermelon']
#insert(index,element);insert()方法接收兩個引數,第一個為需要在陣列中哪個位置(索引從0開始)插入值,第二個引數為需要插入的值。

del arr[0];
print(arr);
#['pitch', 'banana', 'orange', 'watermelon']
#del語句,注意此處語法不是方法,所以arr.del()這個語法是錯誤的。使用del語句刪除陣列中的元素需要傳遞元素的索引,也就是說你必須知道你要刪除的元素是在陣列中的哪個位置。

delElement = arr.pop();
print(arr);
#['pitch', 'banana', 'orange']
print(delElement); #watermelon
#使用pop(index)方法,可以接收一個刪除元素的索引引數,在不填寫引數的情況下,就是append()方法的相反操作,可以刪除陣列中的最後一個元素並返回該元素,該方法與del語句相比最大的不同就是pop()方法會返回被刪除的元素而del語句則直接刪除。

#當接收一個引數的情況下可以刪除陣列中任意位置的元素。
arr.pop(0);
print(arr);#['banana', 'orange']

arr.remove('banana');
print(arr);#['orange']
#使用remove(elementValue)方法可以在不知道元素在陣列中的索引,但是知道元素的值的情況下從陣列中刪除該元素。

arr2 = [1,2,3,4,3];
arr2.remove(3);
print(arr2);#[1,2,4,3]
#注意,remove()方法只會刪除該元素在陣列中第一次出現的位置的值,如果需要刪除陣列中所有該元素的值,需要使用遍歷操作。

16.如何對列表進行排序?

arr = ['bb','aa','dd','cc','ee'];
arr.sort();
print(arr);#['aa', 'bb', 'cc', 'dd', 'ee']
#使用sort()方法可以快速的對陣列進行排序,sort()方法會對列表進行永久性的排序操作,如果想讓陣列進行反向排序,則對sort()傳遞一個引數 reverse = True;
arr.sort(reverse = True);
print(arr);#['ee', 'dd', 'cc', 'bb', 'aa']

arr2 = [1,2,4,3,6,5];
print(sorted(arr2));#[1, 2, 3, 4, 5, 6]
print(arr2);#[1, 2, 4, 3, 6, 5]
#sorted()方法可以對陣列進行臨時排序,不會改變原有的陣列元素順序。

arr3 = [1,3,2,7,4,5];
arr3.reverse();
print(arr3);#[5, 4, 7, 2, 3, 1]
arr3.reverse();
print(arr3);#[1, 3, 2, 7, 4, 5]
#使用reverse()方法可以反轉陣列元素的排列順序,再次使用reverse()方法會再次反轉陣列元素的排列順序。

17.如何獲取字串或者陣列的長度?

arr = [1,2,3,4,5];
str = "123456 ";
print(len(arr));#5
print(len(str));#7
#使用len(element)方法可以快速的取得元素的長度

18.如何遍歷陣列?

arr = [1,2,3,4,5];
for item in arr:
    print(item);
# 1 2 3 4 5 此處列印結果會換行
#迴圈時如何進行的,for item in arr:先獲取arr中第0個元素,將該元素的值賦值給item,然後列印item,由於列表中還有元素,獲取arr中第1個元素,將該元素賦值給item,列印item,直到陣列中沒有元素跳出迴圈。
#for迴圈語法,注意迴圈控制語句後面跟:(半形冒號),迴圈體需要進行縮排操作,如果沒有縮排操作將會只執行一次,甚至會報錯。

arr2 = [1,2,3,4,5];
for item in arr2:
print(item);# expected an indented block 需要一段縮排的程式碼塊

arr3 = [1,2,3,4,5];
for item in arr3:
    print(item);
print('I only print once');
#1 2 3 4 5 I only print once'
#如果需要執行多條迴圈體語句,注意一定要縮排程式碼。

arr4 = [1,2,3];
for item in arr4:
    print(item);
    print('I print the '+str(item)+' times');
# 1 I print the 1 times
# 2 I print the 2 times
# 3 I print the 3 times
#注意上面程式碼的item需要加上型別轉換,否則會報錯。

19.如何建立數字列表?

numberArr = list(range(1,5));
print(numberArr);#[1, 2, 3, 4] 注意不包括末尾元素
#使用函式range()還可以指定步長
numberArr2 = list(range(2,11,2));
print(numberArr2);#[2, 4, 6, 8, 10]
#range()函式從2開始,然後不斷的加2,直到達到或者超過終值11,注意因為不包括末尾元素所以不會輸出12

20.如何快速的獲得數字列表中最小的元素,最大的元素和總和?

numberArr = [0,1,2,3,4,5];
min = min(numberArr);
max = max(numberArr);
sum = sum(numberArr);
print(min);#0
print(max);#5
print(sum);#15

21.列表解析,列表解析的意思就是能夠快速的生成列表。列表解析將for迴圈和建立新元素的程式碼合併成一行,並自動新增新元素。

squares = [value**2 for value in range(1,11)];
print(squares);#[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

22.如何在python中使用切片(即運算元組中的一部分資料)?

arr = [1,2,3,4,5,6]; # 我們的索引是從下標0開始的 不包括末尾
print(arr[0:3]);#[1,2,3]
print(arr[1:4]);#[2,3,4]
print(arr[-3:]);#[4,5,6]
print(arr[2:]);#[3,4,5,6]
print(arr[:]);#[1,2,3,4,5,6]
#語法為第start索引值到第end索引值,但不包括end索引值之間的資料,當start為負數的時候,代表從資料末尾開始向前,當不指明start和end值的時候代表陣列的所有元素。

23.如何遍歷資料的切片和複製陣列?

arr = [1,2,3,4,5,6];
for value in arr[:4]:
    print(value);#1,2,3,4
#切片的遍歷與資料的遍歷相同,再次強調使用for迴圈的時候,請注意迴圈體的縮排,否則程式會報錯。

brr = arr;
print(brr);#[1,2,3,4,5,6];
arr.append(7);
brr.append(8);
print(arr);
print(brr);
#以一般的邏輯我們認為結果會是這個樣子的 
#arr = [1,2,3,4,5,6,7];
#brr = [1,2,3,4,5,6,8];
#然鵝,結果卻是這樣子的:
#arr = #brr = [1, 2, 3, 4, 5, 6, 7, 8];
#這涉及到的其實是python的資料結構有關,詳見這篇文章[python——賦值與深淺拷貝](http://www.cnblogs.com/Eva-J/p/5534037.html);那麼如何獲得我們想要的結果呢?我們需要使用python提供的複製陣列方法。

brr = arr[:];
arr.append(7);
brr.append(8);
print(arr);#[1, 2, 3, 4, 5, 6, 7];
print(brr);#[1, 2, 3, 4, 5, 6, 8];

24.如何建立一系列不可修改的元素?

arr = (50,100);#這種語法在python中表示建立一個元組,元組與陣列的不同之處在於元組是一組靜態常量,不能使用下標進行修改,但可以進行訪問,如果需要修改元組的資料,需要對元組進行重新賦值。

print(arr);#(50, 100)
arr = (100,200);
print(arr);#(100, 200)

25.如何在python使用if,if else,if-elif-if語句?

arr=[1,2,3,4];
for item in arr:
    if item >= 3:
        print(item);#3,4
#python中 if後面跟上條件表示式,然後加上冒號,迴圈體同for語句,需要進行縮排操作。
arr=[1,2,3,4,5];
middle = arr[len(arr)/2];
for item in arr:
    if item > middle:
        print(str(item) + 'is big than the middle num')
    else:
        print(str(item) + 'is small than the middle num')

#1 is small than the middle num
#2 is small than the middle num
#3 is small than the middle num
#4 is big than the middle num
#5 is big than the middle num

#實際上應該輸出3是和middle num相等的,改寫如下:

arr=[1,2,3,4,5];
middle = arr[len(arr)/2];
for item in arr:
    if item > middle:
        print(str(item) + 'is big than the middle num')
    elif item == middle:
        print(str(item) + 'is the middle num')
    else :
        print(str(item) + 'is small than the middle num')

#1 is small than the middle num
#2 is small than the middle num
#3 is the middle num
#4 is big than the middle num
#5 is big than the middle num

#這裡注意的就是在python裡面,if-else 的用法與其他語言大致相同,但是else if 語句在python中是使用 elif 語句來代替的。

26.如何檢查兩個值是否相等?

a = 1;
b = '1';
print(a==b);#False
#在python中變數是區分型別的,int型別是不會等於string型別的。

c = 'apple';
d = 'Apple';
print(c==d);#False
print(c.lower() == d.lower());#True
print(c!=d);#True
#python中變數比較嚴格區分大小寫,在某些特殊場景下我們不管使用者的輸入是大小還是小寫,例如驗證碼的比較中,我們都把輸入轉化為小寫進行比較。

27.如何在python中使用 & 和 || 條件的語句?

a = 1;
b = 3;
if(a>0 and b>0):
    print('num is all big than 0')
elif (a>0 or b>0):
    print('one of the num is big than 0')
else :
    print('sorry,none of the num is big than 0')

#num is all big than 0

28.python中如何快速的判斷一個數是否在陣列中,以及一個數據是否為空?

arr = [1,2,3,4,5];
brr = [];
a = 1;
b = 6;
if a in arr:
    print(str(a) + ' ' + ' is in arr')
if b not in arr:
    print(str(b) + ' ' + ' is not in arr')
if brr:
    print('brr is not empty')
else :
    print('brr is an empty array')

#1 is in arr
#6 is not in arr
#brr is an empty array

#python中使用in判斷一個元素是否在陣列中,使用not in判斷一個元素是否不在陣列中,直接使用if arr判斷一個數據是否為空,當然也可這樣判斷
#if len(brr) == 0: print('brr is an empty array') 

29.在python中如何建立和操作一個Object物件?

obj = {
    'name':'liuda',
    'sex':'female',
    'age':33
}
print(obj)#{'age': 33, 'name': 'liuda', 'sex': 'female'}

#訪問物件裡面的值可以這樣使用:

a = obj['name'];
print(a);#liuda

#注意,在這裡以obj.name進行訪問的話將會報錯。

#我們可以這樣新增一個新的屬性在物件裡面:

obj['address'] = 'a place'
print(obj)
#{'age': 33, 'address': 'a place', 'name': 'liuda', 'sex': 'female'}

#細心的人還會發現,在python中輸出的結果預設是經過排序的。

#修改物件的某個值的方式和新建類似:

obj['sex']='man'
print(obj)
#{'age': 33, 'address': 'a place', 'name': 'liuda', 'sex': 'man'}

#在某些特殊的情況下我們可能需要刪除某個物件裡面的屬性,那麼我們可以這樣操作:

del obj['age']
print(obj)
#{'address': 'a place', 'name': 'liuda', 'sex': 'man'}

#類似的情況很多,這裡假設是對人的年齡進行保密,del語句將會刪除物件中相應的鍵值對,使用時必須要指定物件的名字和其中要刪除的屬性的鍵名。

30.python中如何遍歷一個物件?

user = {
    'account':'x123456',
    'name':'劉大',
    'sex':'man'
}

#遍歷所有的鍵-值

for key,value in user.items():
    print('\nkey: '+ key)
    print('value: '+ value)

# key: account
# value: x123456

# key: name
# value: 劉大

# key: sex
# value: man

#使用for迴圈進行遍歷物件的時候,可以宣告兩個變數,用於儲存鍵-值對中的鍵和值,這兩個變數可以使用任何語義化的名稱。

#item()方法會返回一個鍵-值對列表

#有的時候我們並不關心物件中的值,而注重物件中的屬性名,這時我們只想遍歷物件中的所有鍵,那麼我們可以這樣操作:

for key in user.keys():
    print(key)#account name sex

#當然有時候我們想要遍歷鍵的時候又得到對應的值,這時我們可以這樣訪問到鍵對應的值:
for key in user.keys():
    print(key)#account name sex
    print(user[key])
    #account x123456 name 劉大 sex man

#在某些情況下我們想要結果按照一定的順序排列起來,還記得之前用到的sorted()方法嗎?

fruits = {
    'banana':2,
    'orange':5,
    'apple':7
}
for key in fruits.keys():
    print(key)
#orange banana apple

for key in sorted(fruits.keys()):
    print(key)
#apple banana orange

#再次回顧下,sorted()方法返回的是一個臨時排序,不會改變物件原有的結構,而使用sort()方法將會返回一個永久性的排序,物件內部結構會發生變化。

#同理,如何只遍歷物件中所有的值呢?

for value in fruits.values():
    print(value)#5,2,7

#思考,目前都是考慮物件中沒有重複的值,那麼假如物件中有重複的值呢?要如何進行遍歷提取沒有重複的值?

ages = {
    'liuda':33,
    'zhangsan':25,
    'lisi':36,
    'xiaoming':25
}

for values in ages.values():
    print(value)#33,25,36,25

#假如我們只需要提取所有的年齡資料,而不管其中有多少個25歲的人,我們需要進行下面的操作:

for age in set(ages.values()):
    print(age)#33,25,36

#set()方法會返回一個沒有重複資料的列表。

#這些都是一些比較簡單的列表,現實情況中的物件更加複雜:

milks = [
    {
        'name':'旺仔牛奶',
        'product':['廣州明旺','浙江大旺','內蒙古旺旺'],
        'size':[
            {
                'sizeName':'125ml',
                'sizeNum':'24',
                'sizePackage':'紙盒'
            },
            {
                'sizeName':'245ml',
                'sizeNum':'12',
                'sizePackage':'鐵罐',
            }
        ]
    },
    {
        'name':'蒙牛早餐奶',
        'product':['內蒙古蒙牛','湖南蒙牛','廣州蒙牛'],
        'taste':['核桃味','燕麥味','巧克力味'],
        'size':[
            {
                'sizeName':'245ml',
                'sizeNum':'12',
                'sizePackage':'紙盒',
            }
        ]
    }
]
print(milks[0]['name'])#旺仔牛奶

31.如何獲取使用者的輸入?

#input()函式讓程式暫停,等待使用者輸入一些文字,python在輸入轉化為字串儲存起來。
#注意,在python2.7需要使用raw_input()而不是input();
message = input('please enter some text:')
print(message)

32.在python中如何使用while迴圈?

start  = 1
while start <= 5:
    print(start)
    start += 1
#1,2,3,4,5

#在很多情況下,我們需要處理使用者的退出,推薦的是使用一個標誌變數,當滿足一定條件的時候標誌變換。

flag = True;
start = 1
while flag:
    print(start)
    start += 1
    if(start == 3):
        flag = False
#1,2        

33.break與continue的對比?

#break語句適用於立即退出while迴圈,不再執行餘下的程式碼,不管條件測試的結果如何
#continue語句則會返回到迴圈開頭,並根據條件測試結果決定是否繼續執行迴圈。

#break
start = 0
while start <= 10:
    start += 1
    if(start % 2 == 0):
        print(start)
        break;

#在使用break語句下,上面小程式在1-10之間輸出偶數2之後就停止執行

#continue
start = 0
while start <= 10:
    start += 1
    if(start % 2 == 0):
        print(start)
        continue;
#在使用continue下則會輸出正確結果,2,4,6,8,10

#回顧,在前面我們學習過如何在一個數組中刪除一個指定的元素,
arr = [1,2,3,4,5]
arr.remove(1)
print(arr)#[2, 3, 4, 5]
#那麼假如要刪除的數在陣列中出現多次,預設remove()只會刪除第一次出現的數,這時while迴圈起作用了。
brr = [1,2,3,4,5,1]
brr.remove(1);
print(brr);#[2, 3, 4, 5, 1]

crr = [1,2,3,4,5,1]
while 1 in crr:
    crr.remove(1)
print(crr)#[2, 3, 4, 5]
#while 迴圈和in判斷結合使用可以進行刪除。

34.python如何自定義函式?

#python使用關鍵字def進行宣告函式

def greet():
    """Hello World"""
    print('Hello World')

greet()#Hello World
#三個引號括起來的叫做 **文件字串**,用來作為函式的註釋,描述了此函式是做什麼的。

35.python中函式的實參和形參?

def greet_user(userName):
    print('Hello:'+userName)

greet_user('Lucy')#Hello:Lucy

#在定義函式的時候userName是一個形參,在呼叫函式的時候引數實參Lucy。傳入的實參儲存在形參中。

#位置實參

#在呼叫函式的時候,在不指定形參名的情況下,python預設是按照形參的順序進行實參的呼叫的,直接看例子:

def greet_user(userName,userAge):
    print("\nHello: " + str(userName))
    print("\nYou are "+ str(userAge) + " years old")

greet_user('Linda',12)

#Hello: Linda
#You are 12 years old

#在傳入正確的形參位置時,結果能夠正常的輸出,但假如位置寫錯的話,輸出就會意想不到

greet_user(12,'Lucy')

#Hello: 12
#You are Lucy years old

#使用位置實參的時候,一定要保證實參和形參的傳入順序一致,否則將會出現意料之外的情況,在需要傳入的引數比較多的情況下,推薦使用**關鍵字實參**。

greet_user(userName='Lili',userAge=16)

#Hello: Lili
#You are 16 years old

#如何傳遞任意數量的引數,在你預先不指定函式接收多少個引數的情況下可以傳遞任意引數。

def make_cake(*params):
    print(params)

make_cake('flour','egg')#('flour', 'egg')
make_cake('flour','egg','cream')#('flour', 'egg', 'cream')
make_cake('flour','egg','cream','strawberry')
#('flour', 'egg', 'cream', 'strawberry')

#如何結合使用位置實參和任意數量實參

#如果要讓函式接受不同型別的實參,必須要將函式定義中將接納任意數量實參的形參放在最後,python會先匹配位置實參和關鍵字實參,再將餘下的實參都收集到最後一個形參中。

def get_userInfo(userName,phone,*additional):
    print("\nuName:"+ userName)
    print("\nuPhone:"+ str(phone))
    print(additional)

get_userInfo('Liuda',13456789562,'address:xxxProvincexxxCity','age:22')

#uName:Liuda
#uPhone:13456789562
#('address:xxxProvincexxxCity', 'age

36.python如何匯入外部檔案和函式?

#python中使用import語句進行匯入當前程式檔案中使用的模組

#student.py
def add_student(sNo,sName):
    print(sNo+':'+sName)

add_student('1111','Single')#1111:Single

#teacher.py
import student
student.add_student('222','double')#222:double

#注意在匯入整個模組的時候我們需要使用 模組名.方法名 進行外部模組方法的使用。

#匯入特定的函式:

from module_name import function

from student import add_student
#這種匯入方式就可以在 teacher.py 中直接呼叫add_student方法了。

#我們還可以給匯入的方法另起名字,as 關鍵字後面跟上新的名字

from student import add_student as add_one_student

#匯入模組中的所有函式,可以使用:

from student import *

#推薦不要使用匯入所有函式的寫法,而採用 import student 這種寫法,採用這種寫法的話呼叫 student.func 可以避免由於函式名相同引起的錯誤。

這裡介紹了python中使用的一些基本知識,下一章將會講解有關面向物件程式設計和檔案操作等相關知識。