1. 程式人生 > >python學習2(轉載)

python學習2(轉載)

一、流程控制之while迴圈

語法:
while 條件:
  迴圈體
else:
  else語句(當條件不成立的時候執行這裡 和break沒關係)


判斷條件是否成立。 如果成立執行迴圈體。然後再次判斷條件,。。。。。直到條件不成立的時候跳出迴圈

break :終止當前本層迴圈(直接跳到迴圈的末尾)

while True:
content = input("請輸入你要噴的內容,輸入Q停止噴人:")
if content == 'Q':
# 退出迴圈
break # 徹底的打斷當前本層迴圈
else:
print("傳送給打野", content)

break示例

複製程式碼
1 while True:
2      content = input("請輸入你要噴的內容,輸入Q停止噴人:")
3      if content == 'Q':
4          # 退出迴圈
5           break # 徹底的打斷當前本層迴圈
6      else:
7          print("傳送給打野", content)
複製程式碼

continue:停止當前本次迴圈(跳到迴圈的開頭)

num = 1
while num <= 10:
if num == 8:
num = num + 1
continue # 在continue之前改變迴圈變數
print(num)
num = num + 1

複製程式碼
1 num = 1
2  while num <= 10:
3      if num == 8: 
4          num = num + 1
5          continue # 在continue之前改變迴圈變數
6      print(num)
7      num = num + 1
複製程式碼

pass 不表示任何內容,只是為了程式碼完整性佔位而已

a = 1
while a < 11 :
if a == 8 :
pass
else:
print("你好")
a = a + 1
print(a)

複製程式碼
1 a = 1
2 while  a < 11 :
3     if   a == 8 :
4         pass
5     else:
6         print("你好")   
7     a = a + 1
8     print(a)
複製程式碼

執行結果:

二、格式化輸出

格式化輸出用的是佔位符——用%表示

%s 表示字串佔位符

%d 表示數字佔位符

在用時只要在末尾加%加對應資料型別的變數即可

1 print("我叫%s,今年%d歲了,喜歡%s" % ("alex", 56, "銀王"))
1 print("我叫%s,今年%d歲了,喜歡%s" % ("alex", 56, "銀王"))

一句話中使用了格式化輸出. 那麼%就是佔位。如果你的百分號不是作為佔位。 要寫成%%

1 print("你的名字是%s,你已經完成了今天80%%的工作" % name)
1 print("你的名字是%s,你已經完成了今天80%%的工作" % name)

三、基本運算子

計算機可以進行的運算分為:算術運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算(後三個後面學)

算術運算

算術運算子:

+  加, -   減,*   乘, /   除, %  取模 返回除法的餘數,**  冪, // 取整除,返回商的部分

 

比較運算

比較運算子:

== 相於, != 不等於, <> 不等於, > 大於, < 小於, >= 大於等於, <= 小於等於

 

賦值運算

賦值運算子:

=  單個等號表示賦值,雙等號表示比較   a = 10表示把10 賦值給變數a

+=     a = a+1 <=> a += 1

-=      a = a-1 <=> a -= 1

*=      a = a*c <=> a *= c

/=           a = a/c <=> a /= c

%=         a = a%c <=> a %= c

**=    a = a**c <=> a **= c

//=     a= a//c <=> a //= c

邏輯運算

邏輯運算子:

and   兩邊都為真才真(一假則假)

or   兩邊都為假才假(一真則真)

not  取反

注意: 1、 python中邏輯運算的本質是取運算子兩邊的一個值返回,而且存在短路邏輯,即false開頭的and都會被處理成false  true開頭的or都會被處理成true

       2、0相當於false,1相當於true

       3、運算子優先順序順序 從高到低     () -> not -> and -> or

print(0 or 1) # 1
print(0 or 2) # 2
print(1 or 0) # 1
print(0 and 1) # 0
print(1 and 0) # 0
print(1 or 2 and 3) # 1
print(0 or 1 and 4 > 3 or 5 < 7 and 4) # 1

複製程式碼
1 print(0 or 1) # 1
2 print(0 or 2) # 2
3 print(1 or 0) # 1
4 print(0 and 1) # 0
5 print(1 and 0)  # 0
6 print(1 or 2 and 3) # 1
7 print(0 or 1 and 4 > 3 or 5 < 7 and 4) # 1
複製程式碼

四、字串編碼

1. ASCII       8bit   1byte    記住:大寫字母A從65開始,小寫字母a從97開始,數字0從48開始
2. GBK        16bit    2byte
3. Unicode   32bit   4byte
4. UTF-8 可變長度的unicode
  英文:   8bit   1byte
  歐洲文字: 16bit    2byte
  中文 :  24bit   3byte

補充:

in 和 not in 

可以判斷xxx字串是否在xxxx字串中

1 content = input("輸入內容")
2 if   "擦" in content or  "滾"  in content :
3 print("你輸入的文字含有不合法內容")


python基本資料型別回顧

1. int 整數
2. str 字串. 不會用字串儲存大量的資料
3. bool 布林值. True, False
4. list 列表(重點) 存放大量的資料
5. dict 字典 key: value 查詢會比較快
6. set 集合 無序 不能重複
7. bytes 一堆位元組。 我們程式處理的最小單位
8. tuple 元組 不可變的列表

 

一、int(整數)

對於一個數字除了運算幾乎沒有其他的操作,如果想找的話倒是有一個bit_lenght(),可以用來計算這個數的二進位制長度

 

二、bool 布林值

bool沒有什麼方法,這裡說一下資料型別轉換問題

x 轉成 y型別  => y(x)

比如:

x 轉成 int  => int(x)

x 轉成 str => str(x)

x 轉成 bool => bool(x)

在bool轉成int時,int(Ture) 是1 int(False)是0

 

三、字串

字串由 ', ", ''', """組成

字元:你能看到的單一文字元號

字串:字元連成串,有固定順序的

注意: 字串是一個不可變的資料型別,不可變資料型別還有數字、元組

什麼是可變資料型別和不可變資料型別?

  我們知道資料在建立的的時候都會申請一個記憶體空間用來儲存它,變數名只是指向這個記憶體空間。對於不可變資料型別來說,對變數的操作會改變它的記憶體空間(id),而對可變資料型別的操作則不會改變記憶體空間id

>>>a = 1
>>>id(a)
4297537952
>>> a = a + 1
>>> id(a)
4297537984

#列表
>>>line=[1,2,3,4]
>>>id(line)
4392665160
>>>line[1] = 5
>>>line
[5,2,3,4]
>>>id(line)
>>>4392665160

複製程式碼
 1 >>>a = 1
 2 >>>id(a)
 3 4297537952
 4 >>> a = a + 1
 5 >>> id(a)
 6 4297537984
 7 
 8 #列表
 9 >>>line=[1,2,3,4]
10 >>>id(line)
11 4392665160
12 >>>line[1] = 5
13 >>>line
14 [5,2,3,4]
15 >>>id(line)
16 >>>4392665160
複製程式碼

1.1 索引

索引就是字串中每個元素所對應的位置,索引從0開始

1 >>>str = hello 
2 >>>str[o] = h
3 >>>str[1] = e
4 >>>str[-1] = o
1 >>>str = hello 
2 >>>str[o] = h
3 >>>str[1] = e
4 >>>str[-1] = o

 

1.2 切片

切片語法:

str[start:end:step]

start是開始索引

end是結束索引,但結束索引對應元素取不到(顧頭不顧腚)

step 表示步長,即多少元素中取一個,如果是2的話就是兩個元素中取一個

        步長是整數表示從左往右取,是負數表示從右往左取,預設是1

>>>str = "hello world"
>>>str[0:3]
hel
>>>str[0: ]
hello world
>>>str[-3:-1]
rld
>>>str[ : :-1]
dlrow olleh

複製程式碼
1 >>>str = "hello world"
2 >>>str[0:3]
3 hel
4 >>>str[0: ]
5 hello world
6 >>>str[-3:-1]
7 rld
8 >>>str[ : :-1]
9 dlrow olleh
複製程式碼

 

1.3 大小寫轉來轉去

s ="hello old boy"

s.capitalize()  將句子首字母轉成大寫

s.title()  將特殊符號隔開的單詞首字母都轉為大寫

s.upper()  全部轉為大寫

s.lower()  全部轉為小寫

s.casefold()   全部轉為小寫  和lower()的區別是 lower()對某些字母支援不夠好,而這個支援所有字母,比如東歐一些字母

s.swapcase()  大小寫互相轉換

 

1.4 切來切去

str = "old boy "

str.center(10 , *)  居中     把str擴充套件到長度為10,用*填充

str.strip()  去掉字串兩端的空白(包括空格,換行符,\t),

str.lstrip() 去掉左邊的空白

str.rstrip() 去掉右邊的空白

str.strip("s")  去掉兩邊的指定字元序列,只要是兩端有序列中的內容都會去掉

1 name = "aleX leNb"
2 print(name.strip("ab")) #移除開頭的a和結尾的b
1 name = "aleX leNb"
2 print(name.strip("ab")) #移除開頭的a和結尾的b

str.replace("old", "new")  字串替換 把old替換成new

str.split(" x ")   根據 x 對字串進行切割,得到的是一個列表,如果切割符在左右兩端. 那麼 一定會出現空字串。(深坑請留意) 

如果split()沒給值,會根據空白切割得到一個列表,並將空字串從列表中刪除(在操作檔案時有時候會很方便)

 

1.5 格式化字串方式二

使用.format()方法

# 格式化輸出
s12 = "我叫%s, 今年%d歲了, 我喜歡%s" % ('sylar', 18, '周杰倫')
# 之前的寫法
print(s12)
s12 = "我叫{}, 今年{}歲了, 我喜歡{}".format("周杰倫", 28, "周潤發")
# 按位置格式化
print(s12)
s12 = "我叫{0}, 今年{2}歲了, 我喜歡{1}".format("周杰倫", "周潤發", 28)
# 指定位置
print(s12)
s12 = "我叫{name}, 今年{age}歲了, 我喜歡{singer}".format(name="周杰倫", singer="周潤
發", age=28)
# 指定關鍵字
print(s12)

複製程式碼
 1 # 格式化輸出
 2 s12 = "我叫%s, 今年%d歲了, 我喜歡%s" % ('sylar', 18, '周杰倫') 
 3 # 之前的寫法
 4 print(s12)
 5 s12 = "我叫{}, 今年{}歲了, 我喜歡{}".format("周杰倫", 28, "周潤發") 
 6 # 按位置格式化
 7 print(s12)
 8 s12 = "我叫{0}, 今年{2}歲了, 我喜歡{1}".format("周杰倫", "周潤發", 28) 
 9 # 指定位置
10 print(s12)
11 s12 = "我叫{name}, 今年{age}歲了, 我喜歡{singer}".format(name="周杰倫", singer="周潤
12 發", age=28) 
13 # 指定關鍵字
14 print(s12)
複製程式碼

1.6 查詢

str = "我喜歡python"

str.startswith("x")   是否以 x 開頭

str.endswith("x")    是否以 x 結尾

str.count("x")       x在str中出現的次數

str.find("x")     查詢str中是否存在 x ,有就返回索引值,沒有返回-1

str.find("x", a , b)  切片查詢

str.index("x")   查詢 x 的索引值,有就返回,沒有報錯

 

1.7 條件判斷

str.isalnum() 是否由字母和數字組成

str.isdigital() 是否由數字組成

str.isdecimal() 檢查字串是否只包含十進位制字元

str.isnumeric() 是否由數字組成,比較厲害,中文數字都能識別

str.isalphl() 是否由字母組成

 

1.8 計算字串長度

len() 函式

str = "我是不是你最愛的人"

print(len(str))  #輸出str長度

 

1.9 迭代

for 變數 in 可迭代物件:

  迴圈體(break,continue)
else:

  else語句

'''用for迴圈對s="321"進行迴圈,列印的內容依次是:"倒計時3秒","倒計時
2秒","倒計時1秒","出發!"。
'''
s = "321"
for c in s:
# print("倒計時%s秒" % c)
print("倒計時{}秒".format(c))
else:
print("出發")