萬惡之源 - Python基礎數據類型一


整數

整數在Python中的關鍵字用int來表示; 整型在計算機中運於計算和比較

在32位機器上int的范圍是:  -2**31~2**31-1,即-2147483648~2147483647

在64位機器上int的范圍是: -2**63~2**63-1,即-9223372036854775808~9223372036854775807

在python3中所有的整數都是int類型. 但在python2中如果數據量比較大. 會使用long類型.

在python3中不存在long類型 整數可以進行的操作:

整數的加

a = 10
b = 20
print(a + b)

結果:
30

整數的減

a = 10
b = 20
print(b - a)

結果:
10

整數的乘

a = 10
b = 20
print(a * b)

結果:
200

整數的除

a = 10
b = 20
print(b / a)

結果:
2.0
# 注意點:當我們使用Python3的時候我們除法獲取到時浮點數,也就是小數,但是使用Python2的時候使用除法獲取的就是整數

整數的整除

a = 10
b = 20
print(b // a)

結果:
2

整數的取余

a = 5
b = 2
print(a % b)

結果:
1

整數的次方(冪)

a = 5
b = 2
print(a ** b)

結果:
25

注意點: 在Python2中存在long(長整型) 但是在Python3中long(長整型)不存在

布爾值

布爾值(bool) 判斷真假; 取值只有 True False 

轉換問題:

str ==> int
n = int('22')
print(n)
結果:
22
#注意點:字符串中的內容必須是阿拉伯數字才能強行轉換
int ==> str
n = str(22)
print(n)
結果:
22
int ==> bool
n = bool(4)  # bool(-1) 結果也是True
print(n)
結果:
True
注意點: 使用bool轉換的時候只要是非0的都為True
bool ==> int
n = int(True) # int(False) 結果是0
print(n)
結果:
1
bool ==> str
n = str(True)
print(n)
結果:
True   
注意點: 只要字符串中的內容不為空,所得到的結果就是True
str ==> bool
n = str(True)
print(n)
結果:
True 

字符串

字符串(str)   字符串, 可以保存少量數據並進行相應的操作 

在第一天的時候咱們簡單的認識了下字符串,今天我們好好的來認識一下這個讓你又喜又優的字符串

字符串是可以存儲一些數據,方便我們使用

字符串加

a = '世界'
b = '你好'
print(a + b)
結果:
世界你好

通過剛剛我們的測試發現字符串也是可以進行加法操作的,字符串相加其實有個專業的名詞 --- 字符串拼接;相加的規則就是必須都是字符串才能相加

字符串中是不能進行減法和除法操作的,通過這句話就能得知字符串是可以進行乘法操作的,我們立馬來看一下:

字符串乘

a = '堅強'
print(a * 8)
結果:
堅強堅強堅強堅強堅強堅強堅強堅強

字符串的乘法就是將多個字符串拼接到一起,乘法的規則:只能是字符串和數字相乘

 索引(下標)

大家在上學的時候就會發現在一個班有的同學的名字是一樣的,最后大家為了好區分就有了外號,我們每個人都有個學號,其實學校就是為了防止重名找錯人,

學號就是一種能夠保證唯一且准確的手段,這種手段在計算機中存在,這種手段叫做索引,也有人稱之為下標.注意:索引如果操作有誤就會報錯

 

圖上就是對"meet"字符串進行索引排號,其實圖上有一點大家不難看出m對應的是數字0,如果讓我們人來給排號.下意識的會從1開始.

因為我們從小的時候就是從1開始數數的,但是在計算機中數數確實要從0開始,其實這個點也是對程序的入門.

以后在碰到這種類似的問題我們就知道是從0開始計數,廢話不多說我們來看看,我說的到底行不行.

name = 'meet'
# 索引  0123
print(name[0])

結果:
m  

細心的老鐵們會發現這[ ]是干啥的,這個是一個查找,我不知道字符串中第一個是什么,但是我知道第一個的索引,我就可以通過這個方式來查看

比方:我不知道這個學生叫什么,但是我知道他的學號.我也可以通過學號找到這個同學.

圖上這個是從左到右的一種排序,其實還有一種從右像左的排序,看下圖:

這個查看和上邊的一樣,只不過是索引排序的方式不一樣,他這次的排列序號是從右向左並且還是以-1開始,這里的-1其實就是表示我們的倒數第一個

-2表示倒數第二個,這樣排列,如果我們的字符串比較長的時候想要獲取最后一個就完全可以使用-1,看以下示例:

name = 'meet'
# 索引 -4-3-2-1
print(name[-1])

結果:
t

告訴大家一個小技巧,當開始的是我們不能明確的區分這個字符串中的每個索引的時候,我們就先把每個字母對應的索引寫下來,這樣就方便我們查找

上邊我們說完了索引,你們就以為完事了是嗎?不是滴,咱們還有來個內容沒有進行講解,分別是切片和步長

切片

切片又是什么呢?我們先來看一個示例:

name = 'meet'
# 索引  0123
print(name[0:3])

結果:
mee

[第一個位置是開始:第二個位置是終止]中間必須使用分號,這樣的寫法就是從索引0開始獲取到索引3結束  

這個結果是不是和大家想的有點出入啊,大家肯定認為獲取到的內容是meet,但是為什么是mee呢,因為終止的索引是不包含的獲取的是這個區間的內容

想想咱們在買肉的時候,有一個塊整肉,這塊整肉就后邊有點肥,不想要是不是就讓老板給切掉了,我們就買前邊的部分啊.在生活中這種神操作就是切片

我也知道你們剛接過這些東西,使用起來不是很熟悉,尤其是切片這部分,在悄悄的告訴你們個小技巧,下次當看到切片中終止位置的時候把這個數減一就ok啦

步長

步長又是什么呢?先看示例:

name = 'meet'
# 索引  0123
print(name[0:3:1])

結果:
mee 

 

發現我在中括號中最后一個位置寫了一個東西,也沒什么變化,是的沒有變化,因為我們不寫的時候他默認就是1,我們換個數字在來看看

name = 'meet'
# 索引  0123
print(name[0:3:2])

結果:
me  

這又是啥情況呢?想想我開始告訴大家的中括號里第一個參數是起始位置,第二參數是終止位置,第三個參數現在告訴大家是步長(每次走幾步)

 

當步長設置為2的時候,咱們只需要用起始位置0加上步長2,結果也就2然后在把索引為2的找到,2在加上步長2就是4,當要查找索引4是發現終止索引就是3,

所有不會進行查找.最終的結果就是me.

練習1

s = 'Python最NB'

獲取s字符串中前3個內容

獲取s字符串中第3個內容

獲取s字符串中后3個內容

獲取s字符串中第3個到第8個

獲取s字符串中第2個到最后一個

獲取s字符串中第1,3,5個內容

獲取s字符串中第2,4,6個內容

獲取s字符串中所有內容

獲取s字符串中第4個到最后一個,每2個取一個

獲取s字符串中倒數第5個到最開始,每3個取一個  
s = 'Python最NB'

# 獲取s字符串中前3個內容
print(s[0:2])
# 獲取s字符串中后3個內容
print(s[6:9])
# 獲取s字符串中第3個到第8個
print(s[2:8])
# 獲取s字符串中第2個到最后一個
print(s[2:])
# 獲取s字符串中第1,3,5個內容
print(s[0:6:2])
# 獲取s字符串中第2,4,6個內容
print(s[1:7:2])
# 獲取s字符串中所有內容
print(s[:])
# 獲取s字符串中第4個到最后一個,每2個取一個
print(s[3::2])
# 獲取s字符串中倒數第5個到最開始,每3個取一個
print(s[-5::-3])
答案  

練習2

判斷⼀句話是否是回⽂. 回⽂: 正着念和反着念是⼀樣的. 例如, 上海⾃來⽔來⾃海上

練習3

有字符串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" 

字符串方法詳解

全部大寫

name = 'alex'
new_name = name.upper()
print(new_name)
# 把這個字符串全部變成大寫

全部小寫

name = 'ALEX'
new_name = name.lower()
print(new_name)
# 把這個字符串全部變成小寫  

應用場景:

# 字符串大小寫做驗證碼
y_z_m = 'O98k'
y_z_m_input = input("請輸入驗證碼(O98k)")
user = input('請輸入賬號:')
pwd = input('請輸入密碼:')
if y_z_m == y_z_m_input:
    if user == 'alex' and pwd == '8520':
        print('登陸成功!')
    else:
        print('登錄失敗')
else:
    print('驗證碼錯誤!')

練習

將 name 變量對應的值全部變成大寫,並輸出結果
將 name 變量對應的值全部變成小寫,並輸出結果

以什么開頭  

name = 'alex'
new_name = name.startswith('a')
if new_name:
    print('是以a開頭')
# 判斷這是不是字符串是不是以a開頭的

以什么結尾  

name = 'alex'
new_name = name.endswith('x')
if new_name:
    print('是以x結尾')
# 判斷這是不是字符串是不是以x結尾的

統計出現的次數

name = 'alexdasx'
new_name = name.count('a')
print(new_name)
# 統計name這個字符串中a出現的次數  

練習

判斷 name 變量是否以 "al" 開頭,並輸出結果
判斷name變量是否以"Nb"結尾,並輸出結果
判斷name變量對應的值字母"l"出現幾次,並輸出結果

字符串替換  

name = 'alexdasx'
new_name = name.replace('sx','sb')
print(new_name)
# 替換字符串中的內容

去除頭尾兩邊的空格  

name = ' alexdasx '
new_name = name.strip()
print(new_name)

# 去除頭尾倆遍的空格和換行符

分割

name = 'alexdasx'
new_name = name.split("x")
print(new_name)
#通過x將字符串name進行切割

字符串格式化

name = 'alexdasx{}'
new_name = name.format('說的對')
print(new_name)
# 字符串格式化 

練習  

將 name 變量對應的值中的 所有的"l" 替換為 "p",並輸出結果 
將name變量對應的值中的第一個"l"替換成"p",並輸出結果
將 name 變量對應的值根據 所有的"l" 分割,並輸出結果。
將name變量對應的值根據第一個"l"分割,並輸出結果。 
請輸出 name 變量對應的值的第 2 個字符? 
請輸出 name 變量對應的值的前 3 個字符? 
請輸出 name 變量對應的值的后 2 個字符?

is系列

 判斷是不是十進制,返回的是布爾值

name = 'alexdasx'
new_name = name.isdecimal()
print(new_name) # 判斷是不是十進制,返回結果是布爾值

判斷是不是數字和字母,返回的是布爾值

name = 'alex7dasx'
new_name = name.isalnum()
print(new_name)
# 判斷是不是字母和數字,返回結果是布爾值

判斷是不是純字母及漢字,返回的是布爾值

name = 'alexdasx'
new_name = name.isalpha()
print(new_name)
# 判斷是不是字母和漢字,返回結果是布爾值

練習

輸⼊⼀個字符串,要求判斷在這個字符串中⼤寫字⺟,⼩寫字⺟,數字, 共出現了多少次,並輸出  

基礎數據補充的時候,給大家講解

首字母大寫
name = 'alexdasx'
new_name = name.capitalize()
print(new_name)

查找下標
name = 'alexdasx'
new_name = name.find('e')
print(new_name)
# 通過元素查找下標,不存在就返回-1

name = 'alexdasx'
new_name = name.index('e')
print(new_name)
# 通過元素查找下標,不存在就報錯

每個單詞首字母大寫
name = 'alex_wusir'
print(name.title())

內容填充
name = 'alex_wusir'
print(name.center(50))

大小寫反轉
name = 'alex_wusir'
print(name.swapcase())

獲取長度

目前我們寫的內容還比較少,如果有一個很長很長的字符串,如果要是一個一個數是不是很累呢,Python給咱們提供了一個方法就是獲取長度的.

長度獲取示例:

name = "Meet"
print(len(name))

結果:
4 

我們現在能夠輕松的獲取到到長度,現在我有這么一個字符串 name = "Meet",請使用while循環獲取到字符串中每個元素並打印,效果圖入下:

name = "Meet"

count = 0
while count < len(name):
    print(name[count])
    count = count + 1

以上這個寫法是沒有問題的,你們來看這個會不會簡單些

name = "Meet"
for i in name:
    print(i)

上邊的這個東西叫做for循環, for是關鍵字    i是一個變量    后邊的name是要被循環的內容,他會把這個name指向的字符串里的每個元素打印出來

 for循環是可以循環的數據結構:

  • 字符串(str)
  • 列   表(list)
  • 元   祖(tuple)
  • 字   典(dict)
  • 集   合(set)

唯獨不能進行循環的就是 整型(int)和布爾值(bool)

  


免責聲明!

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



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