Python序列、词典、for循环、while循环、跳过或终止、代码规范

2.2 计算机记性好

P42

3. 序列

序列是有顺序的数据集合。序列包含的一个数据被称为序列的一个元素(element)。序列可以包含一个或多个元素,也可以是完全没有任何元素的空序列。

  • 元祖(Tuple)

    一旦建立,元祖的各个元素不可再改变。元祖看起来就像一种特殊的表,有固定的数据。元祖也被翻译为“定值表”。

    example_tuple = (2, 1.3, "love", 5.6, 9, 12, False)	# 一个元祖
    type(example_tuple)	# 结果为tuple
    
  • 列表(List)

    建立后,列表的元素可以变更。

    example_list = [True, 5, "smile"]	# 一个列表
    type(example_list)	# 结果为'list'
    

同一个序列可以包含不同类型的元素

序列的元素不仅可以是基本类型的数据,还可以是另外一个序列。

nest_list = [1, [3, 4, 5]]	# 列表中嵌套另一个列表

由于元祖不能改变数据,使用很少会建立一个空的元祖。而列表可以增加和修改元素,所以Python程序中经常会建立空表:

empty_list = []

元祖一旦建立就不能改变,所以不能对元祖进行赋值操作

序列名[下限:上限:步长]

引用的多个元素将成为一个新的序列

example_tuple[:5]	# 从下标0到下标4,不包括下标5的元素
example_tuple[2:]	# 从下标2到最后一个元素
exampe_tuple[0:5:2]	# 下标为0, 2, 4的元素
sliced = example_tuple[2:0:-1]	# 从下标2到下标1
type(sliced)	# 范围引用的结果还是一个元祖

在范围引用的时候,如果写明上限,那么这个上限下标指向的元素将不包括在结果中。

引用序列尾部的元素:

example_tuple[-1]	# 序列最后一个元素
example_tuple[-3]	# 序列倒数第三个元素
example_tuple[1:-1]	# 序列的第二个到倒数第二个元素

example_tuple[1:-1]这个例子,如果是范围引用,那么上限元素将不包含在结果中。

序列可以有序地存储一组数据。

interest_tuple = (0.01, 0.02, 0.03, 0.035, 0.05)

4. 词典

词典不是以位置作为索引。词典允许用自定义的方式来建立数据的索引:

example_dict = {"tom":11, "sam":57, "lily":100}
type(example_dict)

词典包含多个元素,每个元素以逗号分隔。词典的元素包含两部分,键(Key)和值(Value)。键是数据的索引,值是数据本身。键和值一一对应。比如上面的例子,"tom"对应11,"sam"对应57,"lily"对应100。由于键值之间一一对应关系,所有词典的元素可以通过键来引用。

example_dit["tom"]

在词典中修改或增添一个元素的值:

example_dit["tom"] = 30
example_dit["lilei"] = 99
example_dit	# 结果为

构建一个新的空的词典:

example_dict = {}
example_dict	# 结果为{}

词典不具备序列那样的连续和有序性,所以适合存储结构松散的一组数据。比如首付比例和税率可以存在同一词典中:

rate = {"premium": 0.2, "tax": 0.15}

在大部分应用场景中,我们都使用字符串来作为词典的键。但其他类型的数据,如数字和布尔值,也可以作为词典的键值。

计算机能循环

1. for循环

for a in [3,4.4,"life"]:
    print(a)	# 依次打印列表中的各个元素

这个循环就是每次从列表[3, 4.4, “life”]中取出一个元素,然后将这个元素赋值给a,之后执行隶属于for的程序,也就是调用print()函数,把这个元素打印出来。可以看到for的一个基本用法是在in后面跟一个序列:

for 元素 in 序列:
    statement

序列中的元素个数决定了循环重复的次数。实例中有3个元素,所以print()会执行3次。也就是说,for循环的重复次数是确定的。for循环会依次从序列中取出元素,赋予给紧跟在for后面的变量,也就是上面实例中的a。因此,尽管执行的语句都相同,但由于数据发生了变化,所以相同的语句在三次执行后的效果也会发生变化。

从序列中取出元素,再赋予给一个变量并在隶属程序中使用,是for循环的一个便利之处。

但是有的时候,我们只是想简单地重复特定的次数,不想建立序列,那么我们可以使用Python提供的range()函数:

for i in range(5):
    print("Hello World!")	# 打印5次“Hello World!”

程序中的5向range()函数说明了需要重复的次数。因此,隶属于for的程序执行了5次。这里,for循环后面依然有一个变量i,它为每次循环起到了计数的功能:

for i in range(5):
    print(i, "Hello World!")	# 打印序号和"Hello World!"

range()提供的计数也是从0开始的,和表的下标一样。print()的新用法,就是在括号中说明多个变量,用逗号分开。函数print()会把它们都打印出来。

2. while循环

i = 0
while i < 10:
    print(i)
    i = i + 1	# 从0打印到9

while后面紧跟着一个条件。如果条件为真,则while会不停地循环隶属于它的语句。只有条件为假时,程序才会停止。在while的隶属程序中,我们不断改变参与条件判断的变量i,直到它变成10,以至于不满足条件而终止循环。这是while循环常见的做法。否则,如果while的条件始终为真,则会变成无限循环。

很多图形程序中就有无限循环,用于检查页面的状态等。

while True:
    print("Hello World!")

3. 跳过或终止

循环结构还提供了两个有用的语句,可以在循环结构内部使用,用于跳过或终止循环。

continue	# 跳过循环的这一次执行,进行下一次的循环操作
break		# 停止执行整个循环
for i in range(10):
    if i == 2
    	continue
    print(i)

当循环执行到i为2的时候,if条件成立,触发continue,不打印此时的i,程序直接进行下一次循环,把3赋值给i,继续执行for的隶属语句。

continue只是跳过某次循环,而break会中止整个循环。

for i in range(10):
    if i == 2:
        break
    print(i)

当循环执行到i=2的时候,if条件成立,触发break,整个循环停止。程序不再执行for循环内部的语句。

假设我可以全额贷款买房。房子的总价为50 万。为了吸引购房者,房贷前四年利率有折扣,分别1% 、2% 、3%、3.5% 。其余的年份里,房贷的年利率都是5% 。我逐年还款,每次最多偿还3 万元。那么,完全还清房款最少需要多少年?

i = 0
residual = 500000
interest_tuple = (0.01, 0.02, 0.03, 0.035)
repay = 30000

while residual > 0:
    i = i + 1
    print("第", i, "年还是要还钱")
    if i <= 4:
        interest = interest_tuple[i - 1]
    else:
        interest = 0.05
    residual = residual * (interest + 1) - repay

print("第", i+1, "年终于还完了")

附录B 代码规范

  1. 在下列运算符的前后各保留一个空格:

    = + - > == >= < <= and or not
    
  2. 下列运算符的前后不用保留空格:

    * / **
    
  3. 如果有多行赋值,那么将上下的赋值号=对齐,比如:

    num		= 1
    secNum	= 2
    
  4. 变量的所有字母小写,单词之间用下划线连接

    example_number = 10
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值