python基础篇
http://www.cnblogs.com/yuanchenqi/articles/5782764.html
一、變量
1、定義:變量用于存儲要在計算機程序中引用和操作的信息。他們還提供了一種以描述性名稱標注數據的方法,所以我們的程序可以被讀者和我們自己更清楚地理解。將變量視為容納信息的容器是有幫助的。它們的唯一目的是將數據標記和存儲在內存中。 然后可以在整個程序中使用此數據。
2、聲明變量:name="alex"
?上述代碼聲明了一個變量,變量名為: name,變量name的值為:"Alex Li"
3、變量定義規則:
- 變量名只能是 字母、數字或下劃線的任意組合
- 變量名的第一個字符不能是數字
- 以下關鍵字不能聲明為變量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
4、變量的賦值
二、縮進
縮進就是控制塊,官方建議空四個空格,在很多語言里都是通過大括號來實現的,但是Python是通過空格
三、注釋
單行注釋:#
多行注釋:""" """或''' '''
四、運算符
1、算數運算符 + - * /
2、賦值運算符 = += -= *= /=
3、比較運算符 == >= <= != > < (一定是布爾值,用于循環)
4、邏輯運算符 and(與) or(或) not(非)
5、關系運算符 in not in (返回值是布爾值)
例:print(2 in [1,2,3]
True
6、位運算符
五、數據類型
1、定義:計算機顧名思義就是可以做數學計算的機器,因此,計算機程序理所當然地可以處理各種數值。但是,計算機能處理的遠不止數值,還可以處理文本、圖形、音頻、視頻、網頁等各種各樣的數據,不同的數據,需要定義不同的數據類型。在Python中,能夠直接處理的數據類型有以下幾種
所有的數據類型一定可以劃分為兩種:
可變數據類型:列表,字典
不可變數據類型:整形,元組,字符串
不可變數據類型如下圖:
再比如:i=1(在內存中創建一個數據類型)
i=2(并不是覆蓋1,而是開辟一塊新的空間,寫上2)
2、數字(整形,浮點型,布爾類型)
整形
Python3中整形(int)就是長整型,在2.x版本中才有區分
浮點型(float,double)
科學計數法,是為了節省空間,比如無線循環和不循環小數如果一直存在去電腦會崩潰
精度要求非常高的話使用double
例:0.000123=1.23e^(-4)
布爾值
True=1,False=0,二者可進行運算,True+False=1
?
3、字符串(string)
創建2種(表達式和關鍵字):表達式:s="zhongguo"
?關鍵字:s=str("zhongguo")#涉及到類
字符串操作:
查找 ?[] ?[:] ? #序列都可以進行切片,如字符串列表元組
去空:strip()#把字符串的開頭和結尾的空格和制表符還有換行符去掉,括號里可以加參數
拼接:s="hello"+"world"+"I"+"am"+"python"(拼接次數多的話,效率要低,因為字符串是不可變的,顯示helloworld申請一塊內存空間,然后又是helloworldI申請一段內存空間,然后又是helloworldIam申請一斷內存空間,一次類推)
? "".join(iterable)#數字不能拼接,不是一個類型的不能拼接,""中可以加*,空格之類的其他東西
分割:split(),正好與join相反是把字符串分割成一個列表,參數只要字符串中有的都可以加,還有最大分個數split(,)逗號后邊可以規定分割次數
splitlines是以換行符為分隔符的如果末尾有\n的話不會顯示,但split會顯示
find(找不到返回-1)
"hello world".find("l")#打印后返回2
"hello world".find("l",3)#打印后返回3
index(找不到報錯)
"hello world".index("l",4)#返回后打印9
replace
"hello world".replace("world","python")#完全匹配,必須一對一匹配上?
s="hello world"
print(s.replace("world","python"))------------->hello python
print(s)------------------------------------------>hello world
因為字符串是不可變的,所以hello python是開辟了一塊新的空間,之前的s還是指向hello world,而后邊講到的append針對的類型是可變的,是直接對列表(只舉列表這一個例子)進行修改,沒有返回值,也就意味著并沒有開辟新的空間,直接打印原列表即可
居中顯示:print("hello world".center(50,"*"))#居中顯示總共50個字符,不夠的用*補上
print("hello world".ljust(50,"*"))#靠左顯示,右邊用*補全,總共50個字符
字符串的格式化輸出:
"hello %s"%"sb"---------->print后輸出hello sb
%s,給字符串占位 %d,給整形占位 %f,給浮點型數據占位,%.4f小數點后保留四位(占四位)
"hello {0},his age is {1}".format("alex",34)#按索引位對應
"hello {name},his age is {age}."format(name="wusir",age=30)#通過鍵值對(推薦)
"hello {name},his age is {age}."format_map({"name":"agon","age":33})#通過字典
關于數字判斷:isdecimal(),isdigit(),isnumeric()--->返回True或者False
isnumeric中1,一,I,壹都可以識別
大小寫:
print("hello world".capitalize())----->Hello world
print("hello world".title())------------>Hello World
print("HEllO world".casefold())------->hello world
print("HEllO world".lower())------->hello world
expandtabs
"HELLO\tworld".expandtabs(20)更改\t的空格數
zfill:
print("hello world".zfill(50))#其他位置都補0,內容右對齊
4、列表 ?可迭代對象,能夠進行for循環的就是可迭代對象
創建:l=[1,"hello",[4,5],{"name":"egon"}]
l2=list([1,23,3])
查:切片[:]
增:append()#可以追加字符串和列表,追加到最后,只能添加一個,不能添加多個
print(l2.append("yuan"))#返回None因為列表為可變的,沒有開辟新的空間,直接在原來的結果上進行了添加
extend()#可以進行多個添加,如12.extend([7,8])如果是多序列的話參數必須是列表形式
insert(2,66)#指定位置進行插入,插入的66索引值為2
刪:l2.pop(1)#pop參數為索引值,返回刪掉的值
l2.remove(23)#不知道索引值,通過內容刪除
del 12[2]#最霸道的刪除
del l2#可直接刪掉列表 del l2[1,3]#可以分段刪
改:l2[0]="yuan"
清空:l2.clear()#清空就是把里面的值全清空,效率低
l2=[]#(推薦)與上面的不一樣,這個是把l2重新指向了一個新的地址,所以和上面的內存地址肯定不一樣
計數:l2.count(3)#返回值是1,判斷列表里有幾個3
長度:len(l2)#返回值是3,判斷l2中有幾個元素
排序:sort l3=[3,1,56,34]
l3.sort()#.方法,默認reverse=False要從大到小排:l3.sort(reverse=True)
print(l3)
sorted ? print(sorted(l3))#函數方法
拷貝:深拷貝和前拷貝
5、字典(哈希算法可哈希就是可以進行哈希算法 反之就是不可以 可以進行哈希算法的數據就是不可變類型的,如果是不可變的,在對對象本身操作的時候,必須在內存的另外地方再申請一塊區域(因為老區域#不可變#),老的區域?就丟棄了(如果還有其他ref,則ref數字減1,類似unix下的hard-link)。如果是可變的,對對象操作的時候,不需要再在其他地方申請內?存,只需要在此對象后面連續申請(+/-)即可,也就是它的address會保持不變,但區域會變長或者變短。
)無序的
Python中唯一具有映射關系的數據類型,字典的查詢速率要遠高于列表,好比一頁一翻得找和找到對應的頁碼直接找頁碼,但是字典的存儲空間較大,比列表多了一張映射表,總之,是用空間取換取時間
創建:d={"name":"alex","name":"egon"}#打印結果會以后面的結果為準,就是前邊的被覆蓋了,白寫。鍵唯一且為不可變數據類型,如元組、字符串、整形
查:d["name"]
d.get("name",None)#推薦,如果字典里沒有的話返回None,可以換成一些其他的東西比如False
for i in dict循環遍歷的是字典的key
for i in dict:
print("%s---->%s"%(i,d[i]))#格式化輸出
增:d["gao"]="luchuan"
改:d["name"]="yuan"
刪:d.pop("1")#返回刪掉的value值
6、集合set ?兩個功能:去重,關系測試。 可變數據類型
?set集合內元素一定是不可變數據類型
?關系測試:s1={"hello",1,2,3}
?s2={1,2,("a","b")}
求并集:print(s1.union(s2))
print(s1|s2)#順序沒關系
求交集:print(s1.intersection(s2))
print(s1&s2)
求差集:print(s1.difference(s2))#s1中有的,s2中沒有的
print(s1-s2)
print(s2.difference(s1))#s2中有的,s1中沒有的
print(s2-s1)
求對稱差集:print(s1.symmetric_difference(s2))#互相都沒有的
print(s1^s2)
7、元組tuple (不能進行修改操作)
查: 切片 [:]
?
8、循環中的注意點
if和else、elif語句使用時需要注意一下兩點:
1.else、elif為子塊,不能獨立使用
2.一個if語句中可以包含多個elif語句,但結尾只能有一個else語句
else在while、for循環語句中的作用
Python中,可以在while和for循環中使用else子句,它只是在循環結束之后才會被執行,如果同時使用了break語句那么else子句會被跳過。所以注意else子句和break語句不能同時使用
9、三級菜單
menu = {'北京': {'海淀': {'五道口': {'soho': {},'網易': {},'google': {}},'中關村': {'愛奇藝': {},'汽車之家': {},'youku': {},},'上地': {'百度': {},},},'昌平': {'沙河': {'老男孩': {},'北航': {},},'天通苑': {},'回龍觀': {},},'朝陽': {},'東城': {},},'上海': {'閔行': {"人民廣場": {'炸雞店': {}}},'閘北': {'火車戰': {'攜程': {}}},'浦東': {},},'山東': {}, }current_layer = menu layer = []while True:for i in current_layer: # 將當前層賦值給iprint(i)choice = input(">:").strip()if not choice: continueif choice in current_layer:layer.append(current_layer)current_layer = current_layer[choice]elif choice == "b":if len(layer) != 0:current_layer = layer.pop()else:print("到頂了")elif choice == "q":exit("offer")10、簡單購物車
product_list = [["Iphone7",5800],#建立一個商品列表["Coffee",30],["Gedatang",10],["PythonBook",99],["bike",200]] shopping_cart = {}#建一個空字典,裝東西,購物車空字典 salary = int(input("input your salary:"))#工資是數字,所以要int() while True :#當工資是數字的時候,運行循環index = 0for product in product_list:#從商品列表中取出商品,價格列表print(index,product)#打印商品代號,商品和價格列表index += 1choice = input(">>:").strip()#選擇商品對應的數字,stip后空格和Tab無效if choice.isdigit():#判斷是否為數字choice = int(choice)#將數字轉為整形if choice >= 0 and choice < len(product_list):#商品存在,如果數字大于等于0并且小于商品列表最大數product = product_list[choice]#取到商品if product[1] <= salary:#判斷能否買得起,product包括商品和商品價格#買得起if product[0] in shopping_cart:#product[0]是商品名字,[1]是商品價格shopping_cart[product[0]][1] +=1#購物車字典,以product[0]為key,value是else:shopping_cart[product[0]]=[product[1],1]#加入購物車,創建一條商品購買記錄salary -=product[1]#扣錢print("已經把"+product[0]+"加入到你的購物車,您的余額還剩"+str(salary-product[1])+"元錢")else:print("買不起,產品價格是"+ str(product[1]) +"你還差"+str(product[1]-salary)+"元錢")else:print("商品不存在!")elif choice == "q":print("-----已購買商品列表-----")id_counter = 1total_cost = 0#初始化一個總消費的變量print("id 商品 數量 單價 總價")for key in shopping_cart:print("%s\t%s\t%s\t%s\t%s"%(id_counter,key,shopping_cart[key][1],shopping_cart[key][0],shopping_cart[key][1]*shopping_cart[key][0]))id_counter += 1total_cost += shopping_cart[key][1]*shopping_cart[key][0]print("您的總花費為:",total_cost)print("您的余額為:",salary)print("-----end-----")breakelse:print("無此選項")
轉載于:https://www.cnblogs.com/wuyongqiang/p/6662408.html
總結
- 上一篇: HTML 鼠标坐标和元素坐标
- 下一篇: 转 -----那些年总也记不牢的IO