Python学习手册之控制结构(二)
2018-11-20 03:26:20来源:博客园 阅读 ()
在上一篇文章中,我们介绍了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 = 3
things = ["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" in words)
print("Python" in words)
print("Java" in words)
运行结果:
>>>
True
True
False
>>>
in 运算符还可以用于确定字符串是否是另一个字符串的子字符串。
要检查一个元素不在列表里使用 not 运算符。
nums = [1,2,3]
print(not 4 in nums)
print(4 not in nums)
print(not 1 in nums)
print(1 not in nums)
运行结果:
>>>
True
True
False
False
>>>
检查'z'是否在列表中。
nums = ['a','b','z']
if 'z' in nums:
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 = 1
words.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'))
运行结果:
>>>
2
0
ValueError: 'z' is not in list
>>>
列表还有一些更有用的函数的方法:
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 in words:
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 退出程序
while True:
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 语句之外,避免代码的重复。
“为着后来的回忆,小心着急地描绘你现在的图画!”
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:day13 内置函数
下一篇:自定义简单版本python线程池
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash