02.Python基础_标准数据类型_数值型_字符串
文章目錄
- 1.標準數(shù)據(jù)類型
- 1.1 數(shù)據(jù)類型
- 1.1.1 整數(shù)型int
- 1.1.2 浮點型float
- 1.2 數(shù)字類型的轉(zhuǎn)換
- 1.2.1浮點轉(zhuǎn)整數(shù)型
- 1.2.2 整數(shù)型轉(zhuǎn)化為浮點型
- 1.2.3 數(shù)值型轉(zhuǎn)化為字符串
- 1.2.4 字符串轉(zhuǎn)化為整數(shù)
- 1.3 數(shù)值的計算
- 1.3.1運算的優(yōu)先級
- 1.3.3 math科學計算庫
- 1.3.4 小練習: 計算根號5加上17的平方的結(jié)果取10的對數(shù)的
- 1.3.5 復合賦值運算符
- 1.3.6 python中的比較運算符
- 1.3.7 邏輯運算符
- 1.4 字符串
- 1.4.1 長字符串
- 1.4.2 關于單引號和雙引號以及引號沖突問題
- 1.4.3 字符串的數(shù)據(jù)類型和函數(shù)
- 1.4.4 字符串的拼接和重復
- 1.4.5 重點: 字符串的索引和切片
- 1.4.6 小練習:有一個字符串,按照要求切除內(nèi)容
- 1.4.7 小練習: 給定一個字符串a(chǎn)Str, 請反轉(zhuǎn)字符串
- 1.4.8 轉(zhuǎn)義字符
- 1.4.9 字符串方法
- 1.4.9.1 find查找索引值
- 1.4.9.2 小練習: 查找出“上”字的索引值,并利用切片提取出上及后面的兩個字
- 1.4.9.3 count查找出現(xiàn)次數(shù)
- 1.4.9.4 replace替代
- 1.4.9.5小練習:
- 1.4.9.6 split分割符
- 1.4.9.7 splitlines按行分割
- 1.4.9.8 字符串的格式化format
1.標準數(shù)據(jù)類型
就像我們平時說的, 小數(shù), 整數(shù), 復數(shù)之間的區(qū)別一樣, 在每種編程語言中, 數(shù)據(jù)都可以以不同的形式儲存在內(nèi)存中, 這些不同的形式就叫做數(shù)據(jù)類型.
用不同數(shù)據(jù)類型儲存的數(shù)據(jù), 具有不同的儲存結(jié)構(gòu), 對應的也就有不同的使用方法和功能.
下面讓我們來看一下python中的常用數(shù)據(jù)類型
python中常用的數(shù)據(jù)類型有
- 數(shù)字(Numbers)整數(shù)int, 浮點數(shù)float, 復數(shù)complex
- 布爾(Booleans)函數(shù)為bool, 含有的值為True和False
- 字符串(Strings)函數(shù)為str , Uniconde字符序列, 在引號內(nèi)包含
- 列表(list)有序的值的序列
- 元組(tuple)有序的值的序列且不可改變
- 字典(Dictionaries)函數(shù)為dict, 無序的鍵值對的組合
- 集合(Sets)函數(shù)為set, 無序的不含重復值的序列
1.1 數(shù)據(jù)類型
int 整數(shù)型 float浮點型 complex復數(shù)
1.1.1 整數(shù)型int
Python的整數(shù)長度沒有限制,通常是連續(xù)分配的內(nèi)存空間。
a = 256 type(a) out:int1.1.2 浮點型float
浮點型就是我們常說的小數(shù)型
k = 3.1 type(k) out:float也可以使用科學計數(shù)法進行表示
# a=110,但是a這里用的科學計數(shù)法,所以是浮點型 a = 1.1e2 type(a) out:float1.2 數(shù)字類型的轉(zhuǎn)換
1.2.1浮點轉(zhuǎn)整數(shù)型
# 此時浮點型化為整數(shù)型 int(3.6) out:31.2.2 整數(shù)型轉(zhuǎn)化為浮點型
# 整數(shù)轉(zhuǎn)為浮點型 float(6) out:6.01.2.3 數(shù)值型轉(zhuǎn)化為字符串
str(666) out:'666'1.2.4 字符串轉(zhuǎn)化為整數(shù)
字符串不能直接轉(zhuǎn)化為整數(shù),會報錯
但是字符串可以轉(zhuǎn)換為浮點型
所以可以這樣
1.3 數(shù)值的計算
下面以a=10 ,b=20為例進行計算
| + | 加 | 兩個對象相加 a + b 輸出結(jié)果 30 |
| - | 減 | 得到負數(shù)或是一個數(shù)減去另一個數(shù) a - b 輸出結(jié)果 -10 |
| * | 乘 | 兩個數(shù)相乘或是返回一個被重復若干次的字符串 a * b 輸出結(jié)果 200 |
| / | 除 | x除以y b / a 輸出結(jié)果 2 |
| // | 取整除 | 返回商的整數(shù)部分 9//2 輸出結(jié)果 4 , 9.0//2.0 輸出結(jié)果 4.0 |
| % | 取余 | 返回除法的余數(shù) b % a 輸出結(jié)果 0 |
| ** | 冪 | 返回x的y次冪 a**b 為10的20次方, 輸出結(jié)果 100000000000000000000 |
案例
1.3.1運算的優(yōu)先級
乘除大于加減
指數(shù)運算大于乘除
練習題:
一個蘋果的價格是10元, 一個梨的價格是12元, 如果買6個蘋果, 三個梨, 需繳納交易稅為22%, 總共需要花費多少錢?
apple = 8 pear = 12 tax = 0.22money = (6*apple + 3*pear) * (1 + tax) money out:117.121.3.3 math科學計算庫
| abs(x) | 返回x的絕對值,類型隨x |
| max(n1, n2, …) | 返回最大值 |
| min(n1, n2, …) | 返回最小值 |
| round(x [,n]) | 默認返回浮點數(shù)x的四舍五入值,如給出n值,則代表舍入到小數(shù)點后的n位。例如round(1.23456, 3)返回1.235 |
| fabs(x) | 返回x的絕對值,類型是浮點數(shù) |
| ceil(x) | 取x的上入整數(shù),如math.ceil(4.1)返回5 |
| floor(x) | 取x的下入整數(shù),如math.floor(4.9)返回4 |
| exp(x) | 返回e的x次冪,e是自然常數(shù) |
| sqrt(x) | 返回x的平方根,返回值是float類型 |
| modf(x) | 返回x的整數(shù)部分和小數(shù)部分,兩部分的符號與x相同,整數(shù)部分以浮點型表示。例如math.modf(4.333),返回元組(0.3330000000000002, 4.0) |
| log10(x) | 返回以10為基數(shù)的x的對數(shù),返回值類型是浮點數(shù) |
| log(x,y) | 返回以y為基數(shù)的x的對數(shù),返回值類型是浮點數(shù) |
| pow(x, y) | 返回x的y次冪,即x**y |
1.3.4 小練習: 計算根號5加上17的平方的結(jié)果取10的對數(shù)的
log?10(5+172)\log_{10}{(\sqrt{5} + 17^2)} log10?(5?+172)
代碼
1.3.5 復合賦值運算符
| += | 加法賦值運算符 | 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 |
| **= | 冪賦值運算符 | c **= a 等效于 c = c ** a |
| //= | 取整除賦值運算符 | c //= a 等效于 c = c // a |
1.3.6 python中的比較運算符
| == | 檢查兩個操作數(shù)的值是否相等,如果是則條件變?yōu)檎妗?/td> | 如a=3,b=3則(a == b) 為 true. |
| != | 檢查兩個操作數(shù)的值是否相等,如果值不相等,則條件變?yōu)檎妗?/td> | 如a=1,b=3則(a != b) 為 true. |
| > | 檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是,則條件成立。 | 如a=7,b=3則(a > b) 為 true. |
| < | 檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是,則條件成立。 | 如a=7,b=3則(a < b) 為 false. |
| >= | 檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是,則條件成立。 | 如a=3,b=3則(a >= b) 為 true. |
| <= | 檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是,則條件成立。 | 如a=3,b=3則(a <= b) 為 true. |
1.3.7 邏輯運算符
| and | x and y | 布爾"與" - 如果 x 為 False,x and y 返回 False,否則它返回 y 的計算值。 | (a and b) 返回 20。 |
| or | x or y | 布爾"或" - 如果 x 是 True,它返回 True,否則它返回 y 的計算值。 | (a or b) 返回 10。 |
| not | not x | 布爾"非" - 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 | not(a and b) 返回 False |
與 and 代表符號的兩邊如果都為真,則結(jié)果為真
或 or 兩邊如果有一邊以上為真,則結(jié)果真
非 not 顛倒真和假,如果原來是真,就變成假,如果原來是假,就變成真
1.4 字符串
字符串是指以"“雙引號, 或者’'單引號括起來的任意文本, 例如"abaa”, '1232’凡是在引號中的都是字符串
1.4.1 長字符串
當字符串比較長,一行寫不下,需要換行的時候,可以使用長字符串
s_length與print(s_length)區(qū)別就是s_length換行有\(zhòng)n,而print(s_length)沒有,直接換行
s_length = """知而不行,謂之不誠。 行而不成,謂之不能。 知而行,是赤誠之心,行而能,是貫徹到底,已經(jīng)很難被其他人和事影響了。 而知行合一的前提是,格物致知,將一件事研究到極致,變成自己的知識。 比如做菜,將做菜這門手藝做到盡善盡美,色香味無可挑剔;比如建筑,將樓宇亭臺建得堅固美觀使用,美輪美奐,風雨不倒地震不塌;比如造船,將造船原理吃透,用料堅固,風浪不沉。 這便是格物致知,將一件東西一件事情研究到極點,明白其中所有的道理。 做到格物致知,方能知行合一。 """ s_length '知而不行,謂之不誠。 \n行而不成,謂之不能。 \n知而行,是赤誠之心,行而能,是貫徹到底,已經(jīng)很難被其他人和事影響了。 \n而知行合一的前提是,格物致知,將一件事研究到極致,變成自己的知識。 \n比如做菜,將做菜這門手藝做到盡善盡美,色香味無可挑剔;比如建筑,將樓宇亭臺建得堅固美觀使用,美輪美奐,風雨不倒地震不塌;比如造船,將造船原理吃透,用料堅固,風浪不沉。 \n這便是格物致知,將一件東西一件事情研究到極點,明白其中所有的道理。 \n做到格物致知,方能知行合一。\n' print(s_length) 知而不行,謂之不誠。 行而不成,謂之不能。 知而行,是赤誠之心,行而能,是貫徹到底,已經(jīng)很難被其他人和事影響了。 而知行合一的前提是,格物致知,將一件事研究到極致,變成自己的知識。 比如做菜,將做菜這門手藝做到盡善盡美,色香味無可挑剔;比如建筑,將樓宇亭臺建得堅固美觀使用,美輪美奐,風雨不倒地震不塌;比如造船,將造船原理吃透,用料堅固,風浪不沉。 這便是格物致知,將一件東西一件事情研究到極點,明白其中所有的道理。 做到格物致知,方能知行合一。1.4.2 關于單引號和雙引號以及引號沖突問題
單引號與雙引號沒有區(qū)別
當字符串本身內(nèi)容中包含有引號時,可能會引起引號沖突
轉(zhuǎn)義符號:
對于這種沖突,可以使用轉(zhuǎn)義符號\,對該符號進行轉(zhuǎn)義
1.4.3 字符串的數(shù)據(jù)類型和函數(shù)
注: 字符串也是一個可迭代對象, 迭代次數(shù)就是字符串的字符數(shù)
1.4.4 字符串的拼接和重復
字符串 使用 + 相當于拼接兩個字符串
字符串 * n , 相當于把字符串重復n次
1.4.5 重點: 字符串的索引和切片
字符串也是一個可迭代對象, 也就是說每一個字符串實際上都有一個對應的索引值。
索引值從零開始計算,每一個字符對應一個唯一的索引值。
索引值也可以從后往前算,后面從負一開始計算。
# 正向索引的話是從 0 1 2 3....,負向索引是從-1 -2 -3 -4開始 test = "零一二三四五六七八九" test[0] '零' test[8] '八' text[-1] '九' text[-10] '零'有的時候我不僅僅想取出字符串的其中一個字符,想要取出其中一部分,這時候應該怎么做呢?
字符串切片的標準語法:
string[開始位置:終止位置(開區(qū)間):步長和方向]
注意:選取的區(qū)間屬于左閉右開型,即從"起始"位開始,到"結(jié)束"位的前一位結(jié)束(不包含結(jié)束位本身)。
這里以字符串為例進行講解,實際上列表也會具有相同的方法.
# string[開始位置:終止位置(開區(qū)間):步長和方向] test = "零一二三四五六七八九"test '零一二三四五六七八九'test[1:4] # 左閉右開區(qū)間,默認步長為1 '一二三'test[2:7:2] '二四六'test[8:4:-1] # 如果從后向前切,那么開始位置也是后面 '八七六五'test[4:8:1] '四五六七'test[:3] # 可以省略: 如果開始位置省略: 代表從頭開始切 '零一二'test[5:]# 可以省略: 如果終止位置省略: 代表一直切到最后 '五六七八九'test[1::2] #設置步長為2,從1到最后 '一三五七九' test[-1:-6:-2] '九七五'1.4.6 小練習:有一個字符串,按照要求切除內(nèi)容
practice = “有些人總是這么不一樣,看了一眼,就能讓人記住很多年。而有些人,哪怕看了再多年,也沒在心頭住下。”
在字符串中切片出以下字符
1.4.7 小練習: 給定一個字符串a(chǎn)Str, 請反轉(zhuǎn)字符串
aStr = "abcdefg" aStr[::-1] 'gfedcba'1.4.8 轉(zhuǎn)義字符
轉(zhuǎn)義字符有很多,這里介紹幾個常見的
轉(zhuǎn)義字符如可以把本身沒有含義的普通字符轉(zhuǎn)換成特殊功能字符,也可以把本身有特殊功能的字符轉(zhuǎn)換成普通字符。
print("\"ABC\"") "ABC"'\'ABC\nbb' "'ABC\nbb"print('\'ABC\nbb') 'ABC bbprint('哈哈哈\t啦啦啦') 哈哈哈 啦啦啦print('你好\\n可以') # 將反斜杠轉(zhuǎn)移成普通反斜杠 你好\n可以print('你好\n可以') 你好 可以注: python中也可以用r’'這種語法創(chuàng)建原生字符串,原生字符串中的字符串不進行轉(zhuǎn)義
r'\'ABC\nbb' "\\'ABC\\nbb"print(r'前邊添加一個r,字符串\n里面的\t反斜杠不生效') # 原生字符串 前邊添加一個r,字符串\n里面的\t反斜杠不生效1.4.9 字符串方法
字符串的方法很多,這里只講一些比較常用的字符串處理方法
1.4.9.1 find查找索引值
檢測 str 是否包含在 mystr中,如果是返回開始的索引值,否則返回-1
mystr.find(str, start=0, end=len(mystr))
s_find = "abcdefgabc"type(s_find) strs_find.find('d') 3s_find.find('cde') 2s_find.find('ace') # -1 就是沒找到 -11.4.9.2 小練習: 查找出“上”字的索引值,并利用切片提取出上及后面的兩個字
s_test = """仗劍紅塵已是癲,有酒平步上青天。 游星戲斗弄日月,醉臥云端笑人間。"""s_test.find('上') 12s_test[12:12+3] '上青天's_test[s_test.find('上'):s_test.find('上')+3] '上青天'1.4.9.3 count查找出現(xiàn)次數(shù)
返回 str在start和end之間 在 mystr里面出現(xiàn)的次數(shù)
mystr.count(str, start=0, end=len(mystr))
s_test = """御劍乘風來,除魔天地間, 有酒樂逍遙,無酒我亦顛, 一飲盡江河,再飲吞日月, 千杯醉不倒,唯我酒劍仙。"""s_test.count(',') 7s_test.count('劍') 21.4.9.4 replace替代
把 mystr 中的 str1 替換成 str2,如果 count 指定,則替換不超過 count 次.
mystr.replace(str1, str2, mystr.count(str1))
(替換詞,被替換詞,替換次數(shù)(默認-1為全部替換))
1.4.9.5小練習:
統(tǒng)計出桃花詩中桃花一共出現(xiàn)多少次
s10.count('桃花') 6然后把桃花詩中的標點符號都換成英文標點符號
# 這樣是可以的 s11 = s10.replace(',',',') s12 = s11.replace('。','.') s13 = s12.replace(';',';')print(s13) 桃花塢里桃花庵,桃花庵里桃花仙;桃花仙人種桃樹,又摘桃花換酒錢. 酒醒只在花前坐,酒醉還來花下眠;半醒半醉日復日,花落花開年復年. 但愿老死花酒間,不愿鞠躬車馬前;車塵馬足貴者趣,酒盞花枝貧者緣. 若將富貴比貧賤,一在平地一在天;若將貧賤比車馬,他得驅(qū)馳我得閑. 世人笑我太瘋癲,我笑世人看不穿;不見五陵豪杰墓,無花無酒鋤作田.或者這樣
# 函數(shù)式編程語法 s18 = s10.replace(',',',').replace('。','.').replace(';',';') print(s18)桃花塢里桃花庵,桃花庵里桃花仙;桃花仙人種桃樹,又摘桃花換酒錢. 酒醒只在花前坐,酒醉還來花下眠;半醒半醉日復日,花落花開年復年. 但愿老死花酒間,不愿鞠躬車馬前;車塵馬足貴者趣,酒盞花枝貧者緣. 若將富貴比貧賤,一在平地一在天;若將貧賤比車馬,他得驅(qū)馳我得閑. 世人笑我太瘋癲,我笑世人看不穿;不見五陵豪杰墓,無花無酒鋤作田.1.4.9.6 split分割符
以 str 為分隔符切片 mystr,如果 maxsplit有指定值,則僅分隔 maxsplit 個子字符串
mystr.split(str=" ", 2) s11 = 'Forget the memories, continue to be life, miss, just pass by.' s11.split(' ') ['Forget','the','memories,','continue','to','be','life,','miss,','just','pass','by.'] s10 '桃花塢里桃花庵,桃花庵里桃花仙;桃花仙人種桃樹,又摘桃花換酒錢。\n酒醒只在花前坐,酒醉還來花下眠;半醒半醉日復日,花落花開年復年。\n但愿老死花酒間,不愿鞠躬車馬前;車塵馬足貴者趣,酒盞花枝貧者緣。\n若將富貴比貧賤,一在平地一在天;若將貧賤比車馬,他得驅(qū)馳我得閑。\n世人笑我太瘋癲,我笑世人看不穿;不見五陵豪杰墓,無花無酒鋤作田。's10.split('\n') ['桃花塢里桃花庵,桃花庵里桃花仙;桃花仙人種桃樹,又摘桃花換酒錢。','酒醒只在花前坐,酒醉還來花下眠;半醒半醉日復日,花落花開年復年。','但愿老死花酒間,不愿鞠躬車馬前;車塵馬足貴者趣,酒盞花枝貧者緣。','若將富貴比貧賤,一在平地一在天;若將貧賤比車馬,他得驅(qū)馳我得閑。','世人笑我太瘋癲,我笑世人看不穿;不見五陵豪杰墓,無花無酒鋤作田。'] s10.split('\n')[-1] '世人笑我太瘋癲,我笑世人看不穿;不見五陵豪杰墓,無花無酒鋤作田。'1.4.9.7 splitlines按行分割
按照行分隔,返回一個包含各行作為元素的列表
mystr.splitlines()
split_test = """When you are old and grey and full of sleep, And nodding by the fire,take down this book, And slowly read,and dream of the soft look Your eyes had once,and of their shadows deep; How many loved your moments of glad grace, And loved your beauty with love false or true, But one man loved the pilgrim Soul in you And loved the sorrows of your changing face; And bending down beside the glowing bars, Murmur,a little sadly,how Love fled And paced upon the mountains overhead And hid his face amid a crowd of stars."""split_test 'When you are old and grey and full of sleep,\nAnd nodding by the fire,take down this book,\nAnd slowly read,and dream of the soft look \nYour eyes had once,and of their shadows deep; \nHow many loved your moments of glad grace, \nAnd loved your beauty with love false or true,\nBut one man loved the pilgrim Soul in you\nAnd loved the sorrows of your changing face;\nAnd bending down beside the glowing bars,\nMurmur,a little sadly,how Love fled\nAnd paced upon the mountains overhead\nAnd hid his face amid a crowd of stars.'split_test.splitlines() # 以換行符進行切割 ['When you are old and grey and full of sleep,','And nodding by the fire,take down this book,','And slowly read,and dream of the soft look ','Your eyes had once,and of their shadows deep; ','How many loved your moments of glad grace, ','And loved your beauty with love false or true,','But one man loved the pilgrim Soul in you','And loved the sorrows of your changing face;','And bending down beside the glowing bars,','Murmur,a little sadly,how Love fled','And paced upon the mountains overhead','And hid his face amid a crowd of stars.']split_test.splitlines(True) # 保留換行符,默認flase不保留 ['When you are old and grey and full of sleep,\n','And nodding by the fire,take down this book,\n','And slowly read,and dream of the soft look \n','Your eyes had once,and of their shadows deep; \n','How many loved your moments of glad grace, \n','And loved your beauty with love false or true,\n','But one man loved the pilgrim Soul in you\n','And loved the sorrows of your changing face;\n','And bending down beside the glowing bars,\n','Murmur,a little sadly,how Love fled\n','And paced upon the mountains overhead\n','And hid his face amid a crowd of stars.']1.4.9.8 字符串的格式化format
a = "美麗的" b = "你在哪里""你好嗎, {}張小姐{}".format(a,b) '你好嗎, 美麗的張小姐你在哪里'"你好嗎, {1}張小姐{0}".format(b,a) '你好嗎, 美麗的張小姐你在哪里'"你好嗎, {形容詞}張小姐{問她在哪}".format(形容詞=a,問她在哪=b ) '你好嗎, 美麗的張小姐你在哪里'format三種填充方法
第一種
第二種
例一 "{0}.{1}.com".format('map','baidu') #利用數(shù)字表示進行填充 'map.baidu.com'例二 u1 ='{}.{}.com' u1.format('map','baidu') 'map.baidu.com'第三種
# 給每一個格子起一個名字 人后按照名稱進行填充 "{二級域名}.{主域名}.{后綴}".format(后綴 = 'org',主域名 = 'sina',二級域名 = 'image') 'image.sina.org'總結(jié)
以上是生活随笔為你收集整理的02.Python基础_标准数据类型_数值型_字符串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 01.Python基础_菜单_快捷键_基
- 下一篇: 03.Python基础--控制流语句-顺