详解python中的数据类型和控制流


Posted in Python onAugust 08, 2019

上一篇文章中我们介绍了 python 语言的几个特点,并在最后留了一个问题,python 除了上下执行以外有没有其他的执行方式。

今天我们就来介绍 python 中的数据类型和控制流。

数据类型

python 中包含六个标准数据类型分别为:

Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)。

不同的数据类型往往对应不同的用途。这个很好理解。比如你可以用一个字符串用来储存一个人的名字。

name = "六小登登"

但是想你存一个人的信息,比如姓名,年龄,身高等。这时候你用字符串就不合适了。此时字典是合适的。

person = {
  name: "六小登登",
  age: 18,
  height: 180
}

字典适合存一个人的信息,那如何有很多人怎么办?此时列表就会起到作用。

people = [{name: "二狗"},{name: "狗蛋"}]

你看就是这么简单,什么容器装什么类型的水。彼此相互协作。

其中它们又可分为「可变类型」和「不可变类型」:

不可变类型 3 种:Number、String、Tuple。
可变类型 3 种:List、Set、Dictionary。

可变类型与不可变类型的区别就是一个值是可以改变的,一个是不可以改变的。有的人可能就会疑惑,不对呀登哥,我明明声明了一个变量 age = 18,然后在后面把它改成 age = 20是已经修改的呀,怎么会是不可变的呢。

其实在计算机的内容空间中,变量和值是分开的,而变量只是保存了一个值的引用而已,而引用指向值。

如果你修改的不可变量类型的值,它会重新创建一个新的值,然后把这个变量指向这个值。比如:

age = 18
id(age)
4478947024 //引用
age = 20
id(age)
4478947088 //引用

所以你会发现当你修改不可变类型的值后,它引用是不同的。而可变类型的引用却是相同的。

list = [1,2]
id(list)
4481387656 //此时的引用
list[0]=2
print(list)
[2, 2]
id(list)
4481387656 //修改后的引用,依然相同

控制流

上篇文章中我们说了,程序默认是「上下执行」的,但是如果遇到一些特殊的情况怎么应对呢?此时就要说到 python 中的控制流了。

控制流有三种方式:

  • 顺序执行:就是我们说的上下执行
  • 选择执行:就是条件判断,通过 if...else语句选择不同的代码块执行。
  • 循环执行:就是反复执行一段代码,通过 for,while。

条件判断

if age>19:
  print("111")
else:
  print("222")

上面代码中就会根据 age 的不同去执行不同的代码。当然如果你有多种条件,你可以使用elif。

if age < 8:
  print("儿童")
elif age < 18:
  print("少年")
else:
  print("青年")

除此之外你还可以进行「if嵌套」:

if age<8:
  if height>100:
    print("1")
  else: 
    print("2")
else:
  print("3")

循环语句

Python中的循环语句有 for 和 while 两种。

1.while语法:

while 判断条件:
  语句

例子:

a = 1
while a<10:
  print(a)

使用 while 时一定要注意判断条件,如果条件一直为真值,就会「无限循环」。

a = 1
while a:
 print(a)

此时程序就会一直执行下去,不会结束。此外我们还可以使用 while...else语句执行判断条件为 false时的情况。

a = 1
while a < 10:
  print(a)
  a += 1
else:
  print('大于10')

2.for语法:

for 循环它会遍历序列中的每一个项目

for i in range(1, 5):
  print(i)
else:
  print('结束')
 
list = [1,2,3,4]
for temp in list:
  print(temp)

break 和 continue

循环语句我们已经了解了,但是好像少点什么,比如我不想循环了怎么办?我想在满足一个条件之后把循环结束怎么办?紧紧只是掌握上面的知识显然我们无法做到。这时候就需要用到 break 和 continue了。

  • break语句:可以跳出 for 和 while 的循环体。后续代码将不会再执行。
  • continue语句:仅跳过当前循环,然后继续进行下一轮循环。
list = [1, 2, 3, 4]
for item in list:
  if item == 2:
    break
  print(item)

此时代码只会执行一次,当等于 2 时就会结束整个循环。

list = [1, 2, 3, 4]
for item in list:
  if item == 2:
    continue
  print(item)

你会发现此时代码只有在等于 2 时不执行,其他都会执行。

练习打印 99乘法表

i = 1
while i<10:
 j =1
 while j<=i:
  print("%s*%s=%s" % (j,i, i*j), end=" ")
  j+=1
 print("")
 i+=1

效果如下。

1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之正规地说一句话
Sep 28 Python
Python脚本实现代码行数统计代码分享
Mar 10 Python
python中的装饰器详解
Apr 13 Python
使用python3.5仿微软记事本notepad
Jun 15 Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
Oct 27 Python
django数据模型(Model)的字段类型解析
Dec 25 Python
详解Python的爬虫框架 Scrapy
Aug 03 Python
Python操作word文档插入图片和表格的实例演示
Oct 25 Python
python爬虫selenium和phantomJs使用方法解析
Aug 08 #Python
Python2和3字符编码的区别知识点整理
Aug 08 #Python
Python编程中类与类的关系详解
Aug 08 #Python
python os.fork() 循环输出方法
Aug 08 #Python
对python中的os.getpid()和os.fork()函数详解
Aug 08 #Python
在Python中os.fork()产生子进程的例子
Aug 08 #Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 #Python
You might like
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
php实现的通用图片处理类
2015/03/24 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
Python和C/C++交互的几种方法总结
2017/05/11 Python
详谈Python高阶函数与函数装饰器(推荐)
2017/09/30 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
python的Tqdm模块的使用
2018/01/10 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
python 实现的车牌识别项目
2021/01/25 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
工程招投标邀请书
2014/01/26 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
高效课堂教学反思
2016/02/24 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis