Bootstrap

python基础——(数字、字符串运算符)

目录

Python 2.x 与 Python 3.x 的主要区别:

Python 支持四种不同的数值类型:

Python Number 类型转换

 自动类型转换

Python math 模块、cmath 模块

Python 字符串格式化

Python三引号


Python 2.x 与 Python 3.x 的主要区别:

1) PRINT IS A FUNCTION

在Python 3.x中,输出语句需要使用print()函数,该函数接收一个关键字参数,以此来代替Python 2.x中的大部分特殊语法。下面是几个对比项:

目标Python 2.x的实现Python 3.x的实现
拼接并输出多个值print "The result is", 2+3print("The result is", 2+3)
打印一个元祖(1,2,3)print(1,2,3) 或 print (1,2,3)print((1,2,3))
输出一个内容并且不换行print “Hello”,print("Hello", end=" ")
输出一个新空白行printprint()
将输出内容输出到标准错误输出文件print >>sys.stderr, "fatal error"print("fatal error", file=sys.stderr)
自定义多个输出内容之间的分隔/拼接符N/Aprint("There are <", 2**32, "> possibilites!", sep="")

2) ALL IS UNICODE

Python 2.x中使用的默认字符编码为ASCII码,要使用中文字符的话需要指定使用的字符编码,如UTF-8;Python 3.x中使用的默认字符编码为Unicode,就不存在这个问题了。

3) 多变量同时赋值问题

python 2.x中如果要给多个变量同时赋值,要求=号右边的表达式返回结果的个数要与=号左边接收值的变量个数相等,不能多,也不能少。如:

a,b,c = (1,2,3) # 正常,a=1, b=2, c=3
a,b,c = range(5) # 报错,ValueError: too many values to unpack
a,b,c,d,e = [1,2,3] # 报错,ValueError: need more than 3 values to unpack 

python 3.x中允许=号昨边的变量数小于=号右边表达式返回的结果的个数,但是需要有1个且只能有1个字典类型的变量来接收多余的返回值。 python 3.x中=号左边的变量数也是不能多与=号右边表达式的返回值个数,但是错误提示语更清晰了。

a,b,c = (1,2,3) # 正常,a=1, b=2, c=3
a,*b,c = range(5) # 正常,a=0, b=[1,2,3], c=4
a,b,c,d,e = [1,2,3] # 报错,ValueError: not enough values to unpack (expected 5, got 3)

4) 某些库改名字了

Old NameNew Name
_winregwinreg
ConfigParserconfigparser
copy_regcopyreg
Queuequeue
SocketServersocketserver
markupbase_markupbase
reprreprlib
test.test_supporttest.support

5)输入

Python 2中接收用户输入时,主要使用的是raw_input()函数:

name = raw_input("Enter your name: ")
print "Your name is ", name

 

Python 3中接收用户输入时,主要使用的是input()函数:

name = input("Enter your name: ")
print("Your name is ", name)

通过Python 2中的raw_input() 与 Python 3中的input() 获取到的值都是str类型,若想转换为其他数据类型需要进行强制类型转换

Python 支持四种不同的数值类型:

  • 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。
  • 长整型(long integers) - 无限大小的整数,整数最后是一个大写或小写的L。
  • 浮点型(floating point real values) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
  • 复数(complex numbers) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

Python中主要的内置类型有以下几种:

  • numerics(数字):int、float、complex、bool
  • sequences(序列/有序集合): str、list、tuple、range
  • sets(无序集合):set
  • mappings(映射):dict
  • classes(类)
  • instance(实例)
  • exceptions(异常)

我们主要说下numberics、sequences、sets 和 mappings这四种内置数据类型。

Python Number 类型转换

int(x [,base ])         将x转换为一个整数  
bool(x)                 将x转换为一个布尔值
long(x [,base ])        将x转换为一个长整数  
float(x )               将x转换到一个浮点数  
complex(real [,imag ])  创建一个复数  
str(x )                 将对象 x 转换为字符串  
repr(x )                将对象 x 转换为表达式字符串  
eval(str )              用来计算在字符串中的有效Python表达式,并返回一个对象  
tuple(s )               将序列 s 转换为一个元组  
list(s )                将序列 s 转换为一个列表  
chr(x )                 将一个整数转换为一个字符  
unichr(x )              将一个整数转换为Unicode字符  
ord(x )                 将一个字符转换为它的整数值  
hex(x )                 将一个整数转换为一个十六进制字符串  
oct(x )                 将一个整数转换为一个八进制字符串 

 自动类型转换

自动类型转换是指两个不同类型的操作数参与运算时,Python会先按照以下规则先对其中一个操作数进行自动类型转换,然后再进行运算。

  • 如果有一个操作数是复数,另一个操作数会被转换为复数
  • 否则,如果有一个操作数是浮点型,另一个操作数会被转换为浮点型
  • (Python 2)否则,如果有一个操作数是长整形,另一个操作数会被转换为长整型
  • 否则,如果有一个是整型,另一个是布尔型,则布尔型会被转换为整型0或1
  • 否则,两个都是相同数据类型,无需类型转换
>>> 2 + (5+2j)  # 整型转复数
(7+2j)
>>> 2.0 + (5+2j)  # 浮点型转复数
(7+2j)
>>> True + (5+2j)  # 布尔型转复数
(6+2j)
>>> 2 + 5.0  # 整型转浮点型
7.0
>>> True + 5.0  # 布尔型转浮点型
6.0
>>> True + 2  # 布尔型转整型
3

Python math 模块、cmath 模块

Python 中数学运算常用的函数基本都在 math 模块、cmath 模块中。

Python math 模块提供了许多对浮点数的数学运算函数。

Python cmath 模块包含了一些用于复数运算的函数。

cmath 模块的函数跟 math 模块函数基本一致,区别是 cmath 模块运算的是复数,math 模块运算的是数学运算。

要使用 math 或 cmath 函数必须先导入:import math

查看 math 查看包中的内容:dir(math)

Python 字符串格式化

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

如下实例:

#!/usr/bin/python

print "My name is %s and weight is %d kg!" % ('Zara', 21) 

Python三引号

python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

 

;