Python学习手册之控制结构(二)

2018-11-20 03:26:20来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

在上一篇文章中,我们介绍了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线程池