第一章 TensorFlow基础——python语法(三)
簡明Python基礎(三)
此為jupyter notebook導出文檔,如果習慣jupyter界面可以下載文件
鏈接:https://pan.xunlei.com/s/VMn5shjbvhvIPMqdURC6TZHXA1
提取碼:pafn
復制這段內容后打開手機迅雷App,查看更方便
Python的行
python中沒有強制的語句中止符
多行語句
Python語句中一般以新行(換行)作為語句的結束符
thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable1 = 1 thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable2 = 2 thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable3 = 3# 這一條語句寫在一行太長了,不方便看也不美觀 plusResult = thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable1 + thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable2 +thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable3 print(plusResult) 6 # 直接分行不可行,會報錯 plusResult = thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable1 + thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable2 + thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable3print(plusResult) File "<ipython-input-2-4ab6c4dc1efc>", line 2plusResult = thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable1 +^ SyntaxError: invalid syntax # 可以使用斜杠(\)將一行的語句分為多行顯示 plusResult = thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable1 +\ thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable2 +\ thisIsaVeryLongVariableNameSoCantWriteInOneLineVariable3print(plusResult) 6語句中包含[],{}或者()這些括號中間換行的就不需要使用多行連接符
days = ('Mon','Tue','Wed','Thu','Fri','Sat','Sun') print(days) ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun')控制語句
條件語句 if
- 代碼塊是通過縮進來指示的
- 縮進表示一個代碼塊的開始,逆縮進則表示一個代碼塊的結束
- 聲明以冒號:字符結束,并且開啟一個縮進級別
在if 和 else elif 的條件后面別忘記冒號
print("請輸入體重(kg):") weight = float(input()) if weight > 90 :print("該減肥啦!!!")if else 語句
C++ java 的else if語句 在Python改為了 elif
print("請輸入體重(kg):") weight = float(input()) if weight > 90 :print("該減肥啦!!!") else :print("身材保持的不錯!!!") # java 和 C++中不允許的多重不等式 python中允許 可以寫成 1<x<2 print("請輸入體重(kg):") weight = float(input()) if weight > 90 :print("該減肥啦!!!") elif 60<weight <= 90 :print("身材保持的不錯!!!") else :print("太瘦啦")while循環語句
循環語句允許執行一條語句或語句塊執行多次
# 統計6在2的100次方中的次數: num = 2 ** 100 print(num)count = 0while num > 0 :if num % 10 == 6:count = count + 1num = num //10print(count) 1267650600228229401496703205376 5for 循環語句
for 循環變量 in 序列 :
# 統計6在2的100次方中的次數: num = 2 ** 100 print(num) count = 0 for digit in str(num):if digit == "6" :count = count + 1 print(count) 1267650600228229401496703205376 5使用for和range來枚舉列表中的元素
# 輸出0~4 不包括 5 for i in range(5):print(i) 0 1 2 3 4 # 左閉右開 for x in range(1,5):print(x) 1 2 3 4列表推導式
列表推導式(List Comprehension)提供了一個創建和操作列表的有力工具
列表推導式由一個表達式以及緊跟著這個表達式的for語句構成,for語句還可以跟0個或多個if或for語句
#本質是多重循環 list1 = [1,2,3] list2 = [4,5,6] [x * y for x in list1 for y in list2] [4, 5, 6, 8, 10, 12, 12, 15, 18]數值判斷可以鏈接使用,例如1<x<3能夠判斷變量x是否在1和3之間
[x for x in list1 if 4>x>1] [2, 3]多重循環
# 9 9乘法表 for i in range(1,10):for j in range(1,i+1):result = j * iprint('%s x %s = %-5s ' % (j,i,result) , end=' ')#end=' '不換行print() 1 x 1 = 1 1 x 2 = 2 2 x 2 = 4 1 x 3 = 3 2 x 3 = 6 3 x 3 = 9 1 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16 1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25 1 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36 1 x 7 = 7 2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49 1 x 8 = 8 2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 64 1 x 9 = 9 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81break語句
break語句用在while和for循環中
break語句用來終止循環語句,即循環條件沒有False或者序列還沒被完全遞歸完,也會停止執行循環語句
# 統計第1個9在2的100次方中出現的位置: num = 2**100 pos = 0 for digit in str(num) :pos = pos + 1if digit == "6":break print("2**100 is: %d \nthe first position of 6 is Pos.%d" % (num, pos)) 2**100 is: 1267650600228229401496703205376 the first position of 6 is Pos.3如果在嵌套循環中,break語句將停止執行本層的循環
# 求2到10之間的素數 i = 2 while(i<=10):flag = 0j = 2while(j <= (i/j)):if i%j == 0 :flag = 1breakj = j + 1if flag == 0 :print(i,"是素數")i = i + 1 2 是素數 3 是素數 5 是素數 7 是素數continue語句
continue語句用來跳過當前循環的剩余語句,然后繼續進行下一輪循環
# 求在2的100次方中刪除所有的6后的數字 num = 2**100 without6 = '' for digit in str(num):if digit == '6':continuewithout6 += digit print("2**100 is: %d \nwithout 6 is: %s" % (num, without6)) 2**100 is: 1267650600228229401496703205376 without 6 is: 12750002282294014970320537pass語句
pass語句是空語句,是為了保持程序結構的完整性,一般用做占位語句
# 求在2的100次方中刪除所有的6后的數字 num = 2**100 without6 = '' for digit in str(num):if digit == '6':passelse:without6 += digit print("2**100 is: %d \nwithout 6 is: %s" % (num, without6)) 2**100 is: 1267650600228229401496703205376 without 6 is: 12750002282294014970320537程序結構
函數
-
函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段
-
函數能提高應用的模塊性,和代碼的重復利用率
-
Python提供了許多內建函數,比如print()
-
開發者也可以自己創建函數,這被叫做用戶自定義函數
函數定義語法:
def functionname(parameters):
?? “函數_文檔字符串”
?? function_suite
??return [expression]
# 定義一個求n!的函數 def fact(n):result = 1for i in range(1,n+1):result = result * ireturn result- 可選參數以集合的方式出現在函數聲明中并緊跟著必選參數,可選參數可以在函數聲明中被賦予一個默認值。已命名的參數需要賦值。
- 函數的第一行語句可以選擇性地使用文檔字符串—用于存放函數說明
- 函數可以返回一個元組(使用元組拆包可以有效返回多個值)
全局變量與局部變量
- 全局變量在函數之外聲明局部變量在函數內容聲明
- 函數參數也是局部變量,不需要在函數內部重復定義!!!
- 全局變量可以不需要任何特殊的聲明即能讀取,但如果想要修改全局變量的值,就必須在函數開始之處用global關鍵字進行聲明,否則Python會將此變量按照新的局部變量處理(請注意,這點很容易被坑)
類
- 類(Class)用來描述具有相同的屬性和方法的對象的集合
- 它定義了該集合中每個對象所共有的屬性和方法
- 對象是類的實例
class ClassName:
?? ‘類的幫助信息’ #類文檔自負串
?? class_suite #類體
class_suite由類成員,方法,數據屬性組成
#定義一個叫做DeepLearner的類 class DeepLearner(object):'DeepLearner是深度學習者的類,這是有關這個類的幫助文檔'# LearnerCount變量是一個類的屬性,它的值將在這個類的所有實例之間共享。你可以在內部類或外部類使用DeepLearner .Llearnercount訪問learnerCount = 0# _init_()方法是一種特殊的方法,被稱為類的構造函數或初始化方法,當創建了這個類的實例時就會調用該方法# 類的方法與普通的函數只有一個特別的區別—它們必須有一個額外的第一個參數名稱,按照慣例它的名稱是 self# seLf代表類的實例,參數seLf在定義類的方法時是必須要的,雖然在調用時不必傳入相應的參數def __init__(self, name,schoolName) :self.name = nameself.schoo1Name = schoolNameDeepLearner.learnerCount = DeepLearner.learnerCount + 1def getName( self):return self.namedef getSchoo1Name( self):return self.schoolNamedef displayCount(self):print("Total DeepLearner count is %d" % DeepLearner.learnerCount)def displayLearner(self):print("Name: %s, School: %s" % (self.name,self.schoolName)) #打印類的幫助文檔信息 print(DeepLearner.__doc__) DeepLearner是深度學習者的類,這是有關這個類的幫助文檔 #實例化類其他編程語言一般用關鍵字new,但在Python中并沒有這個關鍵字 #新建一個對象 newLearner1 = DeepLearner('giggle','Zhejiang University') newLearner2 = DeepLearner('sherry','Zhejiang University of Technology') # 使用點號 . 來訪問對象的屬性和方法 print(newLearner1.learnerCount) newLearner1.displayCount() 2 Total DeepLearner count is 2文件
Python針對文件的處理有很多內建的函數庫可以調用
#寫文件 with open( "test.txt", "wt" ) as out_file:out_file.write("該文本會寫入到文件中\n看到我了吧") #讀文件 with open( "test.txt", "rt" ) as in_file:text = in_file.read() print(text)異常
Python中的異常由try-except [exceptionname]塊處理
def except_function():try :#故意除零10 / 0except ZeroDivisionError: print("發生除零異常啦.")else:#正常情況.print ("一切正常啦.")passfinally:#無論是否發生異常都將執行最后的代碼print ( "final1y必須被執行,不管有沒有發生異常.") except_function() 發生除零異常啦. final1y必須被執行,不管有沒有發生異常.如果不知道發生什么異常,可以 except: 表示抓取所有異常
導入外部庫
外部庫可以使用import [libname]關鍵字來導入
可以用from [libname] import [funcname]來導入所需要的函數
import random from time import time import numpy as np import matplotlib.pyplot as plt #繪圖模塊randomint = random.randint(1,100) print(randomint)startTime=time() print(startTime) #直接采用np生成等差數列的方法,生成100個點,每個點的取值在-1~1之間 x_data = np.linspace(-1,1,100) # y = 2x +1 y_data = 2* x_data + 1.0 #在Jupyter中,使用matplotlib顯示圖像需要設置為 inline模式,否則不會顯示圖像 %matplotlib inline plt.figure() plt.scatter(x_data,y_data)#畫出隨機生成數據的散點圖 #顯示運行總時間 秒為單位 duration = time()-startTime print(duration)獲取幫助信息
如果想知道一個對象(object)是如何工作的,可以調用help(對象)!另外還有一些有用的方法,
dir()會顯示該對象的所有方法,還有會顯示其文檔:
#獲取整形的所有方法 dir(1) help(int) a = 12345 a.__neg__()打.后加tab鍵獲取自動填充放方法選擇
總結
以上是生活随笔為你收集整理的第一章 TensorFlow基础——python语法(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一章 TensorFlow基础——py
- 下一篇: python——selenium框架实现