009 数据类型及数据运算及格式化输出format

本节内容:

  • 数据类型
    •   数字
    •   布尔值
    •   字符串
    •   字符串的格式化输出format
  • 数据运算
    •   算数运算
    •   比较运算
    •   赋值运算
    •   逻辑运算
    •   成员运算
    •   身份运算
    •   位运算

 

一、数据类型

1、数字

int(整型)
  在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
  在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

long(长整型)
  跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
  注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。

float(浮点型)
  浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。

complex(复数)
  复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257

函数:

  abs(3)=3 绝对值

  int(2.7)=3,int(-2.7)=-2 取大于且最接近该值的整数

  round(2.5,2)=3.00 四舍五入,保留2位小数

 

2、布尔值

真或假
1 或 0

 

3、字符串 

字符串拼接:
  python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。

 字符串格式化输出 

name = "dream"
print("i am %s " % name)

PS: 字符串是 %s;整数 %d;浮点数%f

字符串常用功能:

 

字符串特性:不可修改,参考练习:
#基础部分
name='dRe吴am'
print(name.capitalize())  #首字母大写
print(name.casefold())#大写全部变小写
print(name.center(50,"-"))#输出 '----------------------dReam-----------------------'
print(name.count('ea')) #统计ea出现次数
print(name.encode())#将字符串编码成bytes格式"b'dRe\xe5\x90\xb4am'"
print(name.endswith("am")) #判断字符串是否以am结尾
print("dRe\t吴am".expandtabs(10))#输出'dRe       吴am', 将\t转换成多长的空格
print(name.find('am'))#查找am,找到返回其索引, 找不到返回-1
name.index('a')  #返回a所在字符串的索引
'9aA'.isalnum()   #True
'9'.isdigit() #是否整数
print(name.isnumeric())
print(name.isprintable())
print(name.isspace())
print(name.istitle())
print(name.isupper())
print("|".join(['alex','jack','rain']))
print('alex|jack|rain')
# format和format_map
msg = "1my name is {}, and age is {}"
print(msg.format("Dream",21))
msg = "2my name is {1}, and age is {0}"
print(msg.format("Dream",21))
msg = "3my name is {name}, and age is {age}"
print(msg.format(age=21,name="Dream"))
msg = "4my name is {name}, and age is {age}"
print(msg.format_map({'name':'Dream','age':21}))


#maketrans
intab = "aeiou"  #This is the string having actual characters.
outtab = "12345" #This is the string having corresponding mapping character
trantab = str.maketrans(intab, outtab)
str = "this is string example....wow!!!"
str.translate(trantab)
print(intab)
print(outtab)
print(str)
print(str.translate(trantab))

msg = "my name is {}, and age is {}"
n4="Hello 2orld"
print(msg.partition('is')) #输出('my name ', 'is', ' {}, and age is {}')
print("Dream, chinese name is Memory".replace("ea","EA",1))

msg.swapcase #大小写互换
msg.zfill(40)
'00000my name is {name}, and age is {age}'
n4.ljust(40,"-")#'Hello 2orld-----------------------------'
n4.rjust(40,"-")#'-----------------------------Hello 2orld'
b="ddefdsdff_哈哈"
b.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则

  

4、字符串的格式化format

ljust  左对齐 str.ljust(w)  《==》{0,<ws}.format(str)
rjust 右对齐 str.rjust(w) 《==》{0,>ws}.format(str)
center 居中对齐str.center(w) 《==》{0,^ws}.format(str)
0表示位置索引,s表示类型为字符型(d为整型,%为百分比,n任何类型数字)
print("0123456789012345678901234567")
print("Rank".ljust(5),"Player".ljust(20),"HR".rjust(3),sep="")
print('1'.center(5),"Barry Bonds".ljust(20),"762".rjust(3),sep="")
print('2'.center(5),"Hank Aaron".ljust(20),"755".rjust(3),sep="")
print('3'.center(5),"Babe Ruth".ljust(20),"714".rjust(3),sep="")

E:\PycharmProjects\PythonStudy\venv\Scripts\python.exe E:/PycharmProjects/PythonStudy/test2.py
0123456789012345678901234567
Rank Player               HR
  1  Barry Bonds         762
  2  Hank Aaron          755
  3  Babe Ruth           714
等价于
print("0123456789012345678901234567")
print("{0:^5s}{1:<20s}{2:>2s}".format("Rank","Player","HR"))
print("{0:^5n}{1:<20s}{2:>2s}".format(1,"Barry Bonds","762"))
print("{0:^5n}{1:<20s}{2:>2s}".format(3,"Hank Aaron","755"))
print("{0:^5n}{1:<20s}{2:>2s}".format(3,"Babe Ruth","714"))

E:\PycharmProjects\PythonStudy\venv\Scripts\python.exe E:/PycharmProjects/PythonStudy/test2.py
0123456789012345678901234567
Rank Player              HR
  1  Barry Bonds         762
  3  Hank Aaron          755
  3  Babe Ruth           714

 

 常用格式化数字

print(1,"{0:10d}".format(12345678))#数字是整型 12345678
print(2,"{0:10,d}".format(12345678))#增加千分位符 12,345,678
print(3,"{0:10.2f}".format(1234.5678))#四舍五入保留2位小数 1234.57
print(4,"{0:10,.2f}".format(1234.5678))#四舍五入并添加千分位(保留2位小数)  1,234.57
print(5,"{0:10,.3f}".format(1234.5678))#四舍五入并添加千分位(保留3位小数) 1,234.568
print(6,"{0:10.2%}".format(12.345678))# 转为百分数并四舍五入(保留2位小数) 1234.57%
print(7,"{0:10.3%}".format(12.345678))#转为百分数并四舍五入(保留3位小数) 1234.568%

 

二、数据运算

1、算数运算

 

2、比较运算

 

3、赋值运算

 

4、逻辑运算

 

5、成员运算

 

6、身份运算

 

7、位运算

 

# !/usr/bin/python
a = 60  # 60 = 0011 1100
b = 13  # 13 = 0000 1101
c = 0

c = a & b;  # 12 = 0000 1100
print ("Line 1 - Value of c is ", c)

c = a | b;  # 61 = 0011 1101
print("Line 2 - Value of c is ", c)

c = a ^ b;  # 49 = 0011 0001 #相同为0,不同为1
print("Line 3 - Value of c is ", c)

c = ~a;  # -61 = 1100 0011
print("Line 4 - Value of c is ", c)

c = a << 2;  # 240 = 1111 0000
print("Line 5 - Value of c is ", c)

c = a >> 2;  # 15 = 0000 1111
print ("Line 6 - Value of c is ", c)

 

8、运算符优先级

 

 

posted @ 2018-06-09 22:21  航松先生  阅读(709)  评论(0)    收藏  举报