1 变量和基本数据类型

简介: 1 变量和基本数据类型

引言:


Python是现在最热门,最实用的编程语言之一,也是一种解释型、面向对象、动态数据类型的高级程序设计语言(本次课程所有的教学都是基于Python3),本章以股票数据为例进行展示。


推荐学习资料:Python3的官方文档(以3.7版本为例):docs.python.org/zh-cn/3.7/廖雪峰老师的Python3教程:www.liaoxuefeng.com/wiki/101695…菜鸟教程:www.runoob.com/python3/pyt


课程镜像选择:


本模块都是基于CPU2核8G基础资源和基础镜像进行实验


1. Python中变量


  • 每个变量都是在内存中被创建
  • 在python中,变量赋值就是一个“打标签”的过程,不需要声明任何数据类型
  • 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建,一般利用“=”来进行赋值操作
  • 多个变量可以同时赋值


1.1 变量的定义规范


  • 变量只能由数字,字母,下划线任意组合。
  • 不能以数字开头。
  • 不能是python中的关键字。比如下面的关键字 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec']
  • 变量要有描述性。name = 'Roy'
  • 变量不能使用中文。
  • 变量不能过长。错误的例子:ssssssssssss = 'Financial'
  • 官方推荐使用: 1.驼峰体(SchoolName='Financial') 2.下划线(school_name='Financial')
#对变量进行单一赋值
a='Today\'s stock price is' #此处的'需要在其前加上\才能正确哦!
b='股票代码'
b=603227
c='股票价格'
d=4.84
e=True
print('a=%s'%a) # s 输出字符串 s
print('b=%d'%b) # d 输出整数
print('c=%s'%c) # s 输出字符串 
print('d=%.1f'%d) # .1f 输出浮点数,且保留一位小数
print(e)
a=Today's stock price is
b=603227
c=股票价格
d=4.8
True
#多变量赋值的另外一种形式 将一条股票代码信息一次性赋值
a, b, c ,d, e = '股票代码', 688698, '伟创电气', '今天的收盘价格是',4.8
print(a)
print(b)
print(c)
print(d)
print(e)
股票代码
688698
伟创电气
今天的收盘价格是
4.8
#多个变量进行 赋值股票代码
a=b=c=688679
print(a)
print(b)
print(c)
688679
688679
688679


1.2 格式符


格式符为真实值预留位置,并控制显示的格式。完整的模板如下: %[(name)][flags][width].[precision]typecode

其中typecode是类型码,用以控制显示的类型,如下: %s    字符串 (采用str()的显示) %r    字符串 (采用repr()的显示) %c    单个字符 %b    二进制整数 %d    十进制整数 %i    十进制整数 %o    八进制整数 %x    十六进制整数 %e    指数 (基底写为e) %E    指数 (基底写为E) %f    浮点数 %F    浮点数,与上相同 %g    指数(e) 或浮点数 (根据显示长度) %G    指数(E)或浮点数 (根据显示长度) (%%  表示字符“%”)

(name)为命名

flags可以有+,-,' '或0。+表示右对齐。-表示左对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充。

width表示显示宽度

precision表示小数点后精度

可以看到,当一个股票价格查询系统,常常需要向用户输出类似“股票代码XXXX今天的收盘价格是XXX”之类的字符串,而XXX的内容都是根据变量变化的,所以我们常会用到一种简便的格式化字符串的方式。 在Python中,我们用%实现格式化字符串

print('股票代码 %(b)d 今天的股票价格是 %(d).2f' % {'b':603227,'d':4.84})
股票代码 603227 今天的股票价格是 4.84


2. Python中变量和基本数据类型


  • 数值(Number)。数据类型用于存储数值,在python3中包括整型、浮点型、复数、布尔型等。
  • 字符串(String)。字符串是由数字、字母、下划线组成的一串字符。
  • 列表(List)。列表用[]标识,是python最常用的也是最通用的复合数据类型。
  • 元组(Tuple)。元组用()标识,类似于列表,其中最大的区别就是元组不能二次赋值,相当与只读列表。
  • 集合(Set)。集合可以使用{}和set()来标识,但是注意创建空集合必须用set()来表示,set()中的元素还可以进行集合运算。
  • 字典(Dictionary)。字典用{ }标识,由索引(key)和它对应的值value组成字典是无序对象集合。字典的形式非常的灵活,比如字典中的键可以对应多个值。


其中列表,元组和字典属于集合类型。 同时数值,字符串,元组属于不可变数据类型,列表,字典和集合属于可变数据类型。


2.1 数值及计算


#Python3 支持 int、float、bool、complex(复数)
a, b, c, d = 14, 9.14, True, 4+5j
print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
5+2 #加法运算
7
4-3 #减法运算
1
3*4 #乘法运算
12
4/3 #除法运算,输出浮点数(python2中取整)
1.3333333333333333
5//2 #除法运算,输出整数部分
2
6**3  #乘方运算
216
7%4  #取余预算
3


2.2 字符串


s = 'Financial data analysis'
print(s)
Financial data analysis
  • 字符串还可以进行切片操作,方便提取想要的字符
  • 规则是[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符
#比如取字符串的Financ
print(s[0:6])
Financ


2.3 列表


# 索引值以 0 为开始值,-1 为从末尾的开始位置
test_list = [ 'Financial',  9.14, 'analysis', 2015 ,2020 ]
print(test_list[0],test_list[-1]) #第一个元素和最后一个元素
print(test_list[1:])  #第二个元素到最后一个元素
print(test_list[:4]) #第一个到第四个元素
Financial 2020
[9.14, 'analysis', 2015, 2020]
['Financial', 9.14, 'analysis', 2015]


2.4 元组


元组与列表类似,不同之处在于元组的元素不能修改。 且元组使用小括号 ( ),列表使用方括号 [ ]。

test_tuple = ('Financial',  9.14, 'analysis', 2015 ,2020)
print(test_tuple[0],test_tuple[-1]) #第一个元素和最后一个元素
print(test_tuple[1:])  #第二个元素到最后一个元素
print(test_tuple[:3]) #第一个到第三个元素
Financial 2020
(9.14, 'analysis', 2015, 2020)
('Financial', 9.14, 'analysis')


2.5 集合


集合是一个无序的不重复元素序列。 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

test_set = {'Financial', 'analysis', 9.14, 'analysis', 'data',2015 ,2020}  #去掉重复的元素
print(test_set)
{2020, 'Financial', 9.14, 'data', 'analysis', 2015}
#集合运算
a = set('Financial')
b = set('analysis')
print(a) #去掉重复的字母
print(b) #去掉重复的i
print(a - b)     # a 和 b 的差集
print(a | b)     # a 和 b 的并集
print(a & b)     # a 和 b 的交集
print(a ^ b)     # a 和 b 中不同时存在的元素
{'c', 'n', 'a', 'l', 'F', 'i'}
{'n', 's', 'l', 'a', 'y', 'i'}
{'c', 'F'}
{'c', 'n', 's', 'l', 'a', 'F', 'y', 'i'}
{'l', 'n', 'i', 'a'}
{'c', 'y', 's', 'F'}


2.6 字典


#创建字典
dict = {}
dict = {
'688698': "伟创电气",
'300894': "火星人",
'003031': "中瓷电子"
}
print(dict)
{'688698': '伟创电气', '300894': '火星人', '003031': '中瓷电子'}
#遍历字典的元素
for item in dict:
    print(item)  #仅仅遍历到了key值
688698
300894
003031
for item in dict.items():
    print(item)  #遍历到了每个key和相对应的value
('688698', '伟创电气')
('300894', '火星人')
('003031', '中瓷电子')
for item in dict.values():
    print(item)  #遍历到每个元素的value
伟创电气
火星人
中瓷电子
#对字典中的元素按照value进行排序
dict={'a':914,'c':2015,'b':2020}
dict=sorted(dict.items(),key=lambda x:x[1]) #lambda是用于定义无名称的函数的关键字
print(dict)
[('a', 914), ('c', 2015), ('b', 2020)]
#对字典中的元素按照key进行排序
dict={'a':914,'c':2015,'b':2020}
dict=sorted(dict.items(),key=lambda x:x[0]) 
print(dict)
[('a', 914), ('b', 2020), ('c', 2015)]
#创建一个key对应多个值映射
dict1={'688698':['伟创电气',2.4,'股票'],
        '300894':['火星人',4.5],
        '003031':['中瓷电子',6.6]}
print(dict1)
{'688698': ['伟创电气', 2.4, '股票'], '300894': ['火星人', 4.5], '003031': ['中瓷电子', 6.6]}


Task


1.思考:List和 Tuple的区别?


  • 1.List中是可变的,tuple不可变 所以tuple没有insert, pop,append方法
  • 2.元组使用(),列表用[]
  • 3.List最常用,用途最广
  • 4.定义只有一个元素的tuple的时候,必须加逗号,否则不会被认为是tuple,而被识别为括号 比如,a = (1) 会被识别为数字1, (1,)这样才被识别为一个元组,只有一个元素,数字1
  • 5.元组可以转列表,但不可以转字典。不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
  • 6.tuple 放弃了对元素的增删(内存结构设计上变的更精简),换取的是性能上的提升:创建 tuple 比 list 要快,存储空间比 list 占用更小。所以就出现了“能用 tuple 的地方就不用 list”的说法。
  • 7.直接在同一个元组上更新是不可行的,但是可以通过拷贝现有的元组片段构造一个新的元组的方式解决。
  • 8.关系操作符 in 和 not in 也可以直接应用在元组上,这跟列表是一样的。
  • 9.关系操作符 in 和 not in 也可以直接应用在元组上,这跟列表是一样的。
  • 10.多线程并发的时候,tuple 是不需要加锁的,不用担心安全问题,编写也简单多了。


2. 在这6个数据类型中,不可变数据有哪些?可变数据有哪些?


答案


  1. 可变数据类型:list,dic,set
  2. 不可变数据类型:Number, String, Tuple


解释


1.python3的基本数据类型有六种


Number(int, float, bool, complex),String, List, Tuple, Dictionary, Set


2.什么是可变数据类型和不可变数据类型?


1、Python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象。而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象。

2、Python中的可变数据类型,允许变量的值发生变化,如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化。不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于相同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。


目录
相关文章
|
存储
基础数据类型和引用数据类型区别?
基础数据类型和引用数据类型区别?
|
3月前
|
存储 编译器 C语言
数据类型与变量
数据类型与变量
51 3
|
6月前
|
存储 安全 编译器
C++数据类型与变量:深入理解与应用
C++数据类型与变量:深入理解与应用
|
6月前
|
存储 Java
基础数据类型和引用数据类型的区别
基础数据类型和引用数据类型的区别
|
6月前
|
存储 Java Python
引用数据类型和基础数据类型的区别
引用数据类型和基础数据类型的区别
|
6月前
|
存储 算法 编译器
C++002-C++变量和数据类型1
C++002-C++变量和数据类型1
C++002-C++变量和数据类型1
|
6月前
05 # 基本类型
05 # 基本类型
39 0
|
6月前
|
存储 算法 编译器
C++003-C++变量和数据类型2
C++003-C++变量和数据类型2
|
存储 Java
基本数据类型和引用数据类型的区别
基本数据类型和引用数据类型的区别
94 0
|
存储 编译器 程序员
【C++Primer】第2章:变量和基本类型
【C++Primer】第2章:变量和基本类型
105 0
【C++Primer】第2章:变量和基本类型