banner
苍术

苍术

不探索,无进步 [email protected]

從C++到Python

環境安裝#

  1. 進入'https://www.jetbrains.com/pycharm/' 下載 pycharm 並安裝。
  2. 根據引導安裝應用並登入,創建你的第一段 python 代碼。

差異#

  • 毋庸置疑,py 比 cpp 更簡單,寫代碼形式上亦是如此,大體上差別如下:
      1. 不需要頭文件
      1. 主函數沒有函數名
      1. 不需要 {}
      1. 不需要;

接下來,從最簡單的輸出開始;

基本知識#

輸入輸出#

輸出函數 print () 語法就是:

print()

輸入函數是 input (),功能是接收用戶輸入的內容,語法是:

input(輸出的內容)

舉例:接收用戶輸入的密碼並打印:

n = input("請輸入密碼:")	#把輸入內容賦給n,用 n 接收一下
print(n)	#打印n

在 Python 裡,“#” 表示註釋,“#” 後面的東西不會被執行。

提示信息
請輸入密碼:123
123

變量#

  • 合法的標識符:大小寫字母,數字 (不能開頭), 下劃線。
  • 沒有長度限制。

建議望文生義,函數名、變量名等命名方法各有區分:

  1. 包名:全小寫,例如 time ;
  2. 類名:每個單詞的首字母大寫,其他的小寫,簡稱大駝峰命名,例如 HelloWorld ;
  3. 變量名/函數名:第一個單詞的首字母小寫,後面的單詞的首字母大寫,簡稱小駝峰命名,例如 helloWorld ;
  4. 常量:全大寫,例如 HELLO 。
  5. 其他命名方式,比如 hello_world 。

數據類型#

與 c++ 不同,python 不需要類型說明符,在設置時會自行分配。(不是沒有!!!)

  1. 整型
  2. 浮點型
  3. 字符串
  4. bool 類型
  5. None 是一個單獨的數據類型
  6. 列表、元組、字典、集合也是常見的數據類型
  • 類型轉換:
int() #被轉換的必須為全數字的字符串
str()
float() #被轉換的必須為全數字的字符串
  • 獲取類型信息
type() #返回的是對象的類型
type().__name__

sinstance(,)  #常用來判斷數據類型,返回bool

例子:

f = 30
print(type(f))
print(type(f).__name__) 
print(isinstance(f,int))

輸出:

f = 30
print(type(f))
print(type(f).__name__)
print(isinstance(f,float))

運算符#

運算符可以分為很多 4 類

  1. 一般運算符

+,-,*,/(真除法),//(地板除,舍去小數部分),%(取餘數),**(幂運算)

  1. 赋值运算符

=,+=,-=,*=,/=,%=,**=

連續賦值:a=b=c=d=10

  1. 布爾運算符

== (等於),!=(不等於), >= ,<= ,>, <

4. 邏輯運算符

主要有 not、and 和 or 三類,又稱非、與和或

and:前後都為真則為真
or:有一個為真則為真
not: 非真,非假

例子:

a = 10
b = 20
c = 30
d = 40
n1 = a > b and a < c    #a>b為假,a<c為真,假與真為假
n2 = not a < c   #a<c為真,非真則為假
n3 = a > b or a < c     #a>b為假,a<c為真,假或真為真
print(n1,n2,n3)

輸出;

False False True

流程控制#

條件分支 (if elif else)#

例子:

s = int(input("請輸入分數:"))
if 80 >= s >= 60:
    print("及格")
elif 80 < s <= 90:
    print("優秀")
elif 90 < s <= 100:
    print("非常優秀")
else:
    print("不及格")
    if s > 50:
        print("你的分數在60分左右")
    else:
        print("你的分數低於50分")

輸出:

請輸入分數:55
不及格
你的分數在60分左右

循環流程#

  1. while 循環

語法:

while 布爾表達式: 
	代碼塊

只要條件 (布爾表達式) 為真就執行裡面的代碼塊。

舉例:比如說輸入一個整數並計算各位和,例如輸入 321,那麼各位之和則為 6。

# 請輸入一個整數,並計算各位和 如:321=6

n = int(input("請輸入一個整數:"))  # 將字符串轉為整型

# sums累加器:m=10 m=10+5

sums = 0

while n != 0:  # 32 #3
    sums = sums + n % 10  # sums=1+2=3+3=6
    n = n // 10  # 32
print(sums)

輸出:

請輸入一個整數:2345
14
  1. for 循環

語法:

for 變量 in 可迭代對象:
	代碼塊

例子:

l=[3,2,1]
for n in l:
	print("1")

輸出:

1
1
1
  1. range

for 循環經常會搭配 range 來使用,range 是一個可迭代對象,range 的語法如下:

range(start=0,stop,step=1)

Range 對象返回一個對象,該對象按步生成從開始 (包含) 到結束 (排除) 的整數序列。Range (i, j) 產生 i, i+1, i+2,…j - 1。Start 默認為 0,stop 省略!

Range (4) 產生 0,1,2,3。這些正是包含 4 個元素的列表的有效索引。

當給出 step 時,它指定增量 (或減量)。

  1. continue break

continue 跳過本次循環,後面的循環繼續執行

break 終止循環

列表 (List)#

列表是可以同時存放任何數據,包括整型,浮點型,字符串,布爾型等等,是常用的數據類型之一。

列表的創建#

列表也是一個可迭代對象
1. 普通形式
        l = [1,2,3,4,5] ---整型列表
        l = ["a","b","c"] ---字符串列表
        l = [True,False,1>2,5<6]---布爾列表
2. 混合列表
		l = [1,2.5,"a",True]
3. 空列表
		l = []

從列表中獲取數據#

列表是有下標的,並且下標從 0 開始,獲取方法類似數組

但是列表的下標正序從 0 開始,倒敘從 - 1 開始

print (List) 順序輸出整個列表

列表中數據交換#

例子:

l = [1, 2, 3, 4, 5]  # 下標/索引:0開始
l[2], l[3] = l[3], l[2]
print(l)

Output:

[1, 2, 4, 3, 5]

向列表添加元素#

append(project) #列表尾插對象(作為整體)
extend(project) #列表尾插可迭代對象 eg:兩列表相連接
insert(num,project) #指定下標位置添加對象(作為整體)

列表刪除元素#

clear()#清空列表(列表還在,沒被刪除)
pop()#刪除下標指定的元素,如果不加下標則刪除最後一個元素
remove()#刪除(正序第一個)指定的對象
del()#刪除變量(整個列表)或列表指定下標元素的值(補位)

例子:

l = [1, 2, 3, 4, 5]
l2=[6, 7, 8, 9, 10]
l.extend(l2)
print(l)
l.append(l2)
print(l)
l.insert(3,l2)
print(l)
l.pop(1)
print(l)
l.remove(l2)
print(l)
del l[-1]
print(l)
del l

print(l2)
l2.clear()
print(l2)

Output

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, [6, 7, 8, 9, 10]]
[1, 2, 3, [6, 7, 8, 9, 10], 4, 5, 6, 7, 8, 9, 10, [6, 7, 8, 9, 10]]
[1, 3, [6, 7, 8, 9, 10], 4, 5, 6, 7, 8, 9, 10, [6, 7, 8, 9, 10]]
[1, 3, 4, 5, 6, 7, 8, 9, 10, [6, 7, 8, 9, 10]]
[1, 3, 4, 5, 6, 7, 8, 9, 10]
[6, 7, 8, 9, 10]
[]

修改元素#

同數組。

列表高級特性#

切片操作#

切片,顧名思義就是把 1 個列表切分為多個列表,語法如下:

變量[起始下標:結束下標] 	#結束下標取不到

做切片操作時要注意以下幾個點:

  1. 如果下標從 0 開始可以省略不寫,例如 n = l [:4]。
  2. 如果結束下標取的是最後一個元素,可以省略不寫,例如 n = l [3:]。
  3. 如果列表中的元素都要,開始和結束下標都可以省略,例如 n = l [:]。
  4. n = l [:-1] 表示從 0 開始 - 到數二個元素。
    例子:
l = [1, 2, 3, 4, 5]
print(l[0:4])

Output

[1, 2, 3, 4]

等距抽取#

方法是 n = l [開始:結束:步長] ,這個方法既可以正向去操作列表,也可以反向去操作列表,例如:

l = [1, 2, 3, 4, 5]
n = l[-1:-3:-1]
print(n)

Output

[5, 4]

列表的一些運算符#

比較運算符#

列表之間進行比較,以相同下標進行比較,從小到大進行比較,如果值相同則比較下一組元素,如果不同直接出結果,例如:

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  # 下標/索引:0開始
l2 = [2, 3, 4, 6]
print(l < l2)  # True

Output

True

邏輯運算符#

邏輯運算符 and not or 跟比較運算符相似,返回結果都是布爾值(True/False)

拼接運算符#

拼接運算符是 + ,常用來進行兩個列表拼接

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  # 下標/索引:0開始
l2 = [2, 3, 4, 6]
print(l + l2)

重複操作符#

重複操作符為 * ,後面常跟數字,表示將列表裡面的元素重複複製幾遍

l2 = [2, 3, 4, 6]
print(l2*2)

成員關係操作符#

成員關係操作符主要有 in 和 not in,用來判斷元素是否在列表中,返回結果是布爾值

l = [2, 3, 4, 6]
print(5 not in l)	#輸出“5不在列表l中”這句話的真假

執行結果

True

列表的其他方法#

copy()#淺拷貝
count(project)#返回對象在列表中出現的次數
index(value,開始下標,結束下標)#元素出現的第一次下標位置,也可自定義範圍
reverse()#原地翻轉
sort (key=None reverse=False)#快速排序,默認從小到大排序,key:算法
len()#獲取列表長度

二維列表#

#變量[外層列表下標][內層列表的下標]
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i in l:
    for j in i:
        print(j)

Output

1
2
3
4
5
6
7
8
9

元組(tuple)#

元組的創建及訪問#

元組用()的形式,是可迭代對象,是有序的,下標操作,支持切面操作 [:]

同列表,不再贅述。

修改和刪除#

元組是不可變類型,不能修改,但是可以通過將元組轉換成列表的形式進行修改和刪除等操作,最後再將列表轉換成元組,完成元組的修改和刪除。

例如:修改元組中的元素:

t = (1, 2, 3, 4, 5)
l = list(t) #將元組轉換成列表
print(l)    #輸出列表
l[2] = 6    #列表指定元素的修改
print(l)    #輸出新列表
t = tuple(l)    #列表轉換成元組
print(t)

Output

[1, 2, 3, 4, 5]
[1, 2, 6, 4, 5]
(1, 2, 6, 4, 5)

元組的操作符#

元組同樣也有著操作符,方法跟列表的操作符是一樣的,不再贅述。

元組的方法#

對其操作先轉換成列表再行操作,不再贅述。

另外有兩種方法新增:

1. count(value)
#統計某個值出現的次數,value是指定的值

2. index(value,[start],[stop])
#返回value在元組中(start到stop間)出現的下標位置(第一次出現的下標)

字符串#

在 Python 中,字符和字符串沒有區別。可用 ' ' 也可以是 " "

字符串的特點#

1. 字符串不可變類型
2. 字符串是可迭代對象
3. 字符串支持索引和切片操作
4. 支持操作符;
		拼接:+
		重複操作符:*
		比較運算符: > < <= >= == !=
		邏輯運算符:not and or
		成員關係: in    not in		

字符串的方法#

capitalize()#把字符串的第一個字符改為大寫,後面的的小寫
casefold()#把整個字符串都小寫
encode()#編碼 str--bytes (二進制字符串)
decode()#解碼
count(sub,start, stop)#返回字符(sub)出現的次數,star: 開始下標,stop:結束下標
find(sub,start,stop)# 返回sub第一次出現的下標,查不到返回-1
index(sub, start, stop)#返回sub第一次出現的下標,查不到報錯
upper()#將字符串轉為大寫
1ower()#將字符串轉為小寫

格式化輸出#

  1. format 語法 1:用數字占位(下標)
"{0} 嘿嘿".format("Python")
a = 100
s = "{0}{1}{2} 嘿嘿"
s2 = s.format(a, "JAVA", "C++")
print(s2)

2.format 語法 2:{} 占位

a = 100
s = "{}{}{} 嘿嘿"
s2 = s.format(a, "JAVA", "C++", "C# ")
print(s2)
#Output
100JAVAC++ 嘿嘿

3.format 語法 3:{} 占位用字母占位

s = "{a}{b}{c} 嘿嘿"
s2 = s.format(b="JAVA", a="C++", c="C# ")
print(s2)
#Output:
C++JAVAC#  嘿嘿

s.format (s2) 可理解為使用 s 格式化 s2

4.%s

語法為 “% s”%(值) ,最常用的參數可以是任意值。
例子:

for i in range(1, 10):
    for j in range(1, i + 1):
        print("%s * %s = %s" % (i, j, i * j), end="\t")
    print()

#Output:
1 * 1 = 1	
2 * 1 = 2	2 * 2 = 4	
3 * 1 = 3	3 * 2 = 6	3 * 3 = 9	
4 * 1 = 4	4 * 2 = 8	4 * 3 = 12	4 * 4 = 16	
5 * 1 = 5	5 * 2 = 10	5 * 3 = 15	5 * 4 = 20	5 * 5 = 25	
6 * 1 = 6	6 * 2 = 12	6 * 3 = 18	6 * 4 = 24	6 * 5 = 30	6 * 6 = 36	
7 * 1 = 7	7 * 2 = 14	7 * 3 = 21	7 * 4 = 28	7 * 5 = 35	7 * 6 = 42	7 * 7 = 49	
8 * 1 = 8	8 * 2 = 16	8 * 3 = 24	8 * 4 = 32	8 * 5 = 40	8 * 6 = 48	8 * 7 = 56	8 * 8 = 64	
9 * 1 = 9	9 * 2 = 18	9 * 3 = 27	9 * 4 = 36	9 * 5 = 45	9 * 6 = 54	9 * 7 = 63	9 * 8 = 72	9 * 9 = 81	

轉義字符#

1. “\n” :換行符
2. “\'”:單引號
3. “\“”:雙引號
4. "\\" : \

在這裡值得注意的是 \ ,它有很多比較巧的運用,比如可以實現代碼換行

a = "sxsxsxsxsxsxsxs\
        xsxsxsxs\
        xsx"
print(a)

a = 1 + 2 + 3 \
    + 4
print(a)

#Output:
sxsxsxsxsxsxsxs        xsxsxsxs        xsx
10

字典(dict)#

字典是用來存儲數據的,字典中的數據以映射關係存儲。

字典的特點#

  1. 字典是 Python 中唯一的映射類型
    2. 字典是無序的
    3. 字典是可迭代對象
    4. 字典的構成:

    鍵:key
    值:value
    映射:鍵映射值
    鍵 - 值:鍵值對,又叫 項

創建字典#

1. 直接創建
		語法: d = {} 	#空字典
		例如: d = {"name":"不良人","apple":"蘋果"}
2. dict()
		例如:d = dict()	#空字典
3. dict(可迭代對象)

例子:

d3 = dict([("one",1),("two",2)])
print(d3)
#Output:
{'one': 1, 'two': 2}

這就是一個元組,one 是鍵,1 是值, ‘one’ : 1 是鍵值對。

4. dict(**kwargs)

例子:

d4 = dict(a=3, b=4)
print(d4)
#Output:
{'a': 3, 'b': 4}    

字典訪問#

  1. 基本形式:

    變量名 [鍵名] #鍵所對應的值
  2. 添加一個鍵值對

    變量名 [鍵名]= 值
  3. 修改一個鍵值對的值

    變量名 [鍵名]= 值

Example

d = {"name": "小黑"}
print(d["name"])
#Output:
小黑

字典的方法#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。