Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助

Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化  format函数字符串格式化  帮助

 

 

 

目录

Pycharm使用技巧(转载)

Python第一天  安装  shell  文件

Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化

Python第三天 序列  5种数据类型  数值  字符串  列表  元组  字典

Python第四天   流程控制   if else条件判断   for循环 while循环

Python第五天   文件访问    for循环访问文件    while循环访问文件   字符串的startswith函数和split函数

Python第六天   类型转换

Python第七天   函数  函数参数   函数变量   函数返回值  多类型传值    冗余参数   函数递归调用   匿名函数   内置函数   列表表达式/列表重写

Python第八天  模块   包   全局变量和内置变量__name__    Python path

Python第九天  面向对象  类定义   类的属性    类的方法    内部类   垃圾回收机制   类的继承 装饰器

Python第十天   print >> f,和fd.write()的区别    stdout的buffer  标准输入 标准输出  标准错误   重定向 输出流和输入流

Python第十一天    异常处理  glob模块和shlex模块    打开外部程序和subprocess模块  subprocess类  Pipe管道  operator模块   sorted函数   生成器  walk模块   hashlib模块

Python第十二天     收集主机信息     正则表达式  无名分组   有名分组

Python第十三天   django 1.6   导入模板   定义数据模型   访问数据库   GET和POST方法    SimpleCMDB项目   urllib模块   urllib2模块  httplib模块  django和web服务器整合  wsgi模块   gunicorn模块

Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式

Python第十五天  datetime模块 time模块   thread模块  threading模块  Queue队列模块  multiprocessing模块  paramiko模块  fabric模块  

 

 

Python变量


变量的命名
- 变量名由字母、数字、下划线组成。
- 变量不能以数字开头
- 不可以使用关键字
- a a1 _a
变量的赋值
- 是变量的声明和定义的过程,等号两边可以有空格,而bash等号两边不能有空格
a = 1
id(a)

变量不需要声明,根据所赋值内容决定变量的数据类型
aa是整型
>>> aa=3
>>> aa
3


非数字要用引号括起来,否则会认为是变量
abc = ccc 报错 NameError: name 'ccc' is not defined
ab = 'ddd' 正确
>>> ab = 'ddd'
>>> print ab
ddd



运算符与表达式
Python运算符包括
- 赋值运算符
=:x = 3, y = ‘abcd’
+=: x += 2
-=:x -= 2
*=:x *= 2
/=: x /= 2
%=:x %= 2

- 算术运算符
+
-
*
/   除法,有小数
//  整除,没有小数
%
**   乘方 2**3=8 表示2的3次方

- 关系运算符
> :1 > 2
< :2 < 3
>=:1 >= 1
<=:2 <= 2
==:2 == 2
!=: 1 != 2

- 逻辑运算符
and逻辑与: True and False
or逻辑或: False or True
not逻辑非: not True



表达式是将不同的数据(包括变量、函数)用运算符号按一定规则连接起来的一种式子。




数字类型小于任何其他非数字类型,所以也小于字符串类型。
字符串之间的比较,从左到右,先比较第一个字符,如果第一个字符一样,再比较第二字符,依次进行比较
那么字符之间比较的原则是根据ACSII,'a'的ASCII值是97,ord('a')是97,ord('A')是65,所以’a' > 'A'。
那么’4‘与’35'哪个大?





input()与raw_input()区别

input()与raw_input()返回值都是字符串


input() 输入的内容不能是字符,否则会当成变量
raw_input()   输入的内容不受限制

#!/usr/bin/python
#encoding:utf8
num1 = input("请输入数字: ")
num2 = input("Please input a number: ")

print "%s + %s = %s" % (num1, num2, num1+num2)
print "%s - %s = %s" % (num1, num2, num1-num2)
print "%s * %s = %s" % (num1, num2, num1*num2)
print "%s / %s = %s" % (num1, num2, num1/num2)
print "%s " % num1

 

print "%.2f" % (int(free)/1024.0)+'M'

 

 

 

 

字符串格式化

在Python中存在两种格式化字符串的方法,即%表达式和format函数。%表达式从Python 诞生之日就开始存在了,是基于C语言的printf 模型,目前还广泛使用。
format函数是Python 2.6 和Python 3.0 新增加的技术,是Python独有的方法,并且和%表达式的功能有不少的重叠。虽然%表达式目前还广泛使用
但是, format 函数才是字符串格式化的未来,%表达式在Python 未来的版本中可能会被弃

 

%表达式
%表示格式化字符串的格式符号。
%s,格式化字符串,字符,如果只有一个字符,通常不用括号,格式化之后变为字符串
%d,表示整数的字符串,格式化字符串,数字,如果只有一个字符,通常不用括号,格式化之后变为字符串
%x,表示16进制的字符串
%f,表示浮点数字符串,%.2f ,.2表示显示几位小数,如果只有一个字符,通常不用括号,格式化之后变为字符串,所以可以用+号连接'M'
%r,表示用rper()方法处理对象,打印时能够重现它所代表的对象(rper() unambiguously recreate the object it represents),https://www.jb51.net/article/108589.htm

 

示例
import sys
i =10
sys.stdout.write("str:%d" %i)



import sys
i ='10'
sys.stdout.write("str:%s" %i)


字典
import sys
i ='10'
print "str:%(key)s" % {'key':i}


import sys
i =10
sys.stdout.write("str:%02f" %i)

 

 

format()函数
使用str.format()函数
print ('6:\t|{0:b}'.format(3))
print ('7:\t|{0:c}'.format(3))
print ('8:\t|{0:d}'.format(3))
print ('9:\t|{0:o}'.format(3))
print ('10:\t|{0:x}'.format(3))
print ('11:\t|{0:e}'.format(3.75))
print ('12:\t|{0:g}'.format(3.75))
print ('13:\t|{0:n}'.format(3.75))#浮点数
print ('14:\t|{0:n}'.format(3))  #整数
print ('15:\t|{0:%}'.format(3.75))


#属性赋值,比较少用

class Customer(object):
    def __init__(self,name):
        self.name=name
    def __str__(self):
        return 'name : {self.name}'.format(self=self)

if __name__=='__main__':
    print str(Customer('aa'))

 

#使用'{}'占位符
print('I\'m {},{}'.format('Hongten','Welcome to my space!'))
print('#' * 40)

#也可以使用'{0}','{1}'形式的占位符,位置符号
print('{0},I\'m {1},my E-mail is {2}'.format('Hello','Hongten','hongtenzone@foxmail.com'))
#可以改变占位符的位置
print('{1},I\'m {0},my E-mail is {2}'.format('Hongten','Hello','hongtenzone@foxmail.com'))
print('#' * 40)

#使用'{name}'形式的占位符,使用名称符号
print('Hi,{name},{message}'.format(name = 'Tom',message = 'How old are you?'))
print('#' * 40)

#混合使用'{0}','{name}'形式
print('{0},I\'m {1},{message}'.format('Hello','Hongten',message = 'This is a test message!'))
print('#' * 40)

 

格式化元组

 point = (1,2)
 print '{0[0]};{0[1]}'.format(point)

 


#下面进行格式控制
import math
print('The value of PI is approximately {}.'.format(math.pi))
print('The value of PI is approximately {!r}.'.format(math.pi))
print('The value of PI is approximately {0:.3f}.'.format(math.pi))


注意:字符串里面不能花括号 包含  花括号,也就是花括号不能嵌套,否则会报错,KeyError 

python字符串中的KeyError
'${  ss {}  }'.formate('nihao')

报错
{}'''.format(HOST,PORT,USER,PASSWORD,timestampfile,timestampdoc,os.path.join(BACKDIR, now))
KeyError: ' $and'

 



Python 会自动将format 函数的参数依次传递给{}占位符
print 'port={}'.format('11') + '\n'



通过下标访问参数以后, 一个参数可以出现多次
print 'port={1},{1}'.format('11','22') + '\n'



在参数较少的情况下,通过占位符或下标的形式访问format 函数的参数并没有什么问
题。如果参数较多就不太适合了,这个时候,可以使用解释性更强的关键字参数形式
d=dict(good='a',bad='b')
print 'port={good}, haha is {bad}'.format(**d) + '\n'


format函数精度,符号,宽度,对齐方式,字符填充,逗号分隔进行测试
"{:.2f }".format(3.1415926)
'3.14'
"{:+.2f}".format(3.1415926)
'+3.14'
"{:10.2f}".format(3.1415926)
'3.14'
"{:^l0.2f}".format(3.1415926)
' 3.14  '
"{:,}".format(1234567)
'1,234,567'

注意:%s方式格式化会有元组的问题,需要用.format方式才能解决

https://segmentfault.com/q/1010000000334606


a='port=%s' + '\n' %(mongoport,)
TypeError: not all arguments converted during string formatting

print ('port=%d' + '\n') % (mongoport)
TypeError: %d format: a number is required, not str

 

 



python转义符

python里面有两种转义符

1、字符串格式化里面的转义符

2、正则表达式里面的转义符

 

1、%,两个特殊符号前面加%转义(字符串格式化里面的转义符)

sys.stdout.write("str:%d%%" %i)

 

"str:%d%%" %i :百分之多少  %d  %  比如100%

sql = "grant replication slave on *.* to %s@'%%' identified by '%s'" %

%转义

 

 2、\ 转义符  (正则表达式里面的转义符)

转义符和元字符跟shell的基本一样,转义都有\ 反斜杠

http://www.cnblogs.com/MYSQLZOUQI/p/5189884.html

python元字符:    .、^、$、*、+、?、{}、[]、\ 转义、|、()

 

我们想让通配符,或者元字符变成普通字符。那么这里我们就需要用到转义符了。 shell提供转义符有三种。 

'' 单引号,硬转义,其内部所有的shell元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。
"" 双引号,软转义,其内部只允许出现特定的shell元字符($,`,\):$用于变量值替换、`用于命令替换、\用于转义单个字符
\ 反斜杠,转义,去除其后紧跟的元字符或通配符的特殊意义。

http://www.2cto.com/os/201410/344020.html

 

如果字符串里需要用到单引号,那么字符串外面就需要双引号,如果外面也用单引号就会报错

"change master to master_host='%s',master_port" %(abc)

 


字符串的值本身包含单引号的情况,我们使用双引号来定义字符串。
字符串的值本身包含双引号的情况,我们使用单引号来定义字符串

intro = "He's a teacher"
statement = 'John said to me: "Can you do me a favour "'

字符串的值本身既包含双引号又包含单引号,那么我们使用转义字符\来处理

intro = 'He\'s a teacher'
statement = "John said to me: \"Can you do me a favour \""

加上原始字符

intro = r"He's a \ teacher"

 

 

使用三个引号来定义字符串

""" type " license " for more information. Details about 'ob ', use ' object? for extra details . """

使用三个引号定义的字符串一般称为多行字符串
多行字符串起止都是三个单引号或三个双引号,在三重引号之间,所有的引号、换行符、制表符等特殊字符,都会被认为是普通的字符, 是字符串的一部分


 

#encoding:utf8:指定字符编码支持中文
有几种写法
#encoding:utf8
#encoding:utf-8
#-*- encoding:utf-8 -*-
#coding:utf8
#coding:utf-8
#-*- coding:utf-8 -*-

 


帮助

dir()函数:看一下对象的属性,有哪些函数
help()函数
type()函数
ctrl+鼠标左键看源码,比如os.path,点进去会到__builtin__.py,不需要help函数这麽麻烦

type函数
查看变量的数据类型
type(变量名)

help函数
查看帮助
help(名称)



 

posted @ 2017-01-13 17:35 桦仔 阅读(...) 评论(...) 编辑 收藏