python基礎2

來源:互聯網
上載者:User

標籤:comm   partition   變數   number   max   body   不同類   book   地址   

字串介紹
  • 想一想:

    當打來瀏覽器登入某些網站的時候,需要輸入密碼,瀏覽器把密碼傳送到伺服器後,伺服器會對密碼進行驗證,其驗證過程是把之前儲存的密碼與本次傳遞過去的密碼進行對比,如果相等,那麼就認為密碼正確,否則就認為不對;伺服器既然想要儲存這些密碼可以用資料庫(比如MySQL),當然為了簡單起見,咱們可以先找個變數把密碼儲存起來即可;那麼怎樣儲存帶有字母的密碼呢?

  • 答:

    字串

python中字串的格式

如下定義的變數a,儲存的是數字類型的值

    a = 100

如下定義的變數b,儲存的是字串類型的值

    b = "hello itcast.cn"    或者    b = ‘hello itcast.cn‘

小總結:

    • 雙引號或者單引號中的資料,就是字串
    • <

 

 字串輸出

demo

    name = ‘xiaoming‘    position = ‘講師‘    address = ‘北京市昌平區建材城西路金燕龍辦公樓1層‘    print(‘--------------------------------------------------‘)    print("姓名:%s"%name)    print("職位:%s"%position)    print("公司地址:%s"%address)    print(‘--------------------------------------------------‘)

結果:

    --------------------------------------------------    姓名: xiaoming    職位: 講師    公司地址: 北京市昌平區建材城西路金燕龍辦公樓1層    --------------------------------------------------

 

 字串輸入

之前在學習input的時候,通過它能夠完成從鍵盤擷取資料,然後儲存到指定的變數中;

注意:input擷取的資料,都以字串的方式進行儲存,即使輸入的是數字,那麼也是以字串方式儲存

demo:

    userName = input(‘請輸入使用者名稱:‘)    print("使用者名稱為:%s"%userName)    password = input(‘請輸入密碼:‘)    print("密碼為:%s"%password)

結果:(根據輸入的不同結果也不同)

    請輸入使用者名稱:dongGe    使用者名稱為: dongGe    請輸入密碼:haohaoxuexitiantianxiangshang    密碼為: haohaoxuexitiantianxiangshang
 下標和切片1. 下標索引

所謂“下標”,就是編號,就好比超市中的儲存櫃的編號,通過這個編號就能找到相應的儲存空間

  • 生活中的 "下標"

    超市儲物櫃

    高鐵二等座

    高鐵一等座

    綠皮車

  • 字串中"下標"的使用

    列表與元組支援下標索引好理解,字串實際上就是字元的數組,所以也支援下標索引。

    如果有字串:name = ‘abcdef‘,在記憶體中的實際儲存如下:

    如果想取出部分字元,那麼可以通過下標的方法,(注意python中下標從 0 開始)

    運行結果:

2. 切片

切片是指對操作的對象截取其中一部分的操作。字串、列表、元組都支援切片操作。

切片的文法:[起始:結束:步長]

注意:選取的區間屬於左閉右開型,即從"起始"位開始,到"結束"位的前一位結束(不包含結束位本身)。

我們以字串為例講解。

如果取出一部分,則可以在中括弧[]中,使用:

     name = ‘abcdef‘     print(name[0:3]) # 取 下標0~2 的字元

運行結果:

     name = ‘abcdef&aposapos;     print(name[0:5]) # 取 下標為0~4 的字元

運行結果:

     name = ‘abcdef‘     print(name[3:5]) # 取 下標為3、4 的字元

運行結果:

     name = ‘abcdef‘     print(name[2:]) # 取 下標為2開始到最後的字元

運行結果:

     name = ‘abcdef‘     print(name[1:-1]) # 取 下標為1開始 到 最後第2個  之間的字元

運行結果:

想一想
  • (面試題)給定一個字串aStr, 請反轉字串

 

 

 

 字串常見操作

如有字串mystr = ‘hello world itcast and itcastcpp‘,以下是常見的操作

find

檢測 str 是否包含在 mystr中,如果是返回開始的索引值,否則返回-1

mystr.find(str, start=0, end=len(mystr))

index

跟find()方法一樣,只不過如果str不在 mystr中會報一個異常.

mystr.index(str, start=0, end=len(mystr)) 

count

返回 str在start和end之間 在 mystr裡面出現的次數

mystr.count(str, start=0, end=len(mystr))

replace

把 mystr 中的 str1 替換成 str2,如果 count 指定,則替換不超過 count 次.

mystr.replace(str1, str2,  mystr.count(str1))

split

以 str 為分隔字元切片 mystr,如果 maxsplit有指定值,則僅分隔 maxsplit 個子字串

mystr.split(str=" ", 2)    

capitalize

把字串的第一個字元大寫

mystr.capitalize()

title

把字串的每個單字首大寫

>>> a = <spanclass="hljs-string">"hello itcast">>> a.title()‘Hello Itcast‘
startswith

檢查字串是否是以 obj 開頭, 是則返回 True,否則返回 False

mystr.startswith(obj)

endswith

檢查字串是否以obj結束,如果是返回True,否則返回 False.

mystr.endswith(obj)

lower

轉換 mystr 中所有大寫字元為小寫

mystr.lower()        

upper

轉換 mystr 中的小寫字母為大寫

mystr.upper()    

ljust

返回一個原字串靠左對齊,並使用空格填充至長度 width 的新字串

mystr.ljust(width) 

rjust

返回一個原字串靠右對齊,並使用空格填充至長度 width 的新字串

mystr.rjust(width)    

center

返回一個原字串置中,並使用空格填充至長度 width 的新字串

mystr.center(width)   

lstrip

刪除 mystr 左邊的空白字元

mystr.lstrip()

rstrip

刪除 mystr 字串末尾的空白字元

mystr.rstrip()    

strip

刪除mystr字串兩端的空白字元

>>> a = "\n\t itcast \t\n">>> a.strip()‘itcast‘
rfind

類似於 find()函數,不過是從右邊開始尋找.

mystr.rfind(str, start=0,end=len(mystr) )

rindex

類似於 index(),不過是從右邊開始.

mystr.rindex( str, start=0,end=len(mystr))

partition

把mystr以str分割成三部分,str前,str和str後

mystr.partition(str)

rpartition

類似於 partition()函數,不過是從右邊開始.

mystr.rpartition(str)

splitlines

按照行分隔,返回一個包含各行作為元素的列表

mystr.splitlines()  

isalpha

如果 mystr 所有字元都是字母 則返回 True,否則返回 False

mystr.isalpha()  

isdigit

如果 mystr 只包含數字則返回 True 否則返回 False.

mystr.isdigit() 

isalnum

如果 mystr 所有字元都是字母或數字則返回 True,否則返回 False

mystr.isalnum()  

isspace

如果 mystr 中只包含空格,則返回 True,否則返回 False.

mystr.isspace()   

join

mystr 中每個字元後面插入str,構造出一個新的字串

mystr.join(str)

想一想
  • (面試題)給定一個字串aStr,返回使用空格或者‘\t‘分割後的倒數第二個子串

 

 

 

 列表介紹

想一想:

前面學習的字串可以用來儲存一串資訊,那麼想一想,怎樣儲存咱們班所有同學的名字呢?

定義100個變數,每個變數存放一個學生的姓名可行嗎?有更好的辦法嗎?

答:

列表

列表的格式

變數A的類型為列表

    namesList = [‘xiaoWang‘,‘xiaoZhang‘,‘xiaoHua‘]

比C語言的數組強大的地方在於列表中的元素可以是不同類型的

    testList = [1, ‘a‘]
列印列表

demo:

結果:

    xiaoWang    xiaoZhang    xiaoHua

 

 

 

 列表的迴圈遍曆1. 使用for迴圈

為了更有效率的輸出資料行表的每個資料,可以使用迴圈來完成

demo:

    namesList = [‘xiaoWang‘,‘xiaoZhang‘,‘xiaoHua‘]    for name in namesList:        print(name)

結果:

    xiaoWang    xiaoZhang    xiaoHua
2. 使用while迴圈

為了更有效率的輸出資料行表的每個資料,可以使用迴圈來完成

demo:

    namesList = [‘xiaoWang‘,‘xiaoZhang‘,‘xiaoHua‘]    length = len(namesList)    i = 0    while i<length:        print(namesList[i])        i+=1

結果:

    xiaoWang    xiaoZhang    xiaoHua

 

 

 

 列表的相關操作

列表中存放的資料是可以進行修改的,比如"增"、"刪"、"改""

添加元素("增"append, extend, insert)append

通過append可以向列表添加元素

demo:

    #定義變數A,預設有3個元素    A = [‘xiaoWang‘,‘xiaoZhang‘,‘xiaoHua‘]    print("-----添加之前,列表A的資料-----")    for tempName in A:        print(tempName)    #提示、並添加元素    temp = input(‘請輸入要添加的學生姓名:‘)    A.append(temp)    print("-----添加之後,列表A的資料-----")    for tempName in A:        print(tempName)

結果:

extend

通過extend可以將另一個集合中的元素逐一添加到列表中

insert

insert(index, object) 在指定位置index前插入元素object

修改元素("改")

修改元素的時候,要通過下標來確定要修改的是哪個元素,然後才能進行修改

demo:

    #定義變數A,預設有3個元素    A = [‘xiaoWang‘,‘xiaoZhang‘,‘xiaoHua‘]    print("-----修改之前,列表A的資料-----")    for tempName in A:        print(tempName)    #修改元素    A[1] = ‘xiaoLu‘    print("-----修改之後,列表A的資料-----")    for tempName in A:        print(tempName)

結果:

    -----修改之前,列表A的資料-----    xiaoWang    xiaoZhang    xiaoHua    -----修改之後,列表A的資料-----    xiaoWang    xiaoLu    xiaoHua
尋找元素("查"in, not in, index, count)

所謂的尋找,就是看看指定的元素是否存在

in, not in

python中尋找的常用方法為:

  • in(存在),如果存在那麼結果為true,否則為false
  • not in(不存在),如果不存在那麼結果為true,否則false

demo

    #待尋找的列表    nameList = [‘xiaoWang‘,‘xiaoZhang‘,‘xiaoHua‘]    #擷取使用者要尋找的名字    findName = input(‘請輸入要尋找的姓名:‘)    #尋找是否存在    if findName in nameList:        print(‘在字典中找到了相同的名字‘)    else:        print(‘沒有找到‘)

結果1:(找到)

結果2:(沒有找到)

說明:

in的方法只要會用了,那麼not in也是同樣的用法,只不過not in判斷的是不存在

index, count

index和count與字串中的用法相同

>>> a = [‘a‘, ‘b‘, ‘c‘, ‘a‘, ‘b‘]>>> a.index(‘a‘, 1, 3) # 注意是左閉右開區間
刪除元素("刪"del, pop, remove)

類比現實生活中,如果某位同學調班了,那麼就應該把這個條走後的學生的姓名刪除掉;在開發中經常會用到刪除這種功能。

列表元素的常用刪除方法有:

  • del:根據下標進行刪除
  • pop:刪除最後一個元素
  • remove:根據元素的值進行刪除

demo:(del)

    movieName = [‘加勒比海盜‘,‘駭客帝國‘,‘第一滴血‘,‘指環王‘,‘霍位元人‘,‘速度與激情‘]    print(‘------刪除之前------‘)    for tempName in movieName:        print(tempName)    del movieName[2]    print(‘------刪除之後------‘)    for tempName in movieName:        print(tempName)

結果:

    ------刪除之前------    加勒比海盜    駭客帝國    第一滴血    指環王    霍位元人    速度與激情    ------刪除之後------    加勒比海盜    駭客帝國    指環王    霍位元人    速度與激情

demo:(pop)

    movieName = [‘加勒比海盜‘,‘駭客帝國‘,‘第一滴血‘,‘指環王‘,‘霍位元人‘,‘速度與激情‘]    print(‘------刪除之前------‘)    for tempName in movieName:        print(tempName)    movieName.pop()    print(‘------刪除之後------‘)    for tempName in movieName:        print(tempName)

結果:

    ------刪除之前------    加勒比海盜    駭客帝國    第一滴血    指環王    霍位元人    速度與激情    ------刪除之後------    加勒比海盜    駭客帝國    第一滴血    指環王    霍位元人

demo:(remove)

    movieName = [‘加勒比海盜‘,‘駭客帝國‘,‘第一滴血‘,‘指環王‘,‘霍位元人‘,‘速度與激情‘]    print(‘------刪除之前------‘)    for tempName in movieName:        print(tempName)    movieName.remove(‘指環王‘)    print(‘------刪除之後------‘)    for tempName in movieName:        print(tempName)

結果:

    ------刪除之前------    加勒比海盜    駭客帝國    第一滴血    指環王    霍位元人    速度與激情    ------刪除之後------    加勒比海盜    駭客帝國    第一滴血    霍位元人    速度與激情
排序(sort, reverse)

sort方法是將list按特定順序重新排列,預設為由小到大,參數reverse=True可改為倒序,由大到小。

reverse方法是將list逆置。

 

 

 

 列表的嵌套1. 列表嵌套

類似while迴圈的嵌套,列表也是支援嵌套的

一個列表中的元素又是一個列表,那麼這就是列表的嵌套

    schoolNames = [[‘北京大學‘,‘清華大學‘],                    [‘南開大學‘,‘天津大學‘,‘天津師範大學‘],                    [‘山東大學‘,‘中國海洋大學‘]]
2. 應用

一個學校,有3個辦公室,現在有8位老師等待工位的分配,請編寫程式,完成隨機的分配

#encoding=utf-8import random# 定義一個列表用來儲存3個辦公室offices = [[],[],[]]# 定義一個列表用來儲存8位老師的名字names = [‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘,‘G‘,‘H‘]i = 0for name in names:    index = random.randint(0,2)        offices[index].append(name)i = 1for tempNames in offices:    print(‘辦公室%d的人數為:%d‘%(i,len(tempNames)))    i+=1    for name in tempNames:        print("%s"%name,end=‘‘)    print("\n")    print("-"*20)

運行結果如下:

 

python基礎2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.