在上一篇文章中,我们介绍了Python的一些控制结构,现在我们继续介绍剩下的 Python 控制结构。查看上一篇文章请点击:https://www.cnblogs.com/dustman/p/9972078.html

列表(List)

列表是一种用于保存一系列有序的集合,你可以想象你有一张购物清单,上面列出了需要购买的商品,在购物清单上你可能为每件物品都单独列一行。

你需要把它放在方括号里并让每一项都用逗号隔开,使用列表中的索引来访问列表中的特定项。

List = ["Hello","world","!"]print(List[0])print(List[1])print(List[2])

运行结果:

>>>

Hello

world

!

>>>

索引的第一项为 0 不是 1,这和我们生活中实际情况有点不一样。

下面代码输出是什么?

nums = [1,2,3,4,5]print(nums[1])

运行结果:

>>>

2

>>>

一个空列表是用一个空的方括号创建的。

empty_list =[]print(empty_list)

运行结果:

>>>[]>>>

大多数情况下,逗号不会出现在列表中的最后一项的后面。当然在那里防止一个逗号也是完全有效的语法。

通常列表符包括单种数据类型,但也可以包含几种不同的数据类型,列表里也能嵌套列表。

num = 3things= ["string",0,[1,2,num],3.14]print(things[1])print(things[2])print(things[2][1])

运行结果:

>>>0

[1, 2, 3]2

>>>

内嵌列表通常用于表示一个二位数组,因为 Python 缺少在其它语言中用于这种作用的多维数组。

下面代码是创建一个列表,并输出其第三项。

List = [20,21,22]print(List[2])

运算结果:

>>>

22

>>>

如果你试图读取或者写入一个不存在的列表元素,你会得到一个 indexError 错误。

一些类型比如字符串能够被索引访问,用索引方式字符串的行为就像字符串里包含一个字符的列表。

对于其他不能索引的类型,例如整数,对其索引访问对导致 TypeError。

str = "Hello world!"

print(str[3])、

运行结果:

>>>l>>>

判断下面代码中哪一行会导致错误?

num = [1,2,3,[4],5]print(num[0])print(num[3][0])print(num[5])

第四行代码出错,导致报 IndexError 错误。

列表运算符

列表里的列表元素可修改

num = [1,1,1,1]

num[2] = 14

print(num)

运行结果:

>>>[1, 1, 14, 1]>>>

加号 + 运算符可以把列表拼接在一起,星号 * 运算符可以将列表重复指定的次数。

num = [1,2,3]print(num * 2)print(num + [4,5,6])

运行结果:

>>>[1, 2, 3, 1, 2, 3]

[1, 2, 3, 4, 5, 6]>>>

列表和字符串在很多方面的行为都是相似的,字符串可以看作是不能更改的字符列表。

创建一个列表给其第二个元素重新赋值并打印整个列表。

num = [14,25,45]

num[1] = 22

print(num)

运行结果:

>>>[14, 22, 45]>>>

要检查一个元素是不是在列表里,可以使用 in 运算符。返回 True 表示该元素存在,否则返回 False。

words = ["I","Like","Python","!"]print("I" inwords)print("Python" inwords)print("Java" in words)

运行结果:

>>>True

True

False>>>

in 运算符还可以用于确定字符串是否是另一个字符串的子字符串。

要检查一个元素不在列表里使用 not 运算符。

nums = [1,2,3]print(not 4 innums)print(4 not innums)print(not 1 innums)print(1 not in nums)

运行结果:

>>>True

True

False

False>>>

检查'z'是否在列表中。

nums = ['a','b','z']if 'z' innums:print('Yes')

运行结果:

>>>Yes>>>

列表方法

要在列表尾部添加一个元素可以使用列表的 append 方法。

nums = [1,2,3]

nums.append(4)print(nums)

运行结果:

>>>[1, 2, 3, 4]>>>

列表后面加点再加 append 是因为它是列表类的一种方法,类方法将在后面的文章中详细讲解。

要获取列表的长度,使用 len 函数。

nums = [1,2,3]print(len(nums))

运行结果:

>>>

3

>>>

与 append 不同,len 是一个正常函数,而不是列表类的一个方法。

要想将对象插入列表还可以使用 insert 方法。不想 append 方法,它可以分配这个对象插入到哪个索引。

words = ["Python","fun"]

index= 1words.insert(index,"is")print(words)

运行结果:

>>>['Python', 'is', 'fun']>>>

index 方法被用在发现对象在哪个索引编号,返回从左到右首次发现的索引编号。如果列表里没有此对象做出 ValueError 错误。

words = ['a','b','c','d','e']print(words.index('c'))print(words.index('a'))print(words.index('z'))

运行结果:

>>>

20

ValueError:'z' is not inlist>>>

列表还有一些更有用的函数的方法:

max(list):返回列表里的最大值

min(list):返回列表里的最小值

list.count(obj):统计某个元素在列表中出现的次数

list.remove(obj):移除列表中某个值的第一个匹配项

list.reverse():反向列表中元素

list.pop():移除列表中的最后一个元素,并且返回该元素的值

list.sort([func]):对列表进行排序

添加 'z' 到列表的尾部并打印列表的长度。

List =[]

List.append('z')print(len(List))

运行结果:

>>>

1

>>>

range函数

range函数创建一个包含顺序数字的对象,下面代码创建一个从 0 到小于 10 的列表。

nums = list(range(10))print(nums)

运行结果:

>>>[0,1, 2, 3, 4, 5, 6, 7, 8, 9]>>>

上面代码调用了 list 方法强调类型转换。因为 range 函数本身会创建 Range 对象,如果要将其作为一个列表使用,则必须将其转换为列表。

range 函数接收一个参数时,它创建一个从 0 到小于参数的一个有序序列。

如果它接收两个参数,它创建一个从第一个参数开始到小于第二个参数的一个序列。

nums = list(range(1,4))print(nums)print(range(10) == range(0,10))

运行结果:

>>>[1, 2, 3]

True>>>

range 函数默认每次产生有序序列算法是对序列尾数加 1 操作,但是如果其有第三个参数,那么产生序列但加的数就是以第三个参数为准。

nums = list(range(1,24,2))print(nums)

运行结果:

>>>[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23]>>>

for 循环

遍历一个列表中所有元素可以通过一个 while 循环和一个计数器变量来完成。

words = ["hello","world","Python","Java"]

count=0

max_index= len(words) - 1

while count <=max_index:

word=words[count]print(word + "!")

count= count + 1

运行结果:

>>>hello!

world!

Python!

Java!>>>

上面的实例遍历列表中的所有项,使用索引编号访问它们,并添加感叹句打印每一个索引项。

上面的用 while 的循环来遍历列表有点太费笔墨了。

Python 提供了一个更简单的方法,也是最常用的办法就是 for 循环。

words = ["hello","world","Python","Java"]for word inwords:print(word + "!")

运行结果:

>>>hello!

world!

Python!

Java!>>>

Python 里的 for 循环像其他语言的 foreach 循环。

for 循环通常用于重复某些代码一定次数,下面是通过将 for 循环与 range 对象结合起来用。

for i in range(4):print("hello!")

运行结果:

>>>hello!

hello!

hello!

hello!>>>

在 for 循环中使用 range 对象时,不需要调用 list 函数。因为不需要索引,所以不需要将它转换成列表。

小项目:创建一个计算器

学习玩 Python 控制结构,我们用 Python 来创建一个简单的程序:计算器,下面是程序的大概结构,我们需要完善它。

程序运行时,先打印程序接受的输入,然后接受用户输入。

输入 add 计算两个数字相加

输入 subtract 计算两个数字相减

输入 multiply 计算两个数字相乘

输入 divide 计算两个数字相除

输入 quit 退出程序

whileTrue:print("Make a choice")print("Enter 'add' to add two nums")print("Enter 'substact' to substact two nums")print("Enter 'multiply' to multiply two nums")print("Enter 'quit' to quit two nums")

user_input= input(":")if user_input == "add":

...elif user_input == 'subtract':

...elif user_input == 'multiply':

...elif user_input == 'divide':

...elif user_input == 'quit':break

else:print("input error!")

程序用 if/elif 语句比较用户输入,无法匹配到选项时输出 "input error",用户输入 "quit" 时用 break 语句跳出循环。

程序的下部分是获取用户希望使用的数字。下面的代码为计算器的加法部分,其他部分也须编写类似的代码。

elif:

num1= float(input("Enter a num:"))

num2= float(input("Enter another num:"))

现在,当用户输入 "add" 程序提示用户输入两个数字并存储这两个输入到相应的变量里。

实际上如果用户在输入时输入非数字,此程序就会崩溃。我们将在后面的模块中讨论这个问题。

最后,程序计算用户输入的值并显示它。下面代码显示最终的完成部分。

elif user_input == "add":

num1= float(input("Enter a num:"))

num2= float(input("Enter another num:"))

result= str(num1 +num2)print("The answer is" + result)

现在我们有一个程序,提示用户输入,然后计算并打印用户输入的两个数之和。

必须为其他分支编写类似的代码(用于减法、乘法和除法)。输出行 print 语句可以放在 if 语句之外,避免代码的重复。

“为着后来的回忆,小心着急地描绘你现在的图画!”

python控制结构(二)_Python学习手册之控制结构(二)相关推荐

  1. python三种基本控制结构_Python学习手册之控制结构(一)

    在上一篇文章中,我们对 Python 进行了简单介绍和介绍了 Python 的基本语法,现在我们继续介绍 Python 控制结构. 查看上一篇文章请点击:https://www.cnblogs.com ...

  2. python控制流实例_python学习笔记系列----(二)控制流

    实际开始看这一章节的时候,觉得都不想看了,因为每种语言都会有控制流,感觉好像我不看就会了似的.快速预览的时候,发现了原来还包含了对函数定义的一些描述,重点讲了3种函数形参的定义方法,章节的最后讲述了P ...

  3. python学习手册教程_python学习手册:如何学习python学习教程?

    常听人说:选择不对,努力也白费!如今互联网行业火热,越来越多人加入到Python.JAVA.HTML5.大数据的领域来.关于学Python.JAVA.HTML5.大数据到底哪个编程语言好?小编不能帮你 ...

  4. python官方手册笔记_Python学习手册笔记

    Python学习手册(原书第4版)Mark Lutz 著 第一部分 使用入门 >> orthogonal >> 交互提示模式下编写代码 >> "%&quo ...

  5. 自学python困难吗_Python学习难不难?零基础好学吗?

    Python学习难不难?零基础好学吗?我想对于很多人来说,这都是非常关键的问题,也是很多人都在疑惑的问题.现在市场发展,行业的竞争压力是非常大的,转型的人也是非常多,对于不少人转型人才来说,Pytho ...

  6. python elseif用法_python学习笔记(一)

    0.前言 本文是根据廖雪峰python教程学习总结而来. 参考<python学习手册>,<流畅的python>以及python官方手册等网络资料 略过了与C和C++ 语言相同的 ...

  7. 有哪些免费自学python的网站_Python学习网站有哪些?Python基础教程网站推荐

    Python学习网站有哪些?Python基础教程网站推荐:菜鸟教程.PHP中文网.PHP中文网.W3C.Reddit.博学谷.python中文学习大本营.Python 3 Module of the ...

  8. python龟图_python学习turtle(龟图标状态)

    2019独角兽企业重金招聘Python工程师标准>>> 记录学习 turtle.hideturtle() turtle.ht(),隐藏龟图标. turtle.showturtle() ...

  9. 如何使用python装饰器_Python学习之如何使用装饰器 @decorator

    建议大家在看这篇文章之前还是点击上面这篇文章看一下,先了解一下什么是装饰器之后再看. 猿人学python之我的学习笔记分享:如何使用装饰器 @decorator 上面代码中使用装饰器的方法看起来有点复 ...

最新文章

  1. cvtvolor()关于HSV输出问题
  2. UTF8转换为GB编码gb2312转换为utf-8
  3. 计算机网络(谢希仁第八版)第三章:数据链路层
  4. Qt Creator配置项目
  5. 2018年最新的single-cell-RNA-seq analysis repositories
  6. 拼接Sql语句的写法
  7. SQlite数据库框架:LitePal
  8. inline-block的几个问题(还没解决)
  9. java list 转json 字符串_fastjson将java list转为json字符串
  10. python爬取妹子图(复制即可用)
  11. 局域网中文件共享方案介绍(Win10版)
  12. 【小程序】安卓端InnerAudioContext无法销毁
  13. RH8搭建静态网站——基于https协议的静态网站(综合练习)
  14. win8电脑怎么把计算机快捷方式,Win8怎么隐藏桌面快捷方式小箭头_Win8去掉快捷方式箭头-192路由网...
  15. 第七次网页前端培训笔记(内置对象 对象 JS事件 输出)
  16. 路由协议Ⅰ(RIP、OSPF、IS-IS、IGP、BGP等)
  17. 要让读者在不看任何数学公式的情况下理解傅里叶分析。
  18. 达梦数据库修改字段(列)(基表修改语句)
  19. 编程计算机公司加乘,实训一计算器编程的实现
  20. 工信部python证书多少钱_python requests SSL证书问题

热门文章

  1. android栈式存储,线性表数据结构解读(三)栈结构Stack
  2. c语言商店自动销售,c语言商店商品管理系统设计报告与源代码.doc
  3. 如何用python生成软件_python中的生成器函数是如何工作的?
  4. boost::uuid模块实现宽流存档测试序列化 uuid的测试程序
  5. boost::thread模块实现生产者消费者的测试程序
  6. boost::statechart::in_state_reaction相关的测试程序
  7. boost::mp11::mp_eval_or相关用法的测试程序
  8. boost::hana::fuse用法的测试程序
  9. boost::contract模块实现throw on failure的测试程序
  10. boost的chrono模块周期计数延迟的测试程序