python基礎集結號

Python 號稱是最接近人工智能的語言,由於它的動態便捷性和靈活的三方擴展,成就了它在人工智能領域的豐碑python

走進Python,靠近人工智能shell

一.編程語言Python的基礎 之 "淺入淺出"不是不給你講,而是重點在人工智能應用編程

1.變量json

聲明變量:bash

1 name = "DragonFire"  # 聲明一個變量name 用來存儲一個字符串"DragonFire"
2 age = 20  # 聲明一個變量age 用來存儲一個數字 20
3 
4 print(name, age)  # 在控制檯打印變量name中存儲的字符串 和 變量age中存儲的數字 (DragonFire 20)
5 print("name", "age")  # 在控制檯打印字符串"name"  和 "age" (name age)
6 
7 # 小練習
8 # 在控制檯打印 name DragonFire age 20
聲明變量

2.控制檯交互app

1 # 打開控制檯輸入模式,輸入提示語爲"請輸入你的名字>>>" 並將用戶輸入的信息保存在username變量中
2 username = input("請輸入你的名字>>>")
3 
4 # 在控制檯打印變量username所存儲的數值
5 print(username)

# 小例子
username = input("你叫什麼名字? >>>")

print("你好!",username,"我是Python程序")

3.邏輯運算編程語言

# == , != , <= , >= , < , >  邏輯運算符
print(1 == 1)  #
print(1 == 2)  #
print(1 != 2)  #
print(1 != 1)  #
print(1 <= 2)  #
print(1 >= 2)  #
print(1 < 2)  #
print(1 > 2)  #

# 思考題
print(1 == "1")  # 真 仍是  假

#  與或非
print(1 == 1 and 2 == 2)  # 真 and  真  =  真
print(1 == 1 and 1 == 2)  # 真 and 假 = 假
print(2 == 1 and 1 == 2)  # 假 and 假 = 假


print(1 == 1 or 2 == 2)  # 真 or  真 = 真
print(1 == 1 or 1 == 2)  # 真 or  假 = 真
print(2 == 1 or 1 == 2)  # 假 or  假 = 假

print(not 1 == 1)  # not 真 = 假
print(not 1 == 2)  # not 假 = 真

4.流程控制ide

#流程控制 之 if else 判斷
if 1 == 1:  # 若是 if 跟隨的條件 爲 真 那麼執行屬於 if 中的語句
    print("真的")


if 1 == 2: # 若是 if 跟隨的條件爲 假 那麼不執行屬於if 的語句,而後尋找 else
    print("假的")
else: # 尋找到 else 以後 執行屬於else中的語句
    print("1==2 假的")
    
#高端判斷 之 不然若是:
if 1==2:
    print("1==2")
    
elif 1==1 : #若是 if 條件不成立,會進行第二次判斷 elif ,若是elif條件成立,則執行屬於elif中的語句,如不成立則else
    print("1==1")
    
else:
    print("全是騙人的")

作一個用戶登陸小例子:函數

# 綜合上述知識,咱們作個小練習
username = input("輸入用戶名:")
pwd = input("輸入密碼:")

if username == "123" and pwd == "111":
    print("歡迎登錄")

流程控制 之 循環post

# 講道理它應該是從頭至尾的 for 循環
for i in range(10):  # 從0開始循環到9
    print(i)
#帶條件的While 循環,講道理它根本不會本身停下來
while 1==1 : # 若是while 的條件成立,則運行屬於while中的語句,直到條件不成立爲止
    print("你好")

#勸你不要嘗試

主動中止當次或者終止循環

# 循環中帶着判斷 ,  你好我是continue , Hello 我是 break
for i in range(10):
    if i == 5: # 當 i 爲5 時
        continue # 中止當次循環回到最開始繼續循環
    if i == 7: # 當 i 爲 7 時
        break   # 中止所有循環
    print(i)

# 打印結果顯而易見,不會顯示5 當遇到7 的時候不會打印,而且程序結束 也就是 0,1,2,3,4,6

特殊的while循環

i = 0
flag = True

# while循環的中止方式有兩種
while flag :
    i = i + 1 
    if i == 5:
        continue
    if i == 7:
        flag = False # 第一種中止方式就是讓while 的條件不成立
    if i == 9:
        break # 第二種中止方式就是 break

結合循環,再作一個用戶登陸的例子:

# 用戶名密碼錯誤,就重複輸入到正確爲止
while True:
    username = input("輸入用戶名:")
    pwd = input("輸入密碼:")
    
    if username == "123" and pwd == "111":
        print("歡迎登錄")
        break
    else:
        continue

5.數據類型

int 整型:不帶引號的整數數字,正負均可以取值範圍: 32位操做系統 : -2147483648 至 2147483648  64位操做系統: -9223372036854775808 至 9223372036854775807

num = 1 #聲明一個int型變量num 並賦值爲 1
print(type(num)) # 打印變量num的類型
# <class 'int'> 類型爲"int"

float 浮點型 : 不帶引號的小數,正負均可以可是長度有限制取值:

num = 1.2 #聲明一個float型變量num 並賦值爲 1.2
print(type(num)) # 打印變量num的類型
# <class 'float'>  類型爲"int"

布爾型 : 也能夠叫真假值,就是以前用來判斷真假的 True 和 False

boo = True #聲明一個 bool  型變量 boo 並賦值爲 True
print(type(boo)) # 打印變量 boo 的類型
# <class 'bool'>  類型爲"bool"

字符串 : 帶引號裏面寫的基本上都是字符串"這就是個字符串兒"

string = "Oldboy Edu" #聲明一個 string  型變量 str 並賦值爲 Oldboy Edu
print(type(str)) # 打印變量 string 的類型
# <class 'str'>  類型爲"str"

#字符串類型中的操做:
#字符串索引:
print(string[0]) #提取第一個字符
print(string[-1]) #提取最後一個字符

#字符串切片
print(string[0:4]) #提取第一個到第四個字符

#字符串拼接:
print("你好 %s"%(string)) # 你好 Oldboy Edu  %s 被 string 替換

#字符串分割:
print( string.split(" ") ) # 使用空格分割

#字符串去除空格
print( string.strip() )

列表 : 被中括號 [] 包裹 , 內部用逗號分隔元素 [1, 2, 3, "4"]

l = [1, 2, '3', ["a", "b"]]  # 聲明一個 l  型變量 list 並賦值爲 [1, 2, '3', ["a", "b"]]
print(type(l))  # 打印變量 l 的類型
# <class 'list'>  類型爲"list"

#列表的操做:
#列表索引:
print(l[0]) #提取第一個元素
print(l[-1]) #提取最後一個元素

#列表切片
print(l[0:4]) #提取第一個到第四個元素

#添加元素
l.append("123") # 在列表的尾端插入
print(l)

#刪除元素
l.pop(0) #刪除第一個元素
print(l)
l.remove('3') # 刪除列表中的某一個元素
print(l)

#列表的特殊用途:
#遍歷列表
for item in l :  # 每循環一次,從列表中拿出來一個元素
    print(item)

#列表包含
if 2 in l :  # 2 in l 返回True 表明 2 存在於 l 中 反之 False
    print(l)

元組 : 和列表幾乎同樣,只不過把中括號[] 換成了 () 而且 元組不能被修改,也就是不能添加和刪除元素

t = (1, 2, '3', ["a", "b"])  # 聲明一個 t  型變量 tuple 並賦值爲 (1, 2, '3', ["a", "b"])
print(type(t))  # 打印變量 t 的類型
# <class 'tuple'>  類型爲"tuple"

#元組的操做:
#元組索引:
print(t[0]) #提取第一個元素
print(t[-1]) #提取最後一個元素

#元組切片
print(t[0:4]) #提取第一個到第四個元素

#元組的特殊用途:
#遍歷列表
for item in t :  # 每循環一次,從元組中拿出來一個元素
    print(item)

#元組包含
if 2 in t :  # 2 in l 返回True 表明 2 存在於 l 中 反之 False
    print(t)

字典 : 就是鍵值對的存儲,鍵值對-- k : v 字典{k1:v1,k2:v2} ,key不可重複,且無序

dic = {"name": "DragonFire", "age": 20}  # 聲明一個 dict 型變量 dic 並賦值爲 {"name": "DragonFire", "age": 20}
print(type(dic))  # 打印變量 dic 的類型
# <class 'dict'>  類型爲"dict"

# 取值:
print(dic["name"])  # 打印 dic 中 name 對應的值
print(dic.get("name"))  # 若是dic中沒有name不會拋出異常

# 修改:
dic["name"] = "Long"
print(dic)

# 增長:
dic["gender"] = "man"
print(dic)

# 刪除:
del dic["gender"]
print(dic)

# 字典的特殊用法:
#循環
for k,v in dic.items(): # 分別將字典的key和value拿出來
    print(k,v)

集合 : 能夠理解爲只有Key的字典,不可重複,而且無序

s = {"name", "DragonFire", "age", 20}  # 聲明一個 set 型變量 s 並賦值爲  {"name", "DragonFire", "age", 20}
print(type(s))  # 打印變量 dic 的類型
# <class 'set'>  類型爲"set"

#添加元素
s.add("1234")
print(s)

#刪除元素
s.remove(20)
print(s)
s.pop() #隨機刪除一個
print(s)

# set 是不能經過索引的方式取值的,可是能夠經過for遍歷的方式取值
for i in s:
    print(i)

# set 的特殊用法
# 求交集
l = ["name",1,2,20]
print(s.intersection(l)) # 能夠得到交集

 

二.Python語言的進階 之 這裏學會了Python就會了70%

1.函數 : 你那麼聰明根本都不須要看這個章節 之 def args kwargs
1 def func(參數1,參數2):  # def 用來定義函數及函數名,參數1和參數2就是定義時的形參,也就是未來調用函數時必需要傳入的參數
2     變量1 = 參數1+參數2
3     return 變量1
若是你看了而且還想點開看的話 + 看了就要記住否則別看
1 #咱們定義參數的時候,沒法肯定函數中會有多少參數時,須要可變長參數,也就是動態參數的參與處理 這裏咱們的*args 和 **kwargs 就起了做用
2 
3 *args 就是 將未定義且多餘的 位置參數記錄在內,偷偷的告訴你,args是個元祖,裏面記錄着你個函數傳遞的多餘位置參數
4 
5 **kwargs 就是 將多餘的關鍵字參數記錄在內,我用嘹亮且帶有磁性的聲音,偷偷告訴你,kwargs 實際上是個dict哦,裏面大概就是{"name":"Dragon","age":1+1+1+1+1+1+18}
你老是這麼變來變去的我都不愛你了 + *args **kwargs
1 def args_func(a,b,*args):  # args 裏面保存着除了ab以外的全部多餘參數
2     print(args) # 這回知道是元祖了吧
3     for i in args:
4         print(i)
5 
6 args_func(1,2,3,4,5,6)  # 這裏調用的時候1,2分別傳遞給a,b,那麼3456就會保存在args裏面哦
*args 的糖炒栗子
1 def kwargs_func(a, b, **kwargs):  # kwargs 裏面保存着除了ab以外其餘關鍵字傳入參的參數
2     print(kwargs)  # 這回知道是字典了吧
3     for k, v in kwargs:
4         print(k, v)
5 
6 
7 kwargs_func(1, 2, c=3, d=4, e=5)  # 這裏調用的時候,12分別傳遞給a,b 那麼c=3,d=4,e=5 就會保存在**kwargs裏面哦
**kwargs 的 北京懷柔大板慄
1 def args_kwargs_func(*args, **kwargs):  # 這裏必定要注意*args 要在 **kwargs以前
2     print(args)
3     print(kwargs)
4 
5 
6 args_kwargs_func(1, 2, a=1, b=2)  # 12存入args a=1,b=2 存入kwargs,這裏要注意的是關鍵字傳參以後,不能夠在位置傳參了
*args **kwargs 的 糖炒北京懷柔大板慄

本節結束,忘記它吧

2.推導而不是推倒 之 推導式

推導式舉兩個懷柔大板慄:

列表推導式:很(yao)重(xue)要(hui)

1 li = [i for i in range(10)]  # 簡單的列表推導式,就是在列表內寫一個for循環對吧
2 print(li)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3 
4 lis = [i for i in range(10) if i % 2 == 0]  # 這是帶if 條件的列表推導式
5 print(lis)  # [0, 2, 4, 6, 8]
超級簡單 + 學不會的開啓while模式

生成器推導式 : 也(te)很(bie)重要

1 gener = (i for i in range(10))  # 簡單的生成器推導式,就是在元組內寫一個for循環對吧
2 print(gener)  # <generator object <genexpr> at 0x04F9B3C0>
3 
4 geners = (i for i in range(10) if i % 2 == 0)  # 這是帶if 條件的生成器推導式
5 print(geners)  # <generator object <genexpr> at 0x04F9B3F0>
別覺得我只是複製粘貼的 + 讓你一點兒毛病也挑不到

從上述來看,列表推導式和生成器推導式只是[] 與 () 的區別

可是實際上,生成器推導式的效率很是高,但可控性不好,好比不直觀,用一次就沒了

相對而言列表推導式的效率比較低,可是可控性強,能夠反覆利用,並且數據顯示很直觀

本節及本章結束,內容較多,但願你們,都(bi)能(xu)學會

3.模塊

import 的用法

字符串字符串字符串 之 json 模塊

只要你是個說得上名的數據類型,我全給你弄成字符串,就問你服不服

 1 import json
 2 
 3 # 咱們作一個字典
 4 dic = {
 5     "name": "Dragon",
 6     "age": 20,
 7     "hobby": ["摩托車", "騎車"],
 8     "other": {
 9         "say": "hello",
10         "see": "beautiful girl",
11     }
12 }
13 json_dic = json.dumps(dic)  # json序列化
14 
15 print(type(json_dic), json_dic)
16 
17 # <class 'str'> {"name": "Dragon", "age": 20, "hobby": ["\u6469\u6258\u8f66", "\u9a91\u8f66"], "other": {"say": "hello", "see": "beautiful girl"}}
18 
19 loads_dic = json.loads(json_dic) # json 反序列化
20 
21 print(type(loads_dic), loads_dic)
22 
23 # <class 'dict'> {'name': 'Dragon', 'age': 20, 'hobby': ['摩托車', '騎車'], 'other': {'say': 'hello', 'see': 'beautiful girl'}}
一個神奇 json 有了它把一切不可能變爲可能

json 用於數據傳輸上,很是的爽

兄弟就靠你了 之 os 模塊

 os 模塊實際上是集成了不少操做系統的方法,好比建立文件夾,拼接路徑,刪除文件,建立文件等等

import os
os.path.join("a","b") # 組合路徑 a/b
os.system("ls") # 執行系統命令
os.sep() # 獲取當前操做系統的路徑分隔符 
os.path.dirname(__file__) # 獲取當前文件的所在目錄

 

import os

os.getcwd()  # 獲取當前工做目錄,即當前python腳本工做的目錄路徑
os.chdir("dirname")  # 改變當前腳本工做目錄;至關於shell下cd
os.curdir()  # 返回當前目錄: ('.')
os.pardir()  # 獲取當前目錄的父目錄字符串名:('..')
os.makedirs('dir1/dir2')  # 可生成多層遞歸目錄
os.removedirs('dirname1')  # 若目錄爲空,則刪除,並遞歸到上一級目錄,如若也爲空,則刪除,依此類推
os.mkdir('dirname')  # 生成單級目錄;至關於shell中mkdir dirname
os.rmdir('dirname')  # 刪除單級空目錄,若目錄不爲空則沒法刪除,報錯;至關於shell中rmdir dirname
os.listdir('dirname')  # 列出指定目錄下的全部文件和子目錄,包括隱藏文件,並以列表方式打印
os.remove("file_name")  # 刪除一個文件
os.rename("oldname", "new")  # 重命名文件/目錄
os.stat('path/filename')  # 獲取文件/目錄信息
os.sep()  # 操做系統特定的路徑分隔符,win下爲"\\",Linux下爲"/"
os.linesep()  # 當前平臺使用的行終止符,win下爲"\t\n",Linux下爲"\n"
os.pathsep()  # 用於分割文件路徑的字符串
os.name()  # 字符串指示當前使用平臺。win->'nt'; Linux->'posix'
os.system("bash command")  # 運行shell命令,直接顯示
os.environ()  # 獲取系統環境變量
os.path.abspath(path)  # 返回path規範化的絕對路徑
os.path.split(path)  # 將path分割成目錄和文件名二元組返回
os.path.dirname(path)  # 返回path的目錄。其實就是os.path.split(path)的第一個元素
os.path.basename(path)  # 返回path最後的文件名。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素
os.path.exists(path)  # 若是path存在,返回True;若是path不存在,返回False
os.path.isabs(path)  # 若是path是絕對路徑,返回True
os.path.isfile(path)  # 若是path是一個存在的文件,返回True。不然返回False
os.path.isdir(path)  # 若是path是一個存在的目錄,則返回True。不然返回False
os.path.join(path1[, path2[, ...]])  # 將多個路徑組合後返回,第一個絕對路徑以前的參數將被忽略
os.path.getatime(path)  # 返回path所指向的文件或者目錄的最後存取時間
os.path.getmtime(path)  # 返回path所指向的文件或者目錄的最後修改時間

 

4.文件操做

f = open("123.txt","rb") #打開文件句柄
print(f.read()) # 讀取文件內容
f.close() # 關閉文件句柄

打開文件時,須要指定文件路徑和以何等方式打開文件,打開後,便可獲取該文件句柄,往後經過此文件句柄對該文件操做。

打開文件的模式有:

  • r ,只讀模式【默認】
  • w,只寫模式【不可讀;不存在則建立;存在則清空內容;】
  • x, 只寫模式【不可讀;不存在則建立,存在則報錯】
  • a, 追加模式【可讀;   不存在則建立;存在則只追加內容;】

"+" 表示能夠同時讀寫某個文件

  • r+, 讀寫【可讀,可寫】
  • w+,寫讀【可讀,可寫】
  • x+ ,寫讀【可讀,可寫】
  • a+, 寫讀【可讀,可寫】

 "b"表示以字節的方式操做

  • rb  或 r+b
  • wb 或 w+b
  • xb 或 w+b
  • ab 或 a+b

 注:以b方式打開時,讀取到的內容是字節類型,寫入時也須要提供字節類型

# 文件上下文操做
with open("123.txt","rb") as f: # 文件句柄f 自動打開關閉文件句柄
    f.read() # 讀取文件內容(所有)
    

with open("123.txt","rb") as f:
    f.read() #讀取文件內容(所有)
    f.readline() # 讀取文件中一行文件
    f.readlines() # 讀取文件中全部行 ["1","2"]
    
    f.write("666") # 寫入文件內容
    f.writelines("666") # 寫入一行文件
    
    f.flush()# 刷新文件
    f.seek(10) # 移動光標到10位置
    f.truncate(6) # 從光標當前位置截取6位
    f.tell() # 獲取當前光標位置
相關文章
相關標籤/搜索