輸入輸出語句 python
>>> x = 10 git
>>> if x > 5: shell
... print("I'm jack") windows
... python3.x
I'm jack 函數
Python不是靠括號決定語法是否結束,而是靠縮進判斷程序是否結束。Python語言在語法習慣上有些變化: 工具
Python中全部的符合語句,首行以冒號結尾,下一行的嵌套按照縮進格式書寫,縮進表明代碼塊結束,不用使用大括號表明程序結束。 測試
1。、接收用戶輸入 this
>>> info = input('please input you name: ') spa
在python3中使用input函數接收用戶輸入,而在python2.6之前的版本使用raw_input接收用戶輸入
二、判斷用戶輸入的數據是否爲純數字
①字符串對象的isdigit方法
字符串對象的isdigit方法用於檢測字符串是否爲純數字,若是是純數字返回值爲真,不然返回值爲假
>>> name = 'jack'
>>> age = '20'
>>> name.isdigit() #調用字符串的isdigit方法測試
False
>>> age.isdigit()
True
②四則運算器
③用try測試是否爲數字
try測試更加簡潔,格式:
try:
測試語句
expect:
測試失敗以後的執行語句
else:
測試成功以後的執行的組合語句
注意:else語句是try的組合語句
在python3.x中,print是一個內置函數,用關鍵字參數來表示特定模式
在python2.x中,print是語句,擁有本身的特定語法
>>> name = 'jack'
>>> age = 18
>>> sex = M
>>> print(name,age,sex)
('jack', 18, 'M')
可使用sep參數,在打印的滅個對象文本之間插入一個字符串。若是沒有指定sep,默認使用空格分開打印的對象文本。
>>> print(name,age,sex,sep=":") #使用:做爲分隔符
jack:18:M
>>> print(name,age,sex,sep="") #不使用分隔符
jack18M
使用end參數,在打印的對象文本以後加入一個字符串。默認使用換行符。
>>> print(name,age,sex);print(name,age,sex)
jack 18 M
jack 18 M
>>> print(name,age,sex,end="");print(name,age,sex) #使用end參數,讓輸出不換行
jack 18 Mjack 18 M
>>> print(name,age,sex,end="->");print(name,age,sex)#使用end參數,在輸出內容後面輸出其餘內容
jack 18 M->jack 18 M
sep參數和end參數能夠結合使用
>>> print(name,age,sex,sep=":",end="->\n")
jack:18:M->
也可使用file參數,把print內容直接輸出到指定文件中
>>> print(name,age,sex,sep=":",file=open('test.txt','w'))
格式 |
描述 |
%c |
字符及其ASCII碼 |
%s |
字符串(使用str轉換任意python對象) |
%r |
字符串(使用repr轉換任意python對象) |
%d(%i) |
有符號整數(十進制) |
%u |
無符號整數(十進制) |
%x |
無符號整數(十六進制) |
%X |
無符號整數(十六進制大寫字符) |
%e |
浮點數字(科學計數法) |
%E |
浮點數字(科學計數法,用E代替e) |
%f(%F) |
浮點數字(用小數點符號) |
%g |
浮點數字(根據值得大小採用%e或%f) |
%G |
浮點數字(相似於%g) |
%p |
指針(用十六進制打印值得內存地址) |
%n |
存儲輸出字符的數量放進參數列表的下一個變量中 |
基本的轉換說明符包含如下部分,注意其中的順序:
A、%字符:標記轉換說明符的開始
B、轉換標識(可選):-標識左對齊,+標識在轉換值以前要加上正負號;""空白字符表示整數以前保留空格;0表示轉換值若位數不夠則用0填充
C、最小字段寬度(可選):轉換後的字符串至少應該具備該值指定的寬度、若是是*,則寬度會從值元組中讀出
D、點(.)後跟精度值(可選):若是轉換的是實數,精度值就表示出如今小數點後的位數。若是轉換的是字符串,那麼該數字就表示最大字段寬度。若是是*,那麼精度將會從元組中讀出。
注意:若是格式化裏面包含了百分號,那麼必須使用%%,這樣python就不會將百分號誤認爲是轉換說明符了
>>> print('%s %s %s %d years old' % ('my','name','is',20))
my name is 20 years old
>>> print (' PI is : %f' % math.pi)
PI is : 3.141593
>>> print('...%10f...' % math.pi) #輸出十位的浮點數
... 3.141593... #經過…能夠看到左側補了兩位空格,補全到十位
>>> print('...%10.2f...' % math.pi)
... 3.14... #輸出10,小數精度2位,不足位用空格補全
>>> print('...%*.*f...' % (10,5,math.pi))
... 3.14159... #若是精度是*.*,會從值中讀取精度
在字段寬度和精度以前能夠(可選)放置一個"標表",該標表的值能夠是:
0(零):表示數字將會用0進行填充
+(加號):表示不論是正數仍是負數都標示出符號(在對齊時頗有用)
-(減號):表示左對齊數值
空格:表示正數前加上空格,這對須要對齊正負數時會頗有用
>>> print('...%010.2f...' % math.pi)
...0000003.14... #輸出10位,不足位用0補全
>>> print('...%-10.2f...' % math.pi)
...3.14 ... #輸出10位,左側對齊
>>> print('...%+f...' % math.pi)
...+3.141593... #在數值以前輸出正負號
Python流程控制
>>> age = 18
>>> if age >= 16:
... print("too old")
...
too old
>>> age = 18
>>> if age >= 16:
... print("too old")
... else:
... print("too young")
...
too old
#!/usr/bin/env python
num = input('please input a num: ')
if not num.isdigit: #判斷輸出的是否爲數字,不然報錯
print("error!input a num")
elif int(num) >= 18: #input接收爲字符型,轉爲整型
print("old")
else:
print("young")
Python中布爾值測試符
任何非零數字或非空對象都爲真
>>> if 1:
... print("true")
... else:
... print("false")
...
True
數字零、空對象以及特殊對象被認爲假
>>> if 0:
... print("true")
... else:
... print("false")
...
False
比較和相等測試會返回True或False
>>> 2 < 3 , 5 < 3
(True, False)
布爾and和or運算符會返回真或假
>>> 1 and 1
1
>>> 1 and 0
0
>>> 0 or 1 #or測試,會由左至右求值操做,返回第一個爲真的操做對象
1
>>> not 1 #若是值爲真,就返回假;若是爲假,就返回真
False
>>> 3 and 4 , 3 and 7 #若是兩側都爲真,則輸出右側的值
(4, 7)
>>> '' and () #若是兩側都爲假,則碰到的第一個假會終止運行,並返回第一個值
''
>>> () and ''
()
比較元素符條件中最基本的運算符,詳見下表:
表達式 |
描述 |
x == y |
X等於y |
x < y |
X小於y |
x > y |
X 大於y |
X >= y |
X大於等於y |
X <= y |
X小於等於y |
X != y |
X 不等於y |
X is y |
X和y是同一個對象 |
X is not y |
X和y是不一樣對象 |
X in y |
X是y容器(序列等)的成員 |
X not in y |
X不是y容器(序列等)的成員 |
>>> a = 'test'
>>> b = 'text'
>>> if a is b:
... print('True')
... else:
... print('False')
...
False
while循環只要測試表達式爲真,就一直循環
>>> a = 1
>>> while a <= 100:
... print(a)
... a += 1
>>> a = 1
>>> while a <= 10:
... a += 1
... if a == 5:
... continue
... print(a)
用於:
>保證格式完整
>保證語義完整
>>> if age >= 18:
... print("too old")
... else:
... pass
>>> for i in range(4):
... print(i)
>>> for i in [1,2,3,4]: #for遍歷列表
... print(i)
>>> for i in 'jack': #for遍歷字符串
... print(i)
>>> for i in (1,2,3,4): #for遍歷元組
... print(i)
>>> y = {'name':'jack','age':'18'}
>>> for x in y :
... print(x,'is',y[x])
...
age is 18
name is jack
函數原型:range(start, end, scan)
參數含義:
Start:計數從start開始。默認是從0開始
End:計數到end結束,但不包括end
scan:每次跳躍的間距,默認爲1
注意:在python2.x中,range返回值是一個列表
在python3.x中,range返回值是一個迭代值,因此因此range(5)獲得的值是range(0,5),可是不影響for循環使用,不過要想在命令行中輸出列表,須要:list(range(5)
>>> list(range(1,20,2))
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
Python中重要的系統模塊
>>> import os
>>> os.system('ls /root')
使用這種方法不能把執行結果賦值變量,進行程序運算
>>> a = os.system('ls /root')
anaconda-ks.cfg install.log install.log.syslog py test.py #命令結果會輸出到屏幕,可是變量中只有命令的返回值
>>> print(a)
0
>>> b = os.system('ls /rootoooo')
ls: cannot access /rootoooo: No such file or directory
>>> print(b) #若是命令報錯,則返回值爲非零
512
>>> a = os.popen('ls /root')
>>> print(a.read())
經過os.popen()返回的是file read的對象,對其進行讀取read()的操做能夠看到執行的輸出,可是沒法讀取程序執行的返回值
Subprocess是python建立子進程的工具,而後在子進程中執行另外一個進程
>>> subprocess.call(['ls','-l'])
>>> subprocess.call(['ls','-l','/'])
#把命令(ls)和選項(-l),以及參數(/)當作列表傳遞給subprocess.call()
>>> subprocess.call('ls -l',shell=True)
可使用shell=True這個參數,這個時候,咱們使用一整個字符串,而不是一個列表來運行子進程。Python將會運行一個shell,再用這個shell來解釋這整個字符串
若是用call方法賦值,只會把命令返回值賦予變量,如:
>>> a = subprocess.call(['ls','-l'])
>>> print(a)
因此須要使用subprocess模塊的check_output方法來給予變量賦值,也可使用getstatusoutput方法
>>> a = subprocess.getstatusoutput('ls /root')
>>> print(a) #調用getstatusoutput,執行命能夠看到返回值與命令結果
(0, 'anaconda-ks.cfg\ninstall.log\ninstall.log.syslog\npy\ntest.py')
>>> b = subprocess.check_output(['ls','-l','/root'])
>>> print(b) #能夠看到命令執行結果
python os模塊包含廣泛的操做系統功能,若是你但願你的程序可以與平臺無關的話,這個模塊尤其重要
#輸出字符串指示正在使用的平臺,若是是windows則用'nt'表示,對於Linux、Unix用戶,則是'posix'
>>> import os
>>> os.name
'posix'
函數獲得當前工做目錄,即當前python腳本工做的目錄路徑
返回指定目錄下的全部文件和目錄名
刪除一個文件
os.remove('test.py')
>>> os.system('ls -l /root')
函數返回一個路徑的目錄名和文件名
>>> os.path.split('/root/py')
('/root', 'py')
>>> os.path.isdir('/root')
True
>>> os.path.isfile('anaconda-ks.cfg')
True
>>> os.path.exists('/root')
True
>>> os.path.exists('/rooooooot')
False
>>> os.path.abspath('.')
'/root'
>>> os.path.abspath('py')
'/root/py'
>>> os.path.getsize('/root')
4096
>>> os.path.getsize('/root/py')
4096
>>> os.path.getsize('anaconda-ks.cfg')
1067
(11)os.path.basename() #返回文件名
>>> os.path.basename('/root/anaconda-ks.cfg')
'anaconda-ks.cfg'
(12) os.path.dirname() #返回文件路徑
>>> os.path.dirname('/root/anaconda-ks.cfg')
'/root'
(13) os.remove() #刪除文件
os.remove('/root/test.sh')
(14) os.rmdir() #刪除目錄
os.rmdir('test')
(15) os.mkdir() #創建指定目錄
>>> os.mkdir('/root/dir') #創建一個目錄
>>>os.makedirs('/root/test/dir/jack') #創建多個目錄
python的logging模塊提供了通用的日誌系統,能夠方便第三方模塊或者是應用使用。這個模塊提供不一樣的日誌級別,並能夠採用不一樣的方式記錄日誌,好比文件,HTTP GET/POST,SNMP,Socket等,甚至能夠本身實現具體的日誌記錄方式。
一、logging使用
>>> import logging
>>> logging.debug('this is a debuf')
>>> logging.warning('this is a debuf')
WARNING:root:this is a debuf #默認只有warning級別打印到屏幕
日誌級別大小關係爲:CRITICAL > ERROR > WARNING > INFO > DEBUG >NOTSET
logging.basicConfig函數各參數:
filename:指定日誌文件名
filemode:和file函數意義相同,指定日誌文件的打開模式,'w'或'a'
format:指定輸出的格式和內容,format能夠輸出不少有用信息,以下所示:
%(levelno)s:打印日誌級別的數值
%(levelname)s:打印日誌級別名稱
%(pathname)s:打印當前執行程序的路徑,其實就是sys.argv[0]
%(filename)s:打印當前執行程序名
%(funcName)s:打印日誌的當前函數
%(lineno)d:打印日誌的當前行號
%(sactiome)s:打印日誌的時間
%(thread)d:打印線程ID
%(threadName)s:打印線程名稱
%(process)d:打印進程ID
%(message)s: 打印日誌信息
Datefmt:指定時間格式,同time.strftime()
Level:設置日誌級別,默認爲logging.WARNING
Stream:指定將日誌的輸出流,能夠指定輸出到sys.stderr,sys.stdout或者文件,默認輸出到sys.stderr,當stream和filename同時指定時,stream被忽略。
time模塊時python的時間模塊,在開始以前,首先說明一下幾點:
>>> time.time()
1441255787.3995078 #時間戳是按秒計算偏移量
>>> time.localtime()
time.struct_time(tm_year=2015, tm_mon=9, tm_mday=3, tm_hour=12, tm_min=50, tm_sec=57, tm_wday=3, tm_yday=246, tm_isdst=0)
time.localtime()輸出說明
索引(Index) |
屬性(Attribute) |
值(Values) |
0 |
tm_year(年) |
好比2013 |
1 |
tm_mon(月) |
1-12 |
2 |
tm_mday(日) |
1-31 |
3 |
tm_hour(時) |
1-23 |
4 |
tm_min(分) |
0-59 |
5 |
tm_sec(秒) |
0-61 |
6 |
tm_wday(weekday) |
0-6(0表示週日) |
7 |
tm_yday(一年中第幾天) |
1-366 |
8 |
tm_isdst(是不是夏令時) |
默認爲-1 |
>>> time.ctime()
'Thu Sep 3 13:02:38 2015'
#gmtime()方法是將一個時間戳轉換爲UTC時區(0時區)的struct_time
>>> time.gmtime()
time.struct_time(tm_year=2015, tm_mon=9, tm_mday=3, tm_hour=5, tm_min=4, tm_sec=46, tm_wday=3, tm_yday=246, tm_isdst=0)
#查看格林威治標準時間
將一個struct_time或者9個參數的時間元組轉化爲時間戳
>>> time.localtime()
time.struct_time(tm_year=2015, tm_mon=9, tm_mday=3, tm_hour=13, tm_min=6, tm_sec=58, tm_wday=3, tm_yday=246, tm_isdst=0) #查看當前時間元組
>>> time.mktime(time.localtime())
1441256956.0 #把當前時間元組轉爲時間戳
>>> time.mktime((2015,9,3,2,2,9,3,127,0))
1441216929.0 #把這個元組轉爲時間戳
>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
'2015-09-03 13:16:10' #把當前時間轉換爲字符串日期
日期格式參數說明:
格式 |
含義 |
%a |
本地(locale)簡化星期名稱 |
%A |
本地完整星期名稱 |
%b |
本地簡化月份名稱 |
%B |
本地完整月份名稱 |
%c |
本地相應的日期和時間表示 |
%d |
一個月中的第幾天(01-31) |
%H |
一天中的第幾個小時(24小時制,00-23) |
%I |
第幾個小時(12小時制,01-12) |
%j |
一年中的第幾天(001-366) |
%m |
月份(01-12) |
%M |
分鐘數(00-59) |
%p |
本地am或者pm的相應符 |
%S |
秒(01-61) |
%U |
一年中的星期書。(00-53星期天是一個星期的開始)第一個星期以前的全部天數都放在第0周 |
%w |
一個星期中的第幾天(0-6,0是星期天) |
%W |
和%u基本相同,不一樣的是%W以星期一爲一個星期的開始 |
%x |
本地相應日期 |
%X |
本地相應時間 |
%y |
去掉世紀的年份(00-99) |
%Y |
完整的年份 |
%Z |
時區的名字(若是不存在爲空字符) |
%% |
'%'字符 |