1. 程式人生 > >Python-字符串及列表操作-Day2

Python-字符串及列表操作-Day2

包括 -o 十六進制 tag 1.4 獲取 sta sele right

1.數據類型

1.1 變量引出數據類型

變量:用來記錄狀態
變量值的變化就是狀態的變化,程序運行的本質就是來處理一系列的變化

1.2 五大基本數據類型:

  • 數字
  • 字符串
  • 列表
  • 元組
  • 字典

1.2.1 數字

    二進制:0101010     #對應的調用bin()
    八進制:1-7         #對應的調用oct()   
    十六進制:0-9abcdef #對應的調用hex()
  • 整型
  • 長整型
  • 浮點
  • 布爾
  • 復數
1.2.2 整型

內置函數是:int()
int(a,base=b)
a是變量或者是"a(未定義變量)"
base=b b告訴計算機以什麽進制進行運算
一切皆對象
age = 10 ---> int(10)--->init

--->調用
以上說明所有的變量最終都是通過對象來生成創建的
python3中int()已經沒有區分整型與長整型

1.2.3 布爾

True 和 False
1和0

1.2.4 浮點float

Python的浮點數就是數學中的小數

1.2.5 復數

復數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是復數的實數部分,y是復數的虛數部分,這裏的x和y都是實數。
註意,虛數部分的字母j大小寫都可以,

1.3 + 2.5j == 1.3 + 2.5J
True

1.3 字符串

字符串的定義:
msg="hello world"

1.3.1 字符串模塊方法1:

#首字母大寫:
print(msg.capitalize())

#按照字符串是20個 居中顯示
print(msg.center(20,‘*‘))

#字符串中包含所選字符的計數 模式=(‘字符‘,start=1,end=2) 
print(msg.count(‘l‘,1,3))
其中包含所選的字符是通過start和end字符位置確定的

#按照字符提取,[]內數字代表字符串的字符下標
print(msg[4])

#判斷一個字符串是否是以‘d‘結尾的
print(msg.endswith(‘d‘))

#指定空格的個數 expandtabs只是針對tab鍵或者空格鍵
msg1=‘a\tb‘#\t
print(msg1)
print(msg1.expandtabs(10))

#找到對應字符的索引
print(msg.find(‘d‘))

#沒有找到就直接輸出-1
print(msg.find(‘z‘))
print(msg.find(‘d‘,1,11))

print(‘{0},{1}‘.format(‘name‘,‘age‘))
print(‘{name}‘.format(name = "stone"))

1.3.2 字符串模塊方法2:

index
索引:查看指定字符的索引

isalnum:  
判斷字符都是數字

msg3=‘123a‘   
isalpha:  
字符都是字母

isdecimal:  
判斷是否是十進制數字

## isdigit(): ## 
判斷是否是整型數字

isnumeric:  
判斷是不是數字  

isidentifier:  
判斷字符串內是否包含關鍵字;

islower():  
判斷字符串是否是小寫 

isspace():  
判斷字符串是否是空格

istitle():   
是否是標題 單詞首字母必須是大寫的 其他的字符不能是大寫的,

isupper():  
是否都是大寫

lhust():   
左對齊  
print(msg.ljust(10,‘*‘))

rjust():  
右對齊

lower():  
將所有的大寫轉換成小寫

upper():  
將所有的小寫轉換成大寫

lstrip():  
左邊去除空格

rstrip():  
去除右邊的空格

maketrans():  
將字符串進行替換 替換的字符串需要跟等長

yfill():  
從右側填充  

1.3.3 字符串常用的操作

  • 移除空白 strip():去除空白
  • 分割 split()
  • 長度 len()
  • 索引 msg[3]:字符索引
  • 切片 msg[0:3]:字符串切片 msg[2:7:2]:按步長取

2. 運算符

2.1 算數運算

技術分享圖片

2.2 比較運算

技術分享圖片

2.3 賦值運算

技術分享圖片

2.4 位運算

技術分享圖片
註: ~ 舉例: ~5 = -6 解釋: 將二進制數+1之後乘以-1,即~x = -(x+1),-(101 + 1) = -110

按位反轉僅能用在數字前面。所以寫成 3+~5 可以得到結果-3,寫成3~5就出錯了

2.5 邏輯運算

技術分享圖片

and註解:

在Python 中,and 和 or 執行布爾邏輯演算,如你所期待的一樣,
但是它們並不返回布爾值;而是,返回它們實際進行比較的值之一。  
在布爾上下文中從左到右演算表達式的值,如果布爾上下文中的所有
值都為真,那麽 and 返回最後一個值。  
如果布爾上下文中的某個值為假,則 and 返回第一個假值  

or註解:

使用 or 時,在布爾上下文中從左到右演算值,就像 and 一樣。
如果有一個值為真,or 立刻返回該值
如果所有的值都為假,or 返回最後一個假值
註意 or 在布爾上下文中會一直進行表達式演算直到找到第一個
真值,然後就會忽略剩余的比較值

and-or結合使用:

結合了前面的兩種語法,推理即可。
為加強程序可讀性,最好與括號連用,例如:

(1 and ‘x‘) or ‘y‘

2.6 成員運算

技術分享圖片

2.7 身份運算

技術分享圖片

3. for循環

寫程序最忌諱的就是重復代碼!!!

循環10次:

for i in range(10):
    print(i)
run執行輸出:0 1 2 3 4 5 6 7 8 9 0 

如果不想從0開始執行:

for i in range(1,10):
    print(i)   
run 執行結果:1 2 3 4 5 .. 9
range(1,10):表示從1開始一直到9;
range(2,7):表示從2開始一直到6;

3.1 猜年齡程序:

#!/usr/bin/env python
right_age = 60
for i in  range(3):
    age = int(input("print you guess age:"))
    if age == right_age:
        print("guess right!")
        break
    elif age > right_age:
        print("guess smaller!")
    else:
        print("guess bigger!")
else: #如果for循環正常結束,就執行下面的語句
    print("too many times!!!") # == exit("too many attempts") 

3.2 for循環else語法測試:

for i  in range(10):
    print(i)
    if i == 5:
        print("5退出!")
        break
else:
    print("循環正常退出!")

執行結果

3.3 for循環-嵌套循環:

for i in range(10):
    print(i)
    for j in range(10):
        if j < 6:
            #break # 跳出當前層循環
            continue #跳出當次循環,繼續下一次循環
        print(i,j)

3.4 while 循環

死循環
判斷年齡,使用while+條件執行循環。

#!/usr/bin/env python
age=56
count = 0      # 計數
while count<3: # 判斷執行三次跳出loop
    guess = input("guess age:")
    if guess.isdigit():
        guess = int(guess)
    else:
        continue
    if guess == 56:
        print("OK")
        break
    elif guess > age:
        print("bigger")
    else:
        print("smaller")
    count += 1

4. 列表

4.1 列表功能

定義一個列表:names = []
或者name = list(1,2,4)
names = []最終調用的就是list這個類

4.1.1 增 append

names.append()
例子:names.append("zheng")  
print(names)  
names.insert(2,"app")在指定的index之前插入  

4.1.2 刪 del pop() remove()

刪除的三種方式:
names.remove()
names.pop()
del names[index]
names.remove("app"):刪除找到的第一個key  
del names[3]:直接指定索引刪除  
names.pop(3):指定索引刪除,不指定索引直接刪除最後一個。   

4.1.3 改

names[1] = "wang" 直接指定索引替換成想要的  
print(names)

4.1.4 查

print(name[-2])        #直接指定索引取出  
print(name[0::2])       #按照步長取值  
print(name[-3:])        #取最後三個元素  
print(name[:3])         #取前三個元素  
print(name.index("wang"))#取元素的下標  

4.1.5 計數 count()

print("count",names.count("wang"))# 獲取  

4.1.6 清空 clear()

name.clear()            #清空列表  

4.1.7 擴展合並 extend()

name.extend("liang")    #作用是兩個列表的合並  
name1=["hello","nihao"]  
name2=["ca","haha"]  
name1.extend(name2)     #列表擴展  
name1  
[‘hello‘, ‘nihao‘, ‘ca‘, ‘haha‘]  

4.1.8 排序 sort()

name.sort() #排序

4.1.9 反轉 reverse()

name.reverse()          #反轉  
python3中列表中必須統一 元素中字符串與數字不能混用  

4.1.10 copy()

copy語法重新制定內存與原內容內存id存儲位置不同

4.1.11 列表的長度len()

name = [11,22,33]
print(len(name))
3

4.3 循環一個列表

for i in names:
    print(i)
enunerate(name):

4.4 列表的判斷

len(a)
# 判斷一個列表的長度
val >=0 and val <len(a)

4.5 數據類型轉換內置函數匯總

技術分享圖片

5 Python整理-小記

5.1 執行腳本傳入參數

Python有大量的模塊,從而使得開發Python程序非常簡潔。類庫有包括三中:

Python內部提供的模塊
業內開源的模塊
程序員自己開發的模塊

Python內部提供一個 sys 的模塊,其中的 sys.argv 用來捕獲執行執行python腳本時傳入的參數

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import sys
 
print sys.argv  

 

5.2 sys os 模塊小記

Python的強大之處在於他有非常豐富和強大的標準庫和第三方庫,幾乎你想實現的任何功能都有相應的Python庫支持,以後的課程中會深入講解常用到的各種庫,現在,我們先來象征性的學2個簡單的。

5.2.1 sys 模塊

sys 
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
print(sys.argv)

#輸出
$ python test.py helo world
[‘test.py‘, ‘helo‘, ‘world‘]  #把執行腳本時傳遞的參數獲取到了

5.2.2 os模塊

os
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import os
 
os.system("df -h") #調用系統命令

5.2.3 完全結合一下  

import os,sys
 
os.system(‘‘.join(sys.argv[1:])) #把用戶的輸入的參數當作一條命令交給os.system來執行

Python-字符串及列表操作-Day2