python3:基本數據類型(int,bool,str)


一. python基本數據類型

  • int        整數,用來進行數學運算
  • str        字符串,存放少量數據
  • bool     布爾值,用來判斷True,False
  • list        列表,存放大量數據,[ ]表示
  • tuple    元組,只讀列表,( ) 表示
  • dict      字典,存放大量數據,{key:value}表示
  • set        集合,存放大量數據,不重復

二.整數(int)

所有整數都是int類型。
 
bit_length() 
返回一個數的二進制長度。(了解)
 
a = 2
print(a.bit_length()) 結果: 2 a = 5
print(a.bit_length()) 結果: 3
 
說明:十進制轉二進制
將正的十進制數除以二,得到的商再除以二,依次類推直到商為零或1時為止,然后在旁邊標各步的余數,最后倒着寫出來,高位補零就OK了。

三.布爾值(bool)

取值只有True、False。bool值沒有操作
 
1.所有的空都是False,所有的非空都是True。
 
a = 0     # 整數0,False
print(bool(a))
 
s = ""    # 空字符串,False
print(bool(s))
 
lst = []  # 空列表,False
print(bool(lst))
 
dic = {}  # 空字典,False
print(bool(dic))
 
a = None  # None表示空,真空,False
print(bool(a))
 
2.類型轉換
把xx類型轉換成yy類型,yy(xx)
 
str => int        # 字符串轉整數
int(s)
 
int => str        # 整數轉字符串
str(i)
 
list => tuple    # 列表轉字典
tuple(lst)
 
tuple => list    # 字典轉列表
list(tu)

四.字符串(str)

在python中,用', ", ''', """ 引起來的內容被稱為字符串。

1.切邊和索引

索引
下標,切記,下標從0開始
 
s = "伊麗莎白兒時"
print(s[0])
print(s[1])
print(s[2])
print(s[3])
print(s[4])
print(s[5])
# print(s[6])    # 沒有6,報錯了,索引不能超過邊界
 
print(s[-1])     # 倒數第一個
print(s[-2])
 
切片
格式:[起始位置:結束位置] 或 [起始位置:結束位置:步長]
特點:1.顧頭不顧尾。2.默認從左往右切。
 
s = "伊麗莎白兒時"
print(s[1:3])        # 從1切到3,但是取不到3
print(s[1:100])      # 從1切到100,如果右邊已經過了最大值,相當於獲取到最后
print(s[1:])         # 從1開始切,切到結尾
print(s[:2])         # 從頭開始切,切到2
print(s[:])          # 從頭到尾
print(s[-1:-3])      # 安裝默認規則,從-1往右切,是怎樣都不會切到-3的,方法在下面。
print(s[-3:-1])      # 只能從左到右切
 
# 給出第三個參數來控制方向,第三個參數叫步長
s = "伊麗莎白兒時"
print(s[-1:-3:-1])   # - 表示反方向,從右往左切。
print(s[1:5:3])      # 從左到右,從1到5,但不包含5,每3個取1個。
print(s[-1:-5:-2])   # 從右到左,從-1到-5,但不包含-5,每2個取1個。
 

2.字符串的相關操作

字符串是不可變的對象,所有任何操作對源字符串是不會有任何影響的。

2.1.大小寫轉換

capitalize()
把首字母變成大寫
 
lower()
把字母變成小寫
 
upper()
把字母變成大寫。(重要,標紅的都是必記的)
 
swapcase()
大小寫互換
 
casefold()
把字母變成小寫。
和lower的區別:
--lower()對某些字符支持不夠好。
--casefold()對所有字母都有效,比如東歐一些字母。
 
title()
把每個單詞的開頭大寫。
 
s = "alex is a teacher And wusir is a teacher too"
 
s1 = s.capitalize()    # 只把alex首字母大寫,並且測試時發現,把And變成小寫的了。
print(s1)
 
s2 = s.lower()         # 全部變小寫
print(s2)
 
s3 = s.upper()         # 全部變大寫
print(s3)
 
s4 = s.swapcase()      # 大小寫轉換,大寫變小寫,小寫變大寫
print(s4)
 
s2 = "БBß" # 俄美德
print(s2)
print(s2.lower())                # 德文的B,不會轉換
print(s2.casefold())            # 全都可以轉換成小寫
 
s = "alex_is a teacher And wu吳sir is a teacher too"
 
s5 = s.title()                     # 只要不是全是字母連接的開頭都會大寫,alex_is中a和i都大寫,wu吳sir中w和s都大寫
print(s5)

 

2.2.切來切去

center()
居中
 
expandtabs()
更改tab的長度
 
strip()
去掉空白(空格和換行符)
 
replace()
字符串替換
 
split()
字符串切割
切完的結果是一個列表,列表中裝的是字符串,用什么切就會損失掉什么
 
s = "sp"
s1 = s.center(10)              # 拉長成10,把原字符串放中間,其余位置補空白
print(s1)
 
s1 = s.center(10, "*")         # 拉長成10,把原字符串放中間,其余位置補*
print(s1)
 
s = " alex is a teacher "
s1 = s.strip()                      # 去掉左右兩側的空格,中間的空格不會影響
print(s1)
 
s2 = s.lstrip()                     # 去掉左邊的空格,left
print(s2)
 
s3 = s.rstrip()                     # 去掉右邊的空格,right
print(s3)
 
s = "sp alex sp"
s1 = s.strip("sp")                # 去掉左右兩邊的sp,空格不會去
print(s1)
 
s2 = s.lstrip("sp")               # 去掉左邊的sp,空格不會去
print(s2)
 
s3 = s.rstrip("sp")               # 去掉右邊的sp
print(s3)
 
s = "alex_wusir_taibai_ritian"
s1 = s.replace("_", "A")       # 將_,全部替換為大寫A
print(s1)
 
s2 = s.replace("_", "")        # 將_,全部替換為空(不是空格)
print(s2)
 
s3 = s.replace("_", "A", 2)    # 將_,替換為A,從左到右替換2個
print(s3)
 
s = "alex_wusir_taibai_ritian"
lst = s.split("taibai")           # 用taibai切,那生成的列表中,就會去掉taibai
print(lst)
 
s = """我是誰
你是誰"""
lst = s.split("\n")               # 去掉換行符(\n)
print(lst)
 

2.3.格式化輸出

format()
 
# 輸出的結果是一樣的
s = "我叫%s, 我今年%s歲了" % ("周傑倫", "40")
print(s)
 
s = "我叫{}, 我今年{}歲了".format("周傑倫", "40")        # 按位置格式化
print(s)
 
s = "我叫{0}, 我今年{1}歲了".format("周傑倫", "40")      # 指定位置
print(s)
 
s = "我叫{1}, 我今年{0}歲了".format("40", "周傑倫")
print(s)
 
s = "我叫{name}, 我今年{age}歲了".format(name="周傑倫", age=40)    # 指定關鍵字
print(s)

 

2.4.查找

startswith()
以...開頭
 
endswith()
以...結尾
 
count()
統計xx在字符串中出現的次數
 
find()
查找xx在字符串中出現的位置, 只找第一次出現的位置, 沒有就返回-1
 
index()
查找xx在字符串中出現的位置, 只找第一次出現的位置, 當字符串不存在的時候, 報錯
 
s = "Tom is a cat"
print(s.startswith("Tom"))       # 是否以Tom開頭, 注意區分大小寫
print(s.endswith("cat"))          # 是否以cat結尾
 
print(s.count("a"))          # 統計a出現的次數
 
print(s.find("a"))             # 返回 7
print(s.find("A"))            # 返回 -1
print(s.find("a", 8, 12))   # 切片找, 返回10
 
print(s.index("a"))           # 返回 7
# print(s.index("A"))        # 會報錯

 

2.5.條件判斷

isdigit()
是否由數字組成
 
isalpha()
是否由字母組成
 
isalnum()
是否由數字和字母組成
 
isnumeric()
是否有數字組成, 可識別中文
 
isupper()
判斷字符串中包含的字母是否全為大寫
 
islower()
判斷字符串中包含的字母是否全為小寫
 
# 只列舉正確(True)的判斷
s1 = "123"
print(s1.isdigit())        # 數字
 
s2 = "abc"
print(s2.isalpha())       # 字母
 
s3 = "123abc"
print(s1.isalnum())      # 數字
print(s2.isalnum())      # 字母
print(s3.isalnum())      # 數字和字母
 
s = "壹仟貳佰五十六萬拾"
print(s.isnumeric())
 
s1 = "AND"
s2 = "AND123!@"
print(s1.isupper())
print(s2.isupper())
 
s3 = "and"
s4 = "and123!@"
print(s3.islower())
print(s4.islower())

 

2.6.計算字符串的長度

len()
python內置函數,通用的
 
s = "abcd"
print(len(s))

 

3.for循環

for 變量 in 可迭代對象:
    循環體
else:
    當循環結束的時候會執行
 
解釋:
可迭代對象: 可以一個一個往外取值的對象.
 
s = "我是誰"
# 使用while循環
n = 0
while n < len(s):
    print(s[n])
    n = n + 1
 
# 迭代
# 使用for循環
for c in s:
    print(c)
 
in的小結:
in的兩種用法
  • 在for中, 是把每一個元素獲取到賦值給前面的變量.
  • 不在for中, 判斷xxx是否出現在str中
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM