第2章 常量与变量

第2章 常量与变量

1.1 常量

常量是内存中用于保存固定值的单元,在程序中常量的值不能发生改变。

Python并没有命名常量,也就是说不能像C语言那样给常量起一个名字。

Python常量包括数字、字符串、布尔值和空值等。

数字

  1. int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。

    32位计算机上,取值范围是-231到231-1;

    64位计算机上,取值范围是-263到263-1。

    长整数:取值范围很大的整数。长整数的取值范围仅与计算机支持的虚拟内存大小有关,超出整数范围的数就是长整数。

  2. bool (布尔), 如 True。

  3. float (浮点数), 如 1.23、3E-2。

    包含小数点的浮点型数字。浮点数是用机器上浮点数的本机双精度(64 bit)表示的。提供大约17位的精度和范围从-308到308的指数。和C语言里面的double类型相同。Python不支持32bit的单精度浮点度数。如果程序需要精确控制区间和数字精度,可以考虑使用问numpy扩展库。

  4. complex (复数), 如 1 + 2j、 1.1 + 2.2j。一个复数可以表示为一对数字(a,b)。

  5. 补充

    >>2.2 * 3
    6.6000000000000005
    

    小数以二进制形式表示时的有穷性导致的。这是实数的无限精度跟计算机的有限内存之间的矛盾。python中不建议直接将两个浮点数进行大小比较,或者做精确的计算。控制精度的方法可以使用round和decimal模块

字符串

字符串常量使用单引号(’)或双引号(")括起来。

  1. 转义符号

    当需要在字符串中使用特殊字符时,Python使用反斜杠(\)作为转义字符。

    转义字符具体描述
    \n换行
    \r回车
    \’
    \""
    \\
    \ (在行尾时)续行符
    \a响铃
    \b退格(Backspace)
    \000
    \v纵向制表符
    \t横向制表符
  2. 使用三引号(’’’ 或者 “”")

    可以使用三引号指定多行字符串。例如:

    ‘’'多行字符串的例子。

    第一行

    第二行

    可以在多行字符串里面使用’单引号’或"双引号"

    ‘’’

    也可以在行尾使用转义字符(\)实现多行字符串。例如:

    '多行字符串的例子。
    第一行。
    第二行。 ’

    代码续行:在遇到较长的语句时,可使用语句续行符号,将一条语句写在多行之中。Python有两种续行方式。

    一种是使用“\”符号。(放在结尾)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RAo5yTgu-1619244666637)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20210424113458665.png)]

    另一种特殊情况下的续行方式是在使用括号(包括圆括号()、方括号[]和大括号{}等)时,括号中的内容可分多行书写,括号中的空白和换行符都会被忽略。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wl5J3K3r-1619244666651)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20210424113432713.png)]

    1. Unicode字符串

      ASCII码不能表示世界上所有的语言,主要用于显示现代英语和其他西欧语言。

      Unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码,如果要在程序中处理中文字符串,则需要使用Unicode字符串。**只要在字符串前面加上u或U前缀即可。**例如:u"我是Unicode字符串。"

布尔值

Python包含两个布尔值,包含True(逻辑真)和False(逻辑假)。

布尔值区分大小写,通常用来判断条件是否成立。

空值

空值常量None。与0和空字符串(“”)不同,None表示什么都没有。None与任何其他的数据类型比较永远都返回False。

1.2 变量

变量是内存中命名的存储位置,与常量不同的是变量的值可以动态变化。
标识符是指Python语言中允许作为变量名或其他对象名称的有效符号。

标识符命名规则:

标识符名字的第1个字符必须是字母或下划线。
标识符名字的第1个字符后面可以由字母、下划线或数字(0~9)组成。
对大小写敏感。

**数据类型:**Python是一种动态类型语言,这种类型语言确定变量的数据类型是在给变量赋值的时候。因此在Python中使用变量时不用像C语言先声明数据类型,可直接使用。

a = “这是一个常量”
b = 2
c = True

**变量与地址的关系:**Python变量改变值时,改变的并不是这块空间中保存的值,而是改变了变量指向的空间,使变量指向另一空间。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bHqcNEM6-1619244666654)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20210424114923109.png)]

str1 = "这是一个变量"
print("变量str1的值是:" + str1)   #“+”为连接字符串
print("变量str1的地址是:%d" %(id(str1)))   #“%”标记转换说明符的开始
str2 = str1
print("变量str2的值是:" + str2) 
print("变量str2的地址是:%d" %(id(str2)))
str1 = "这是另一个变量"
print("变量str1的值是:" + str1)
print("变量str1的地址是:%d" %(id(str1)))   
print("变量str2的值是:" + str2)  
print("变量str2的地址是:%d" %(id(str2)))
#'''
变量str1的值是:这是一个变量
变量str1的地址是:2271523670704
变量str2的值是:这是一个变量
变量str2的地址是:2271523670704
变量str1的值是:这是另一个变量
变量str1的地址是:2271490074928
变量str2的值是:这是一个变量
变量str2的地址是:2271523670704
'''

1.3 常量与变量的数据类型转换

Python在定义变量时,不需要指定其数据类型,而是根据每次给变量所赋的值决定其数据类型。但也可以使用函数对常量和变量进行类型转换,以便对它们进行相应的操作。

  1. 转换为数字

    将字符串常量或变量转换为数字。

    (1)int(x, y) 。将数字或字符串转换为整数。

    参数x是待转换的数字或字符串;参数y为可选参数,为参数x的进制,默认为10进制。

    例题:

    int(3.14) #3

    int(100,2) #出错,y被赋值后函数只接收字符串

    int(‘23’,16) #35

    int(‘Pythontab’,8) #出错,Pythontab不是8进制数

    int(‘36’,2)#出错,36不是2进制数

    (2)long(x, y) 。将字符串转换为长整数。

    参数的含义与int()函数相同。用法不知道啊!

    (3)float()。将字符串或数字转换为浮点数。

    参数x是待转换的字符串或数字。

    float(20)
    #20.0
    

    (4)eval(str) 。计算字符串中的有效Python表达式,并返回结果。

    参数str是待计算的Python表达式字符串。

    eval('2+3')
    #5
    
  2. 转换为字符串

    (1)str(x) 。将数值转换为字符串。

    参数x是待转换的数值。

    (2)repr(obj) 。将对象转换为字符串显示。

    参数obj是待转换的对象。

    repr(5)
    #‘5’
    repr('hello')
    #"'hello'"
    

    (3)chr(整数) 。将一个整数转换为对应ASCII的字符。

    chr(8)
    #'\x08'
    

    (4)ord(字符) 。将一个字符转换为对应的ASCII。

    ord('c')
    #99
    

    (5)hex(整数) 。将一个整数转换为一个十六进制字符串。

    hex(32)
    #'0x20'
    

    (6)oct(整数) 。将一个整数转换为一个八进制字符串。

    oct(16)
    #'0o20'
    

    十六进制字符串以0x开头,八进制字符串以0o开头。

  3. 补充

    (1)Python保留字

    >>> import keyword 
    >>> keyword.kwlist
     ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] 
    

    (2)行与缩进

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pGxJoZ5Q-1619244666656)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20210424134344956.png)]

1.4 作业

  1. 用本节课的知识,编写程序,实现浮点数的精确计算。如已知x=3.5, y=2.7, 求 z = x y 的值。
from decimal import Decimal
x=Decimal('3.5')
y=Decimal('2.7')
print(x+y)
#6.2
#或者使用round模块,限制小数点后的位数。
  1. 课后思考:如何比较两个浮点数是否相等。
from decimal import Decimal
x=Decimal('3.5')
y=Decimal('2.7')
print(x==y)
#false
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值