python基礎數據類型----整數 ,字元串【常用操作方法】,布爾值,for迴圈

来源:https://www.cnblogs.com/xiaomage666/archive/2019/05/03/10806730.html
-Advertisement-
Play Games

Python基礎數據類型(4.29) bool str int 三者之間的轉換 str索引切片,常用操作方法 for迴圈(大量的練習題) 1.基礎數類型總覽 整數(int) ,字元串(str),布爾值(bool),列表(list),元組(tuple),字典(dict),集合(set). 10203 ...


Python基礎數據類型(4.29)

  • bool str int 三者之間的轉換
  • str索引切片,常用操作方法
  • for迴圈(大量的練習題)

1.基礎數類型總覽

  • 整數(int) ,字元串(str),布爾值(bool),列表(list),元組(tuple),字典(dict),集合(set).
    • 10203 123 3340 int 主要用於計算+- * / 等等
    • '今天吃了沒?' str 存儲少量的數據,併進行相應的操作。str1 + str2, str *int , 索引,切片, 其他操作方法
    • True False bool 判斷真假
    • [12, True, 'alex', [1,2,3 ]] list 存儲大量有序數據。列表內部數據可任意改動
    • (12, True, 'alex', [1,2,3 ]) tuple 存儲大量的數據,元組不可改變裡面的元素。只讀,不能更改。
    • {'name': '太白金星'} dict 字典存儲大量的關聯性比較強的數據,查詢速度非常快。
    • set 集合

2.數字int

  • 十進位二進位轉換
    
    #二進位轉換成十進位
    0001 1010     ------>   26
    
    b = 1 * 2**4 + 1 * 2**3 + 0 * 2**2 + 1 * 2**1 + 0 * 2**0
    print(b)  # 26
    
    
    #十進位整數轉換成二進位整數 
    42  -----> 0010 1010    除2取餘,逆序排列
    
    #十進位小數轉換成二進位小數  
    乘2取整,順序排列:用2乘十進位小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,此時0或1為二進位的最後一位。或者達到所要求的精度為止。
    0.625 = (0.101)B
    0.625 * 2 = 1.25 ---->1
    0.25 * 2 =0.5    ---->0
    0.50 * 2 =1.0    ---->1
    
  • bit_lenth 十進位轉化成二進位的有效長度【bit_length()計算整數在記憶體中占用的二進位碼的長度.】

    # bit_lenth 有效的二進位的長度
    i = 4
    print(i.bit_length())  # 3
    i = 5
    print(i.bit_length())  # 3
    i = 42
    print(i.bit_length())  # 4

3.布爾值bool:True False

  • bool str int 三者之間的轉換

    數據類型之間的轉換:
    ##### bool  <---> int #######
    #bool-->int  :True    1   False     0
    print(int(True))  # 1
    print(int(False))  # 0   
    
    #int-->bool  :非零即True ,0 為 False
    i = 0
    print(bool(i))
    
    【重點】##### str   <--->   int  #####
    # str ---> int  : 只能是純數字組成的字元串可以轉化成數字類型
    s1 = '1088'     
    print(int(s1))  # 字元串引號內必須是數字組成 
    # int ----> str  所有數字都能轉化成字元串
    i = 100
    print(str(i),type(str(i)))
    
    【重點】###### str <---> bool ##### 
    # str--->bool :非空即True
    s1 = ' '  #空格,不是空
    print(bool(s1))  #True
    
    s1 = ''  # 空字元串,為False
    print(bool(s1))   #False
    
    # bool  ---> str  無意義
    print(str(True), type(str(True)))  # 運行結果:True <class 'str'>
    
    • 應用:
    s = input('輸入內容')   #input輸入的為字元串類型
    if s:                #(字元串作為布爾值進行判斷)
        print('有內容')
    else:
        print('沒有輸入任何內容')
    #直接回車,顯示“沒有輸入任何內容”
    #先空格,再回車,顯示“有內容”

4.字元串str(重點)

  • Python中凡是用引號引起來的數據可以稱為字元串類型,組成字元串的每個元素稱之為字元,將這些字元一個一個連接起來,然後在用引號起來就是字元串。

  • 索引:索引即下標,就是字元串組成的元素從第一個開始,初始索引為0以此類推

  • 切片:切片就是通過索引(索引:索引:步長)截取字元串的一段,形成新的字元串

  • 對字元串進行索引和切片,出來的數據都是字元串類型

  • 常用操作方法:字元串的常用操作方法,不會對原字元串進行任何操作,都是產生一個新的字元串

    • 索引切片步長
    #字元從左至右有順序,依次為0,1,2....。從右往左以次為-1,-2,-3,....
    s1 = 'python全棧22期'
    
    # 按照索引取值,每次取一個字元。索引即下標index
    s2 = s1[0] 
    print(s2)          #p
    print(s2,type(s2)) #p <class 'str'>
    s3 = s1[2]
    print(s3)          #t
    s4 = s1[-1]
    print(s4)          #期
    
    # 按照切片取值。按照切片取值,原則:顧頭不顧腚
    s5 = s1[0:6]
    s5 = s1[:6]  #從開頭開始取,0可以預設不寫
    print(s5)   #python
    s6 = s1[6:]
    print(s6)   #全棧22期
    print(s1[:-1] #python全棧22 
                   #-1 是列表中最後一個元素的索引,但是要滿足顧頭不顧腚的原則,所以取不到'期'元素
    
    # 切片步長
    s7 = s1[:5:2]  #加步長
    print(s7)     #pto
    print(s1[:])  ##開頭到最後,python全棧22期
    
    # 倒序:
    s8 = s1[-1:-6:-1]  ##反向加步長
    print(s8)     #期22棧全
    
    # 倒序全部取出來
    s9 = s1[-1::-1]
    print(s9)    #期22棧全nohtyp
    
    s9 = s1[::-1]
    print(s9)    #期22棧全nohtyp
    
    s9 = s1[-1:0:-1]  #錯誤
    print(s9)    #期22棧全nohty  沒有字母p 
    
    
     按索引:s1[index]   註釋:index下標
     按照切片取值: s1[start_index: end_index+1]
     按照切片步長取值: s1[start_index: end_index+1: step]
     反向按照切片步長取值: s1[start_index: end_index後延一位: step]
    
    
  • 練習題

    '''
    有字元串s = "123a4b5c"
    通過對s切片形成新的字元串s1,s1 = "123"
    通過對s切片形成新的字元串s2,s2 = "a4b"
    通過對s切片形成新的字元串s3,s3 = "1345"
    通過對s切片形成字元串s4,s4 = "2ab"
    通過對s切片形成字元串s5,s5 = "c"
    通過對s切片形成字元串s6,s6 = "ba2"
    '''
    
    s = "123a4b5c"
    s1 = s[0:3]
    s1 = s[:3]
    print(s1)
    s2 = s[3:6]
    s2 = s[-5:-2]
    print(s2)
    s3 = s[0:-1:2]
    print(s3)
    s4 = s[1:6:2]
    print(s4)
    s5 = s[-1]
    print(s5)
    s6 = s[-3:0:-2]
    print(s6)
    
    • 常用操作方法【重點】
    字元串的常用操作方法,不會對原字元串進行任何操作,都是產生一個新的字元串
    
    
    upper lower
    #例
    s = 'taiBAifdsa'
    s1 = s.upper()   #字元串s中字元全部大寫(不會對原字元串進行任何操作,都是產生一個新的字元串
    print(s1,type(s1))  #TAIBAICBR
    s2 = s.lower()    #字元串s中字元全部小寫
    print(s2,type(s2))   #taibaicbr
    
    # 應用:
    username = input('用戶名')
    password = input('密碼')
    code = 'QweA'
    print(code)
    your_code = input('請輸入驗證碼:不區分大小寫')
    if your_code.upper() == code.upper():
        if username == '太白' and password == '123':
            print('登錄成功')
        else:
            print('用戶名密碼錯誤')
    else:
        print('驗證碼錯誤')
    
    
    
    startswith    endswith
    #startswith 判斷是否以...開頭
    s = 'taiBAifdsa'
    print(s.startswith('t'))        #True ***【重點】 判斷是否以單個字元開頭
    print(s.startswith('taiBAi'))   #True ***【重點】 判斷是否以多個字元開頭
    print(s.startswith(' '))        #False 判斷是否以空格開頭
    
    #endswith 判斷是否以...結尾
    s = 'taiBAIcBr'
    s1 = s.endswith('t')
    print(s1)  #False,返回的是布爾值
    s2 = s.endswith('Br')
    print(s2)  #True
    
    # 瞭解
    s = 'taiBAifdsa'
    print(s.startswith('B',3,6))   #True   括弧內的字元串必須加引號'B'
                                   #切片,顧頭不顧腚。判斷'BAi'是否以B開頭。下標3,6,不包括6對應的f。
    s = 'taiBAifdsa'
    print(s.endswith('f',3,6))    #False
    
    
    
    replace(old,new,count)
    #講
    msg = 'alex 很nb,alex是老男孩教育的創始人之一,alex長得很帥'
    msg1 = msg.replace('alex','太白')  # 預設全部替換,用'太白'替換'alex'
    msg1 = msg.replace('alex','太白',2)   #用'太白'替換'alex',2表示只替換前兩個字元串
    print(msg)  #alex 很nb,alex是老男孩教育的創始人之一,alex長得很帥
    print(msg1) #太白 很nb,太白是老男孩教育的創始人之一,alex長得很帥
    
    #自
    msg = '小明生病了,小明沒去上學,小明在家休息'
    msg1 = msg.replace('小明','小紅')
    print(msg1)  #小紅生病了,小紅沒去上學,小紅在家休息
    msg2 = msg.replace('小明','小紅',2)
    print(msg2)  #小紅生病了,小紅沒去上學,小明在家休息
    
    #自:比如某個字母小寫變大寫,大寫邊小寫
    s = ' qw sertyu eqtrti '
    s1 = s.replace('t','T',2)
    print(s1)# qw serTyu eqTrti
    
    
    
    strip:去除空白,如空格,\t製表符, \n換行符。
    # \n(換行符-將游標移動到下一行的開頭)
    # \t(水平製表符-將游標向右移動一個製表符位)
    
    #預設去除字元串兩邊的空格,換行符,製表符
    s4 = '  \n太白\t'
    print(s4)
    s5 = s4.strip()
    print(s5)
    #修改測試
    s4 = '  \n太 白 tai \tbai\t'
    print(s4)
    s5 = s4.strip()
    print(s5)#太 白 tai     bai   #只能去掉兩邊的空白,內部的去不掉
    
    
    
    name='*barr*y**'
    print(name.strip('*'))  # barry
    print(name.lstrip('*'))  # barry**
    print(name.rstrip('*'))  # *barry
    #修改測試
    name='*barr*y**'
    print(name.strip('*'))  # barr*y   #只把兩邊的*去掉了,內部的*去不了。
    print(name.lstrip('*'))  # barr*y**
    print(name.rstrip('*'))  # *barr*y
    
    # 瞭解:可以去除指定的字元
    s4 = 'rre太r白qsd'
    s5 = s4.strip('qrsed')  #括弧內字元串加引號,字元順序無所謂
    print(s5)  #太r白     #只能去兩頭的對應字元
    
    
    split  【非常重要】以什麼分割,最終形成一個列表,此列表不含有這個分割的元素。
    # str ---> list  字元串類型轉換為列表類型,- 預設按照空格分隔,可以指定分隔符。
    
    # 預設按照空格分隔,返回一個列表
    s6 = '太白 女神 吳超'
    l = s6.split()
    print(l)  #['太白', '女神', '吳超']
    
    # 指定分隔符
    s6 = '太白:女神:吳超'
    l = s6.split(':')   #  :作為分隔符
    print(l)  #['太白', '女神', '吳超']
    
    ret9 = 'title,Tilte,atre,'.split('t')  # t作為分隔符
    print(ret9)  #['', 'i', 'le,Til', 'e,a', 're,']  ''空字元
    
    # 瞭解:
    s6 = ':barry:nvshen:wu'
    print(s6.split(':'))    #['', 'barry', 'nvshen', 'wu']  註:''空字元串
    print(s6.split(":",2))  #['', 'barry', 'nvshen:wu']  #2表示前兩個:有效
    
    #自-實驗
    s1 = ' .haha.heihei.hehe.123'
    s2 = s1.split('.')   # .作為分隔符
    s3 = s1.split('.',3)
    print(s2)  #[' ', 'haha', 'heihei', 'hehe', '123']  註:' ' 引號內為空格
    print(s3)  #[' ', 'haha', 'heihei', 'hehe.123']
    
    
    
    join(iterable):聯合,連接,可以操作任何可迭代對象(可迭代:這個數據由多個元素組成,如字元串,列表),     
    
    s1 = 'alex'
    s2 = '+'.join(s1)   #'設置連接符'.join(iterable)  iterable可迭代  用+作為連接符
    print(s2)   #   a+l+e+x(字元串類型)
    print(s2,type(s2))  # a+l+e+x <class 'str'>
    
    #list ---> str  前提:列表裡面的元素必須都是str類型才行
    l1 = ['太白', '女神', '吳超'] 
    s3 = ':'.join(l1)   #用:作為連接符
    print(s3)   #  太白:女神:吳超(字元串類型)
    print(s3,type(s3)) #太白:女神:吳超 <class 'str'>
    
    
    
    count
    #count數出字元串中的元素出現的個數。
    s8 = 'sdfsdagsfdagfdhgfhgfhfghfdagsaa'
    print(s8.count('a'))  #5,5是數字類型
    s9 = s8.count("a",0,11) # 可切片,索引0,11不包含11
    print(s9)             #2
    
    
    format: 格式化輸出
    # 第一種用法:
    msg = '我叫{}今年{}性別{}'.format('大壯',25,'男')
    # 第二種用法:
    msg = '我叫{0}今年{1}性別{2}我依然叫{0}'.format('大壯', 25,'男')
    print(msg)
    # 第三種用法:
    a = 100
    msg = '我叫{name}今年{age}性別{sex}'.format(age=a,sex='男',name='大壯')  #此處format()內可以不按順序
    print(msg)
    
    
    is 系列: 返回布爾值
    name = 'taibai123'
    name = '100①'
    print(name.isalnum()) #字元串由字母或數字組成
    print(name.isalpha()) #字元串只由字母組成
    print(name.isdecimal()) #字元串只由十進位組成
    
    #應用
    s1 = input('請輸入您的金額:')
    if s1.isdecimal():
         print(int(s1))
    else:
         print('輸入有誤')
    
    補充:
    #尋找字元串中的元素是否存在
    a4 = "dkfjdkfasf54"
    ret1 = a4.find("fjdk",1,6)
    print(ret1)  #2 返回的找到的元素的索引,如果找不到返回-1
    ret2 = a4.index("fjdk",2,6)
    print(ret2) #2 返回的找到的元素的索引,找不到報錯。
    ret2 = a4.index("fjdk",4,6)
    print(ret2)#報錯
    
    #captalize,swapcase,title
    name='taiBAIhi123'
    print(name.capitalize()) #Taibaihi123   首字母大寫
    print(name.swapcase()) #TAIbaiHI123     大小寫翻轉
    msg='taibai say hi'
    print(msg.title()) #Taibai Say Hi  每個單詞的首字母大寫
    
    # 內同居中,總長度,空白處填充
    ret3 = a4.center(22,"*")
    print(ret3)#*****dkfjdkfasf54*****
    
    
    
    

5.for迴圈:有限迴圈

s1 = '老男孩edu'
print('老' in s1)   #True   成員運算符
print('老男' in s1)   #True
print('老ed' in s1)   #False
print('老ed' not in s1)  #True

s1 = '老男孩教育最好的講師:太白'

輸出:
'''
老      s1[0]
男      s1[1]
孩      s1[2]
教      s1[3]
育      ....
最
...
'''

s1 = '老男孩教育最好的講師:太白'
print(len(s1))   #13

#while迴圈代碼(利用while迴圈列印可迭代對象的每個元素)
s1 = '老男孩教育最好的講師:太白'
index = 0
while index < len(s1):   # len() :獲取可迭代對象的元素總個數,是內置函數。不是字元串專用的
     print(s1[index])
     index += 1


# for 迴圈

'''
有限迴圈
for 變數 in iterable:
    pass
'''

#for迴圈代碼
s1 = '老男孩教育最好的講師:太白'
for i in s1:
     print(i)

        #
for i in s1:
    print(i)
    if i == '好':
        break

# break continue
# for else: while else:用法一樣。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • go語言簡易web應用 & 二維碼生成及解碼 & 打包部署 轉載請註明出處: "https://www.cnblogs.com/funnyzpc/p/10801476.html" 前言(閑扯) 簡單WEB應用 話說一個簡單的WEB應用需要多少行依賴,多少行代碼,運行需要多大的package,需要多大 ...
  • 1:雙色球選購# 1 雙色球(假設一共八個球,6個紅球,球號1-32、2個藍球,球號1-16)# 2 確保用戶不能重覆選擇,不能超出範圍# 3 用戶輸入有誤時有相應的錯誤提示# 4 最後展示用戶選擇的雙色球的號碼 select_red_ball = []while True: n = int(inp ...
  • import java.sql.*;import java.util.ResourceBundle;/** * jdbc工具類,負責: * 1. 載入/註冊資料庫驅動程式 * 2. 獲取資料庫連接 * 3. 釋放資料庫資源(Connection, Statement, ResultSet) */pu ...
  • 原因 geany設置了編碼格式為utf8 運行時顯示出的cmd視窗編碼格式為GBK 解決方法 1. 打開cmd視窗,使用“ chcp 65001 ” 命令,臨時設置cmd視窗顯示為utf編碼格式,然後手工運行程式即可正常顯示。 2. 永久修改cmd視窗顯示為utf8編碼格式。 參考: "window ...
  • 前言:線程池技術是通過對線程資源的統一管理來達到對線程資源的重覆利用,降低線程頻繁創建和銷毀的開銷。java jdk在java.util.concurrent併發包中有一套現成的對線程池的實現方案,我們可以直接拿來使用,快速實現多線程併發編程場景。這裡對concurrent包中的線程池框架的實現進行 ...
  • 文件上傳有兩個要點 一是如何高效地上傳:使用MultipartFile替代FileOutputSteam 二是上傳文件的路徑問題的解決:使用路徑映射 文件路徑通常不在classpath,而是本地的一個固定路徑或者是一個文件伺服器路徑 SpringBoot的路徑: src/main/java:存放代碼 ...
  • 題目 "P3258 [JLOI2014]松鼠的新家" 解析 非常裸的一道樹剖題 鏈上修改+單點查詢的板子 記錄一下所經過的點$now[i]$,每次更新$now[i 1]到now[i]$ 我們鏈上更新時上一次到的終點,是這一次一次更新的起點,又因為在$a_n$處可以不放糖,所以我們每次鏈上更新完成後, ...
  • 一、引言 記得上大三時,要給微機房電腦安裝系統,除了原生的操作系統外,還要另外安裝一些必要的開發軟體,如果每臺電腦都重新去安裝的話工作量就很大了,這個時候就使用了windows鏡像系統,我們將要安裝的軟體裝好打包成一個鏡像,其他電腦只要裝這個鏡像就可以了,這樣工作量就減少了很多。Docker跟這個鏡 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...