程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python學習一(基礎語句)

編輯:Python

開發環境“pycharm”

python版本"3.7.3"

1.程序開始運行的地方

        跟C語言不同,python代碼是從上而下依次執行的,就跟bat腳本一樣的。這裡有一點需要注意,python的縮進符是會被判定為代碼語句的。可以這麼說,代碼從沒有縮進的代碼開始執行

例如:

print("hello world")

        執行結果如下:

        如果在語句前邊加入縮進符

 print("hello world")

        結果為:

        這裡就會報錯。pthon中的縮進符就跟C語言中的"{}"一樣,如果在python中定義一個函數,那函數的內容代碼前邊都需要有縮進符

if __name__ == '__main__':

        上邊這行代碼的意思是,如果這個文件被別的文件當作模塊調用了,那麼此時name 就會變為文件的名字,否則默認是main,那麼整個工程就會從這句話下面的沒有縮進的代碼開始執行。

        所以,如果加了上邊這行代碼,程序就會從這裡開始執行。

        例如:

def test():
print("start here")
if __name__ == '__main__':
print("hello world")
a = "this is"
b = "test"
print(a,b)
test()

        結果為:

        可以看出程序先執行了下邊的,最後才執行test。

        但如果我這麼寫的話,

print("inter start")
def test():
print("start here")
if __name__ == '__main__':
print("hello world")
a = "this is"
b = "test"
print(a,b)
test()
print("end")

        結果為:

         這裡可以看到,程序還是從沒有縮進的代碼開始執行遇到函數則跳過先執行if __name__ == '__main__':,結束後,再執行沒有縮進的代碼

2.Pycharm調試與運行

        學會程序的調試非常有助於我們平時的代碼分析與改錯。

        Pycharm有3種方式進入到DEBUG狀態。

        第一種:

        第二種:

        第三種:

         進入調試之前可以先代碼前用鼠標左鍵點擊一下,打一個初始斷點。

         進入到調試界面後,界面如下:

        調試的話,差不多就用到以上這些功能。可以使用F7進行單步調試(遇到函數則進入),或F8(遇到函數不進入)。

3.print()函數使用

        print在平時編程和調試中使用的非常多。這裡做一個總結。

print("hello world")
結果:hello world
dic = {'aaa': '111', 'bbb': 222, 'ccc': '333'} #打印數組完整內容
print(dic.items())
結果:dict_items([('aaa', '111'), ('bbb', 222), ('ccc', '333')])
print("a""b")
結果:ab
print('*' * 50) #打印50個相同的字符
結果:**************************************************
print("a","b") #,表示空格符
結果:a b
a="aaa"
b="bbb"
print(a,b)
結果aaa bbb
print("www", "xxxx", "com", sep=".") # 設置間隔符,sep即為間隔符
結果:www.xxxx.com
print("this", end=".") # 設置輸出文本末尾的字符,默認的\n
print("is", end=".")
print("test")
結果:this.is.test
a = 10
b = 20
print("a = %d,b = %d" %(a,b)) #輸出整數參數
結果:a = 10,b = 20
a = 'hello'
b = 'world'
print("a = %s,b = %s" %(a,b)) #輸出字符串參數
結果:a = hello,b = world
arr='this' #字符串長度
print("len = ",len(a))
結果:len = 4
arr = ['this','is','test'] #數組長度
print('len=',len(arr),sep='')
結果:len=3
PI = 3.141592653
print('%10.3f'%PI) #字段寬10,精度3
結果: 3.142
#精度為3,所以只顯示142,指定寬度為10,所以在左邊需要補充5個空格,以達到10位的寬度
PI=3.1415926
print('%-10.3f' %PI) #左對齊,還是10個字符,但空格顯示在右邊。
結果:3.142
PI=3.1415926
print('%+f' % PI) #顯示正負號,類型f的默認精度為6位小數。
結果:+3.141593
PI=3.1415926
print('%010.3f'%PI) #字段寬度為10,精度為3,不足處用0填充空白,0表示轉換值若位數不夠則用0填充
結果:000003.142
print('{0},{0},{1},num{2:.2f}'.format('hello','world',1.2345)) #format以{}和: 代替%,format參數可以被多次調用
結果:hello,hello,world,num1.23
a = 'this'
b = 'is'
c = 'test'
d = 3.14 * 3.14
print('{a} {b} {c},{d:.2f}')
結果:{a} {b} {c},{d:.2f}
print(f'{a} {b} {c}') #f 表示輸出參數
結果:this is test,9.86

        列表:list

        這裡需要補充一下知識點,python中內置了一種數據類型“列表”:list。List是一種有序的集合,可以隨時添加和刪除其中的元素。

a = ["this","is","a","test","array"]
print(a)
print(f"{a[0]},{a[1]},%s" %a[2],a[-2],a[-1])
結果是:['this', 'is', 'a', 'test', 'array']
this,is,a test array

         可以添加、刪除

a = ["this","is","a","test","array",123]
print(f"arr len:{len(a)},data:{a}")
a.append("add") #在list中追加元素到末尾
print(f"arr len:{len(a)},data:{a}")
a.insert(2,"and") #將元素插入指定的位置
print(f"arr len:{len(a)},data:{a}")
a.pop() #刪除List末尾的元素
print(f"arr len:{len(a)},data:{a}")
a.pop(2) #刪除指定位置的元素
print(f"arr len:{len(a)},data:{a}")
a[0] = "that" #將某個元素內容直接替換成別的內容
print(f"arr len:{len(a)},data:{a}")
結果:
arr len:6,data:['this', 'is', 'a', 'test', 'array', 123]
arr len:7,data:['this', 'is', 'a', 'test', 'array', 123, 'add']
arr len:8,data:['this', 'is', 'and', 'a', 'test', 'array', 123, 'add']
arr len:7,data:['this', 'is', 'and', 'a', 'test', 'array', 123]
arr len:6,data:['this', 'is', 'a', 'test', 'array', 123]
arr len:6,data:['that', 'is', 'a', 'test', 'array', 123]

        元組:tuple

         另一種有序列表叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改

a = ("this","is","a","test","array",123)
print(f"arr len:{len(a)},data:{a}")
結果:arr len:6,data:('this', 'is', 'a', 'test', 'array', 123)

         注:如果只有一個元素的時候,定義必須加一個逗號‘,’,用來消除歧義

a = (1,)

        字典:dict

        無序列表字典dict

        list是有序的,而dict是無序的。也就是說,dict在創建後,內部的元素是無序排列的,如果用print打印的話,打印出來的值跟創建的順序有可能是不同的

a = {"this","is","a","test","array",123}
print(f"arr len:{len(a)},data:{a}")
結果:
arr len:6,data:{'is', 'this', 'array', 'a', 'test', 123}
再次運行:
arr len:6,data:{'this', 'is', 'test', 'array', 123, 'a'}
再次運行:
arr len:6,data:{'test', 'array', 123, 'this', 'a', 'is'}

         可以看到每次運行的結果都是不一樣的。這也就是dict的無序屬性

        那dict有什麼用呢?顧名思義,dict就是字典的意思,也就是用來查詢時使用。dict使用鍵-值(key-value)存儲,具有極快的查找速度

        例如當需要根據名字查看年齡時

# list
name = ["tom","jack","pony","lisa"]
age = [20,21,22,23]
j = 0
for i in name:
if i == "pony":
print(age[j])
break
j += 1
else:
print("no find")
結果:22
#dict
name = {'tom':20,'jack':21,'pony':22,'lisa':23}
print(name['pony'])
結果:22

        可以看到,使用dict進行查找的話,速度是相當快的

        如果查詢的東西不在列表裡,則會直接報錯

name = {'tom':20,'jack':21,'pony':22,'lisa':23}
print(name['ponys'])
結果:
Traceback (most recent call last):
File "d:/python/test_project/test.py", line 28, in <module>
print(name['ponys'])
KeyError: 'ponys'

         針對這種情況,可以通過inget進行判斷。

#in
if "pony" in name:
print('age is %d' %name['pony'])
else:
print('no find pony')
if "han" in name:
print('age is %d' %name['han'])
else:
print('no find han')
結果:
age is 22
no find han
#get
print('pony rst:%s' %name.get('pony',-1))
print('han rst:%s' %name.get('han',-1))
結果:
pony rst:22
han rst:-1

         如果要替換內容,可以直接往key處寫value值。如果要刪除,可以調用pop(key)來實現。

 name = {'tom':20,'jack':21,'pony':22,'lisa':23}
print('pony rst:%s' %name.get('pony',-1))
#替換
name['pony'] = 55
print('pony rst:%s' %name.get('pony',-1))
#刪除
name.pop("pony")
print('pony rst:%s' %name.get('pony',-1))
結果:
pony rst:22
pony rst:55
pony rst:-1

         和list比較,dict有以下幾個特點:

1.查找和插入的速度極快,不會隨著key的增加而變慢

2.需要占用大量的內存,內存浪費多

        而list相反:

1.查找和插入的時間隨著元素的增加而增加

2.占用空間小,浪費內存很少

        所有,dict是用空間來換取時間的一種方法

        注:dict的key必須是不可變對象。在python中,字符串、整數等都是不可變的,因此可以作為key,而list是可變的,不能作為Key.

        set

        set和dict類似,也是一組key的集合,但不存儲value。由於key不能重復,所以,在set中,沒有重復的key。

        要創建一個set,需要提供一個List作為輸入集合

#set
s = set([1,2,3])
print(s)
結果:
{1, 2, 3}

        注:傳入的參數[1,2,3]是一個List,而顯示的{1,2,3}也只是表示這個set內部有1,2,3這三個元素,顯示的順序也不表示set是有序的

        重復的元素在set中會被自動過濾,可以通過add(key)方法添加元素到set中。通過remove(key)方法刪除元素

#set
s = set([1,2,3,3,2,3])
print(s)
s.add(4)
print(f"s rst:{s}")
s.add(4)
print(f"s rst:{s}")
s.remove(2)
print("s rst:%s" %s)
結果:
{1, 2, 3}
s rst:{1, 2, 3, 4}
s rst:{1, 2, 3, 4}
s rst:{1, 3, 4}

4.input

        有時候需要通過讀取用戶輸入信息,此時可以調用input函數進行輸入信息獲取。

a = input("num:")
print("user input:%s" %a)
輸入:
num:hello
結果:
user input:hello

         注:input返回的數據類型是str,如果需要將輸入的值做判斷,則需要將str轉換成Int型

a = input("num:")
print("user input:%s" %a)
a = int(a)
if(a > 100):
print(a)
else:
print("not correct")
輸入:123
結果:123
輸入:0
結果:not correct

5.if else

        要注意語句後跟‘:’,跟隨執行的代碼要加縮進

 6.for

        for 循環

for i in range(5): #從0-4
print(i)
結果:
0
1
2
3
4
for i in range(1,5) #range(star,stop)
print(i)
結果:
1
2
3
4
for i in range(1,5,2) #range(start,stop,step)
print(i)
結果:
1
3
arr = 'this' #字符串單個輸出
for i in arr:
print(i)
結果:
t
h
i
s
arr = ['this','is'] #字符串數組單個輸出
for i in arr:
print(i)
結果:
this
is
dic = {'aaa': '111', 'bbb': 222, 'ccc': '333'}
for k in dic:
print(k)
結果:
aaa
bbb
ccc
dic = {'aaa': '111', 'bbb': 222, 'ccc': '333'}
for k in dic.items(): #.items 遍歷各個元素
print(k)
結果:
('aaa', '111')
('bbb', 222)
('ccc', '333')
dic = {'aaa': '111', 'bbb': 222, 'ccc': '333'}
for k,value in dic.items(): # for 循環默認取的是字典的key賦值給變量名k
print(k,value)
結果:
aaa 111
bbb 222
ccc 333

else與break語句連用

        break語句會在循環執行後運行。那為什麼還要再加一個else呢?

        看如下代碼:

dic = {'aaa': '111', 'bbb': '222', 'ccc': '333'}
for k,value in dic.items(): # for 循環默認取的是字典的key賦值給變量名k
if(k == 'ccc'):
print('find it')
else:
print('no find')
結果:
find it
no find

        添加break語句

dic = {'aaa': '111', 'bbb': '222', 'ccc': '333'}
for k,value in dic.items(): # for 循環默認取的是字典的key賦值給變量名k
if(k == 'ccc'):
print('find it')
break;
else:
print('no find')
結果:
find it

        也就是說,for與else連用,只有當有break語句的時候才會有效果

7.while語句

        while與for比較類型,不同的是,while是只要滿足條件,就一直循環,條件不滿足時則退出循環。

# 計算0-100的和
i = 0
rst = 0
while i < 101:
rst += i
i += 1
print(f"the sum of 0-100:{rst}")
結果:the sum of 0-100:5050

8.switch語句

        python中沒有switch語句,可以通過dict實現該函數

def one():
print('one')
def two():
print('two')
def three():
print('three')
def none():
print('none')
def num_to_string(num: object) -> object:
numbers = {
0 : "zero",
1 : one,
2 : two,
3 : three
}
return numbers.get(num, none) #根據num值來獲取對應的內容,如果沒有匹配到,則執行none
if __name__ == '__main__':
print(num_to_string(0))
num_to_string(1)()
num_to_string(2)()
num_to_string(3)()
num_to_string(4)()
結果:
zero
one
two
three
none

9.type 類型

        返回參數中的類型

        例如:

print(type(1)) #整型
print(type('sgsdfas')) #字符串型
print(type([2])) #列表型
print(type({0:'zero'})) #字典型
結果:
<class 'int'>
<class 'str'>
<class 'list'>
<class 'dict'>

10.join 方法

        將序列中的元素以指定的字符連接生成一個新的字符串

        例如:

str = '-'
seq = {'a','b','c'}
print(str.join(seq))
結果:
a-c-b

11.self

        self在python中代表的是類的實例,而非類。self只有在類的方法中有,獨立的方法或函數中可以沒有。self在定義類的方法時是必須有的。類中的方法的第一個參數必須是self,否則無法調用。

        例如:

 class test:
def prt(self,data):
print(self,data)
print(self.__class__)
t = test()
t.prt("hello")
結果:
<__main__.test object at 0x0000026F2867BC18> hello
<class '__main__.test'>

12.關鍵字

def  定義函數

import 引用,相當於C語言中的extern

class 創建一個類

 13.Slice

        切片(slice)廣泛應用於數據截取中。

 l_t = list(range(100))
print('l_t[1:5]:%s' %l_t[1:5]) #獲取第1-5個數,從0開始
print('l_t[:10]:%s' %l_t[:10]) #獲取前10個數
print('l_t[-10:]:%s' %l_t[-10:]) #獲取後10個數
print('l_t[40:-40]:%s' %l_t[40:-40]) #從第10個數開始到倒數第10個數(不包括倒數第10個)
print("l_t[:20:2]:%s" %l_t[:20:2]) #從前20個數,每2個取一個數
print("l_t[::5]:%s" %l_t[::5]) #所有數,每5個取一個
結果:
l_t[1:5]:[1, 2, 3, 4]
l_t[:10]:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l_t[-10:]:[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
l_t[40:-40]:[40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59]
l_t[:20:2]:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
l_t[::5]:[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

14.列表生成式

 tl = ['A','B','C']
tl = [a.lower() for a in tl] #大寫轉小寫
print(tl)
tl = [a.upper() for a in tl] #小寫轉大寫
print(tl)
tl = [a for a in range(1,10)] #創建一個列表,從1-9
print(tl)
tl = list(range(1,10)) #創建一個列表,從1-9
print(tl)
tl = [a for a in range(1,10) if a % 2 == 0] #創建一個偶數列表
print(tl)
tl = [a if a % 2 == 0 else -a for a in range(1,10)] #創建一個負奇數,正偶數列表
print(tl)
name = ['tom','jack','lisa']
age = ['18','22','25']
tl = [a + ':' + b for a in name for b in age] #創建一個列表,雙重循環組成的排列組合,兩個都必須是字符串類型
print(tl)
結果:
['a', 'b', 'c']
['A', 'B', 'C']
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 4, 6, 8]
[-1, 2, -3, 4, -5, 6, -7, 8, -9]
['tom:18', 'tom:22', 'tom:25', 'jack:18', 'jack:22', 'jack:25', 'lisa:18', 'lisa:22', 'lisa:25']


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved