输入输出语句 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 |
时区的名字(若是不存在为空字符) |
%% |
'%'字符 |