Python急速入门——(第二章:变量和数据类型)

1.二进制与字符编码


1.字符集的演变

  • 二进制0,1 -> ASCII -> GB2312 -> GBK -> GB18030。
  • 其他国家也依据ASCII码,编写了自己语言的字符集。
  • 随后出现的Unicode几乎包含了全世界的字符,由Unicode又衍生出了UTF-8(这是国际通用的字符集)。

2.Unicode是一张表,规定了哪个字符由哪个数字来表示

验证:(下面的代码跟着敲即可,先不用管为什么这样写)

# 二进制与字符编码
print(chr(0b100111001011000))	# 作用是根据所给二进制编码,打印对应的字符
print(ord('乘'))				# 作用是打印对应字符的二进制编码的十进制值

输出结果:

乘
20056

2.Python中的标识符和保留字


1.保留字:

有一些单词被赋予了特定的含义,这些单词不能作为任何对象的名字。

查看保留字:

import keyword
print(keyword.kwlist)

输出结果:

['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', '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.标识符:

给变量、函数、类、模型和其他对象起的名字,就叫标识符(标识符包括变量的名字)。

规矩:

  • 由字母、数字、下划线组成
  • 不能以数字开头
  • 不能是保留字
  • 严格区分大小写

3.变量的定义和使用


1.变量由三部分组成

1)标识:

  • 表示对象所存储的内存地址,使用内置函数id()来获取。

2)类型:

  • 表示对象的数据类型,使用内置函数type()来获取。

3)值:

  • 表示对象所存储的具体数据,使用print()可以将值进行打印输出。

例:

name = '玛利亚'
print(name)

print('标识', id(name))
print('类型', type(name))
print('值', name)

一个可能的输出结果:

玛利亚
标识 2143374109712
类型 <class 'str'>
值 玛利亚

2.内存分析图:

在这里插入图片描述

name里存放的是玛利亚那一块空间的id,就像C语言中的指针。


4.变量的多次赋值


一个变量可以多次赋值,但赋值后变量的标识会改变,之前标识指向的那块空间会被当做内存垃圾回收。

# 变量的多次赋值
a = 20
print('原标识', id(a))
a = 30
print(a)
print('赋值后的标识', id(a))
# id改变

输出结果:

原标识 140720842265992
30
赋值后的标识 140720842266312

5.Python中常见的数据类型


1.整数类型型 int

2.浮点数类型 float

3.布尔类型 bool(True,False)

4.字符串类型 str


5.1整数类型


1.英文为integer,简写为int,可以表示正数、负数和零

# 整型数据
a = 10
b = -98
c = 0

# 打印值
print(a)
print(b)
print(c)

# 打印类型
print(a, type(a))
print(b, type(b))
print(c, type(c))

输出结果:

10
-98
0
10 <class 'int'>
-98 <class 'int'>
0 <class 'int'>

2.整数的不同进制表示方式

1)十进制->默认的进制
2)二进制->以0b开头
3)八进制->以0o开头
4)十六进制->0x开头

# 不同进制的打印
print('十进制', 118)  # 默认打印十进制
print('二进制', 0b10011)  # 打印二进制开头用0b
print('八进制', 0o176)  # 打印八进制开头用0o
print('十六进制', 0xA2F8)  # 打印十六进制开头用0x

输出结果:

十进制 118
二进制 19
八进制 126
十六进制 41720

5.2浮点类型


浮点数由整数部分和小数部分组成,浮点数的存储有不精确性。

使用浮点数计算时,可能会出现小数位数不确定的情况:

# 浮点型
a = 3.14159

print(a, type(a))

# 浮点型的精度问题
n1 = 1.1
n2 = 2.2
n3 = 2.1

print(n1 + n2)  # 会有精度问题
print(n1 + n3)  # 并不是所有的浮点数相加都会出现精度问题

输出结果:

3.14159 <class 'float'>
3.3000000000000003
3.2

解决方案:

  • 导入模版deomal
# 解决精度问题
from decimal import Decimal

print(Decimal('1.1') + Decimal('2.2'))

输出结果:

3.3

5.3布尔类型


布尔类型是用来表示真假的值,True表示真,False表示假。

布尔值可以转化为整数:True->1,False->0

# 布尔类型
f1 = True
f2 = False

# 打印类型
print(f1, type(f1))
print(f2, type(f2))

# 布尔值可以转化成整数值进行计算
print(f1 + 1)  # 结果是2
print(f2 + 1)  # 结果是1

输出结果:

True <class 'bool'>
False <class 'bool'>
2
1

5.4字符串类型


字符串又被称为不可变的字符序列,可以使用单引号''双引号""三引号''' '''""" """来定义。

单引号和双引号定义的字符串必须在一行,三引号定义的字符串可以分布在连续的多行。

#使用单引号或双引号括起来
str1 = '人生苦短,我用Python'
str2 = "人生苦短,我用Python"

#三引号——可以换行写
str3 = '''人生苦短,
我用Python'''
str4 = """人生苦短,
我用Python"""

#打印类型
print(str1, type(str1))
print(str2, type(str2))
print(str3, type(str3))
print(str4, type(str4))

输出结果:

人生苦短,我用Python <class 'str'>
人生苦短,我用Python <class 'str'>
人生苦短,
我用Python <class 'str'>
人生苦短,
我用Python <class 'str'>

6.类型转换str()函数与int()函数


为什么需要数据类型转换?

为了将不同数据类型的数据拼接在一起。

数据类型转换函数:

函数名作用注意事项举例
str()将其他数据类型转成字符串也可以用引号转换str(123) 或 ‘123’
int()将其他数据类型转成整数文字类和小数类字符串无法转成整数;浮点数转成整数,抹零取整int(‘123’) 或 int(9.8)
float()将其他数据类型转成浮点数文字类无法转成浮点数;整数转成浮点数,末尾为.0float(‘9.9’) 或 float(9)

例:

name = '张三'
age = 20

print(type(name), type(age))#说明name和age的数据类型不同

#想把不同数据类型连接起来输出
#错误写法
#print('我叫'+name+',今年'+age+'岁')
#将str类型与int类型连接时报错,解决方案:类型转换

#正确写法
print('我叫'+name+',今年'+str(age)+'岁')

输出:

<class 'str'> <class 'int'>
我叫张三,今年20岁

1.str()函数

#str()函数
print('------str()将其他类型转化成str类型-------')
a = 10
b = 198.8
c = False
print(type(a), type(b), type(c))
print(str(a), str(b), str(c), type(str(a)), type(str(b)), type(str(c)))

输出:

------str()将其他类型转化成str类型-------
<class 'int'> <class 'float'> <class 'bool'>
10 198.8 False <class 'str'> <class 'str'> <class 'str'>

2.int()函数

#int()函数
print('------int()将其他类型转化int类型-------')
s1 = '125'
f1 = 98.7
s2 = '76.77'
ff = True
s3 = 'hello'
print(type(s1), type(f1), type(s2), type(ff), type(s3))
print(int(s1), type(int(s1)))    #将str转成int类型,字符串必须为数字串
print(int(f1), type(int(f1)))    #将float转成int类型,舍去小数部分,保留整数部分
#print(int(s2), type(int(s2)))    #报错,因为字符串小数串
print(int(ff), type(int(ff)))    #将bool转成int类型,True为1,False为0
#print(int(s3), type(int(s3)))    #报错,将str转换成int时,字符串必须是数字串(整数),非字符串不允许转换

输出:

------int()将其他类型转化int类型-------
<class 'str'> <class 'float'> <class 'str'> <class 'bool'> <class 'str'>
125 <class 'int'>
98 <class 'int'>
1 <class 'int'>

3.float()函数

#float()函数
print('------float()将其他类型转化float类型-------')
s1 = '125.25'
s2 = '76'
ff = True
s3 = 'hello'
i = 98
print(type(s1), type(s2), type(ff), type(s3), type(i))
print(float(s1), type(float(s1)))    #将str类型转换成float类型,字符串是数字串
print(float(s2), type(float(s2)))    #将str类型的76转化成float类型后,后面加.0
print(float(ff), type(float(ff)))    #True本质是1,转成float类型后,是1.0
#print(float(s3), type(float(s3)))    #报错,将str转换成float时,字符串必须是数字串
print(float(i), type(float(i)))      #将int类型转成float类型,后面加.0

输出:

------float()将其他类型转化float类型-------
<class 'str'> <class 'str'> <class 'bool'> <class 'str'> <class 'int'>
125.25 <class 'float'>
76.0 <class 'float'>
1.0 <class 'float'>
98.0 <class 'float'>

7.Python中的注释


1.有三种类型的注释

  • 单行注释:以#开头,直到换行结束。
  • 多行注释:并没有单独的多行注释标记,将一对三引号之间的代码称为多行注释。
  • 中文编码声明注释:(一般不写)
    在文件开头加上中文声明注释,用以指定源码文件的编码格式(Python的默认编码是UTF-8)
# coding:gbk
# 开发时间: 2023/4/20 15:28

# Python中的注释


# 单行注释

'''
嘿嘿,
我是多行注释
'''

"""
嘿嘿,
我是多行注释
"""

在文件的开头写上#coding:gbk,就把源码文件的编码格式改成了gbk#coding:UTF-8就把编码格式改成了UTF-8


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-指短琴长-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值