在前面的文章中基本了解了当条件为真的操作,下面通过一个从1加到100的代码实例来了解条件为真的循环操作。
1、while:
x=1;
while x<=100:
print(x)
x+=1;
输出结果是:
1
2
3
4
5
.
.
.
96
97
98
99
100
以上结果中间省略了部分数字。
name="";
while not name:
name=input("请输入你的名字:")
print("hello,{}".format(name))
上面这段代码:当你把光标直接放在输入名字的地方时,直接按下回车键。你会看到提示信息再次出现,因为name还是空字符串,这相当于假。
请输入你的名字:
请输入你的名字:
请输入你的名字:
请输入你的名字:
如果你输入一个空格,程序将接受这个名字,因为包含一个空字符串不是空的,因此不会视为假。我们可以这样修复:只需要将
while not name改成while not name or name.isspace()或while not name.strip()即可。
while 循环语句非常灵活,可用于条件为真时反复执行代码块。但有时候我们需要一些特定的需求,如遍历序列等。这需要我们用到另一个循环语句:for
2、for:基本上我们会用for循环还迭代遍历可迭代对象,关于可迭代对象和迭代器我们在以后的文章中细说。现在,我们先以序列为实例。
Words=['this','is','an','ex','parrot'];
for word in Words:
print(word)
运行结果为:
this
is
an
ex
parrot
numbers=[0,1,2,3,4,5]
for number in numbers:
print(number)
运行结果:
0
1
2
3
4
5
迭代在Python中是一种常见的操作,因此,Python创建了一个内置函数:range()
print(list(range(0,10)))
print(list(range(0,10,2)))
print(list(range(10)))
print(list(range(10,2,-1)))
运行结果为:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 9, 8, 7, 6, 5, 4, 3]
range更像一个切片,包含起始位置,不包含结束位置,参数只能是整数,第三个参数是步长。如果只有一个参数,,则作为第二个参数。默认第一个参数为0,步长为1。
下面的程序打印1到5的数字。
for number in range(1,6):
print(number)
运行结果:
1
2
3
4
5
3、迭代字典:
要遍历字典所有的键和值,可以使用普通的for循环来做。
d={"name1":"东方不败","name2":"风清扬","name3":"令狐冲"};
for key in d:
print(key,d[key])
运行结果:
name1 东方不败
name2 风清扬
name3 令狐冲
另外,我们也可以使用items()来获取键值对。如:
for key,value in d.items():
print(key,value
运行结果为:
name1 东方不败
name2 风清扬
name3 令狐冲
4、并行迭代:有时候,我们打算同时迭代两个序列。
name=["东方不败","风清扬","左冷禅","冲虚老道"]
gongfu=["葵花宝典",'独孤九剑',"寒冰掌","太极剑"]
for i in range(len(name)):
print(name[i],gongfu[i])
运行结果:
东方不败 葵花宝典
风清扬 独孤九剑
左冷禅 寒冰掌
冲虚老道 太极剑
这样看起来代码不太整洁,我们有一个很有用的并行迭代公交内置函数:zip.。他将两个序列缝合起来,并返回一个由元组组成的序列。看代码:
name=["东方不败","风清扬","左冷禅","冲虚老道"]
gongfu=["葵花宝典",'独孤九剑',"寒冰掌","太极剑"]
for na,gf in zip(name,gongfu):
print(na,gf)
print(list(zip(name,gongfu)));
运行结果:
东方不败 葵花宝典
风清扬 独孤九剑
左冷禅 寒冰掌
冲虚老道 太极剑
[('东方不败', '葵花宝典'), ('风清扬', '独孤九剑'), ('左冷禅', '寒冰掌'), ('冲虚老道', '太极剑')]
函数zip可用于缝合任意数量的序列,需要指出的是,当序列长度不一样时,函数zio将在最短的序列用完后停止缝合。
5、迭代是自动获取索引。我们可以用内置函数:enumerate.
name=["东方不败","风清扬","左冷禅","冲虚老道","葵花宝典",'独孤九剑',"寒冰掌","太极剑"]
for i,string in enumerate(name):
print(i,string)
运行结果:
0 东方不败
1 风清扬
2 左冷禅
3 冲虚老道
4 葵花宝典
5 独孤九剑
6 寒冰掌
7 太极剑
这个函数能让我们获取索引-值对。其中索引时自动提供的。